我在不同的地方读到过,使用 C + + 11的新字符串文字,可以在编译时计算字符串的散列。然而,似乎没有人准备站出来说这是可能的或者如何实现。
I'm particularly interested use cases like this.
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;
}
}
注意: 编译时散列函数不必看起来和我写的一模一样。我尽力去猜测最终的解决方案会是什么样子,但是 meta_hash<"string"_meta>::value
也可能是一个可行的解决方案。