Идентификатор типа C ++ во время компиляции - PullRequest
9 голосов
/ 22 августа 2011

Я хочу создать хеш для класса на основе его производного типа во время компиляции. Сегодня я генерирую это как:

template<class Type>
class TypeBase 
{
public:
    static const unsigned s_kID;
};

template<class Type>
const unsigned TypeBase<Type>::s_kID = hash(typeid(Type));

но это генерирует (довольно излишне) код инициализации во время выполнения (функция hash (..) выполняет простой хеш на основе std :: type_info :: name ())

Идеи?

1 Ответ

3 голосов
/ 22 августа 2011

Учитывая все остальное, что происходит при запуске процесса, и насколько простой и элегантный ваш существующий код, если вы не хэшируете миллиарды типов, я бы оставил ваше существующее решение в точности таким, как оно есть.

...