我有以下代碼:
namespace foo {
template<typename ...Types>
class Pi {
};
}
namespace std {
template<> //line offending gcc 8.3.1
template<typename ...Types>
struct hash<foo::Pi<Types...>> {
std::size_t operator()( const foo::Pi<Types...>& s ) const noexcept {
return 0;
}
};
}
int main() {
return 0;
}
使用 gcc 8.3.1 我收到錯誤太多引數模板引數串列,而使用 gcc 4.8.3 它可以作業。如果我洗掉它上面的注釋行,它是否正確?
uj5u.com熱心網友回復:
較新的 GCC 版本是正確的。
template<>此處的語法無效。它僅用于模板的顯式特化。
您在這里所做的是std::hash對foo::Pi. 如果您沒有template<>正確的部分專業化語法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/440819.html
上一篇:C 用默認值初始化陣列類
