小编use*_*730的帖子

std :: hash模板部分特化

我用模板写了一些类:

 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++程序声明了标准库类或类模板的任何成员类模板的显式或部分特化,则它的行为是未定义的.

我能做什么?

c++ templates std language-lawyer c++11

9
推荐指数
1
解决办法
1176
查看次数

标签 统计

c++ ×1

c++11 ×1

language-lawyer ×1

std ×1

templates ×1