我试图在Xcode中编写C ++程序。 我的代码似乎没有任何问题,但是当我尝试编译它时,我收到以下错误:
Implicit instantiation of undefined template 'std::__1::hash<std::1::pair<unsigned long, unsigned long> >'
此错误显然位于LLVM的type_traits
文件的第1008行。
我认为这是一些库错误,但是当我尝试编译一个简单的Hello World时,它运行正常。
有人知道我错过了什么吗?
答案 0 :(得分:2)
std::hash
(或std::pair
)没有std::tuple
专门化。它是c ++标准中最荒谬的功能之一,它使图书馆瘫痪。
这可能是因为您使用std::pair
作为unordered_map
中的密钥。
您需要做的是包括提升:<boost/functional/hash.hpp>
并声明boost::hash<std::pair<X, Y>>
作为地图的第3个模板参数。
在修复std::hash
之前,它几乎无用。