做完從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時,它不起作用,爲什麼?」 ...答案應該是顯而易見的 –