0
我想用结构名称的散列来初始化结构成员。constexpr构造函数初始化列表中的Constexpr函数
constexpr uint32_t myHash(const char* const data)
{ //Some code for hash
return myHash;
}
struct My_Struct{
constexpr Test() : ID(myHash("My_Struct"))
{
}
const uint32_t ID;
}
当我有:
constexpr My_Struct my_constexpr_struct;
然后散在编译时计算的成功。然而,当我在我的主要功能
My_Struct my_normal_struct;
然后它会调用的代码中
constexpr uint32_t myHash(const char* const data)
函数,而不是简单地用一个编译时间常数初始化结构体成员。
这显然会导致显着的性能损失,这是可以避免的。
有关如何让编译器在编译时执行此操作的任何想法或建议?我真的不想这样做:
constexpr uint32_t MY_STRUCT_ID = myHash("My_Struct");
struct My_Struct{
constexpr Test() : ID(MY_STRUCT_ID)
{
}
const uint32_t ID;
谢谢。
谢谢,这个(或这方面的一些变化)可以工作。 – Flip