编译时的 C++ 类型标识

标签 c++ hash compile-time typeid

我想在编译时根据派生类型为类生成哈希。今天我生成它如下:

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() 进行简单的散列)

想法?

最佳答案

考虑到进程启动时发生的所有其他事情,以及您现有代码的简单和优雅,假设您不对大量类型进行哈希处理,我将保留您现有的解决方案。

关于编译时的 C++ 类型标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148877/

相关文章:

c++ - 我可以使用 std::vector::swap 修改共享 vector 吗?

c++ - 使用 C++11 在编译时以编程方式查找字节序

c++ - 使用 CMake 2.8.1 为 Visual Studio 2005 添加编译器标志

c++ - 带构造函数和析构函数的链表问题

algorithm - 确定 Pearson 哈希的完美哈希查找表

security - 使用密码哈希来加密私钥

C# 三元表达式类型转换

c++ - 编译时排除部分函数模板

c++ - 如何通过成员函数指针调用成员函数?

algorithm - 一个minhash算法需要多少个哈希函数