Я реализовал хеш-функцию constexpr
времени компиляции, которая отлично работает (т.е. оценивается во время компиляции), если вызывается как
constexpr auto hash = CompileTimeHash( "aha" );
но мне нужно использовать его в реальном коде в качестве аргумента функции, как в
foo( CompileTimeHash( "aha" ) ); // foo is NOT constexpr
По определенной причине я не могу использовать длинную версию
constexpr auto hash = CompileTimeHash( "aha" );
foo( hash );
Компилятор (VC ++) не будет хэшировать время компиляции в коротком (первом) случае.
Есть ли способ добиться этого?
РЕДАКТИРОВАТЬ : пример, охватывающий 3 случая, теперь находится здесь:
https://godbolt.org/z/JGAyuE
Только gcc делает это во всех 3 случаях