对来自 GCC 的以下错误代码进行了简短的搜索后,一些点击显示了针对此问题寻求帮助的问题,但没有发现任何具体的问题:
error: explicit specialization of non-template 'std::hash'
看起来 std::hash 确实是一个模板,所以错误并不清楚问题是什么。生成消息的示例代码如下。GCC 选项 -std=c++0x 可以很好地编译代码。问题是我有一个较旧的编译器在一台机器上不支持 C++11,所以澄清一下为什么它不编译会很有用。
另一种方法可能是使用继承而不是专门化,如果这是唯一的解决方案,那么也很高兴知道。
#include <functional>
struct test
{
int n;
};
namespace std
{
template<>
struct hash<test>
{
};
}