我在几个不同的地方读过,使用C++ 11的新字符串文字,可以在编译时计算字符串的哈希值.然而,似乎没有人准备出来说它将是可能的或如何完成.
我特别感兴趣的是这样的用例.
void foo( const std::string& value )
{
switch( std::hash(value) )
{
case "one"_hash: one(); break;
case "two"_hash: two(); break;
/*many more cases*/
default: other(); break;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:编译时哈希函数不必像我编写的那样完全.我尽力猜测最终解决方案的样子,但meta_hash<"string"_meta>::value也可能是一个可行的解决方案.