做完从GCC下面的错误代码的简要搜索,命中数显示的问题,要求对这一问题的帮助,但没有什么具体的轮番上涨:模板专业化C++ 98
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>
{
};
}
你在说什么“旧编译器”?旧版本的GCC?或者一些完全不同的编译器 – AnT
你的问题基本上是“当我使用C++ 11的时候,当我不能使用C++ 11时,它不起作用,为什么?” ...答案应该是显而易见的 –