Я читал в нескольких разных местах, что с использованием новых строковых литералов С++ 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;
}
}
Примечание: хэш-функция времени компиляции не должна выглядеть точно так, как я ее написал. Я сделал все возможное, чтобы угадать, как будет выглядеть окончательное решение, но meta_hash<"string"_meta>::value
также может быть жизнеспособным решением.