我用模板写了一些类:
template <class T, class Allocator = ::std::allocator<T> >
class my_list;
Run Code Online (Sandbox Code Playgroud)
我应该为这个类编写:: std :: hash specializtion.我怎样才能做到这一点?简单的部分专业化:
namespace std {
template <class T, class Allocator>
class hash<my_list<T, Allocator> >{
public :
size_t operator()(const my_list<T, Allocator> &x ) const{
return ...;
}
};
}
Run Code Online (Sandbox Code Playgroud)
但我不能写简单的部分特化,因为它被C++ ISO禁止:
ISO/IEC 14882第三版2011-09-01
17.6.4.2.1命名空间std [namespace.std]
2如果C++程序声明了标准库类或类模板的任何成员类模板的显式或部分特化,则它的行为是未定义的.
我能做什么?