Можно ли получить хеш-значения как константы времени компиляции?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Можно ли получить хеш-значения как константы времени компиляции?

Сообщение Anonymous »

Я подумал попробовать выбрать разные параметры в виде строк, хешируя их, но это не сработало:

Код: Выделить всё

#include 
#include 

inline void selectMenuOptionString(const std::string& str)
{
switch (std::hash()(str))
{
case std::hash()(std::string("Selection one")) : break;
// Expression must have a constant value
}
}

inline void selectMenuOptionString2(const std::string& str)
{
size_t selectionOneHash = std::hash()(std::string("Selection one"));

switch (std::hash()(str))
{
case selectionOneHash: // Expression must have a constant value
// The variable of selectionOneHash cannot be used as a constant
}

constexpr size_t hash = std::hash()(6); // Expression must have a constant value
}
Кажется, я не могу получить хеш-значения во время компиляции. Судя по тому, что я прочитал, каждый входной сигнал должен каждый раз давать один и тот же уникальный результат с очень низкой вероятностью коллизий. Учитывая эти свойства, нельзя ли вычислить хеш-значение во время компиляции? Я совсем не разбираюсь в хешировании, обычно использую unordered_map, но ради обучения мне захотелось попробовать что-то новое.

Подробнее здесь: https://stackoverflow.com/questions/488 ... -constants
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»