由于LLVM错误,Xcode不会编译

时间:2016-12-14 19:44:37

标签: c++ xcode

我试图在Xcode中编写C ++程序。 我的代码似乎没有任何问题,但是当我尝试编译它时,我收到以下错误:

Implicit instantiation of undefined template 'std::__1::hash<std::1::pair<unsigned long, unsigned long> >'

此错误显然位于LLVM的type_traits文件的第1008行。 我认为这是一些库错误,但是当我尝试编译一个简单的Hello World时,它运行正常。

有人知道我错过了什么吗?

1 个答案:

答案 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之前,它几乎无用。