-
Notifications
You must be signed in to change notification settings - Fork 240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
STRUCT_PACK_REFL regist multi template instantiation class failed in clang #738
Comments
抱歉,你说的2.6.0和2.8.0指的是? |
0.2.6和0.2.8? |
yalnatings2.6.0 和2.8.0版本 |
|
我们没有这个版本啊 |
FixedHash<20>这个结构体提供下我看看。如果g++可以clang++不可以,估计要么是编译器bug,要么是用到了低版本编译器不支持的特性。我等下修一下。 |
|
ok,我稍后会修复这个问题 |
今天能修吗,我急着用呢,能不能留个联系方式呀 |
你能确认下这段代码有没有问题吗:
|
clang10下我测试没问题。你是不是没有加 STRUCT_PACK_FRIEND_DECL这个宏? |
STRUCT_PACK_FRIEND_DECL这个宏我加过了,我在外面,不方便试了 |
那你先试下上面那段代码序列化会不会出问题吧 |
@poor-circle 你给得例子可以编译过,其实我得类型是 STRUCT_PACK_FRIEND_DECL(person); |
ylt/struct_pack/unpacker.hpp:912:31: warning: uninitialized variable in a constexpr function is a C++20 extension [-Wc++20-extensions] std::uint64_t sz; |
@poor-circle DISABLE_TYPE_INFO 这个参数有没有全局设置的方法呢,设置了整个工程生效,因为我很多类,很多地方都要设置,想要统一设置 |
我新增一个设置默认值的功能吧 |
@poor-circle 哥们,你太优秀了 |
Fixed by #741 |
namespace struct_pack {
//default global config
constexpr sp_config set_default(sp_config*){ return sp_config::DISABLE_TYPE_INFO; }
} 这样就可以了 |
template<size_t N> STRUCT_PACK_FRIEND_DECL(person); 这个例子里,把private改成public,然后去掉STRUCT_PACK_FRIEND_DECL(person);clang是可以编译过的,但是我再加上编译选项 |
考虑到反射系统会基于reflection重构,这部分代码暂时不会修复,等重构完成后再看看问题是否存在 |
FixedHash<20> 是我自定义的类型,data_是成员变量,在2.6.0版本下 STRUCT_PACK_REFL(FixedHash<20>, data_) 没问题
但是我升级到2.8.0版本后,编译报错
error: conflicting types for 'STRUCT_PACK_GET' STRUCT_PACK_REFL(FixedHash<20>, data_)
error: function 'STRUCT_PACK_GET<0>' with deduced return type cannot be used before it is defined
STRUCT_PACK_REFL(FixedHash<20>, data_)
编译器使用的是clang11
The text was updated successfully, but these errors were encountered: