Quiero generar un hash para una clase basada en su tipo derivado en tiempo de compilación. Hoy genero que le gusta:ID de tipo C++ en tiempo de compilación
template<class Type>
class TypeBase
{
public:
static const unsigned s_kID;
};
template<class Type>
const unsigned TypeBase<Type>::s_kID = hash(typeid(Type));
pero esto genera (bastante innecesariamente) el tiempo de ejecución de código de inicialización (la función hash (..) hace un hash simple basado en std :: :: type_info nombre())
Ideas?
¿No existe el riesgo de que se produzcan colisiones hash o tal vez eso no sea un problema? –
@Andreas: Al crear los hash, también tengo un mapa con las entradas de hash. Por lo tanto, puedo verificar si hay colisiones. Además de eso, el número de clases es tal vez 20, así que creo que estoy a salvo con eso también. – Robert
¿No podría simplemente hacer algo como 'id = ++ someGlobalCounter'? (Me doy cuenta de que esto no es crítico para el rendimiento, solo curiosidad) –