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