具有多种类型的类的模板特化

时间:2016-06-04 23:48:03

标签: c++ templates

类声明在class.h文件中:

template <typename K, typename T>
class classx
{
  ...
  unsigned int func1(K key);
  ...

包括此class.hpp:

template <typename K, typename T>
unsigned int classx<K,T>::func1(K key)
{
    return 1;
}


//Func1 for <int, typename T>       ????

template <>
template <typename T>
unsigned int classx<int,T>::func1<int, T>(int key)  // ERROR!
{
    return 1;
}

结果:

错误:在'&lt;'标记

之前的预期初始值设定项

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

func1定义和template <>中删除第二组模板参数:

template <typename T>
unsigned int classx<int,T>::func1(int key)
{
    return 1;
}

编辑:

此外,you cannot partially specialize a single function of a template class。如果您希望这样做,您将需要对整个班级进行部分专业化。