我想用结构名称的哈希初始化一个结构成员。
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;
谢谢。