如何使用模板模板参数专门化模板类的成员

Gab*_*ber 6 c++ templates template-specialization

我有一个带有int和模板模板参数的模板类.现在我想专门化一个成员函数:

template <int I> class Default{};
template <int N = 0, template<int> class T = Default> struct Class
{
    void member();
};

// member definition
template <int N, template<int> class T> inline void Class<N, T>::member() {}

// partial specialisation, yields compiler error
template <template<int> class T> inline void Class<1, T>::member() {}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我这是否可能以及我在最后一行做错了什么?

编辑:我要感谢大家的意见.由于我还需要对某些T进行专门化,因此我选择了Nawaz建议的解决方法,专门针对整个类,因为它只有一个成员函数和一个数据成员.

Pra*_*ian 6

您不能部分专门化单个成员函数,您必须为整个类执行此操作.

template <int I> class Default{};
template <int N = 0, template<int> class T = Default> struct Class
{
    void member();
};

// member definition
template <int N, template<int> class T> inline void Class<N, T>::member() {}

// partial specialization
template <template<int> class T> struct Class<1, T>
{
  void member() {}
};
Run Code Online (Sandbox Code Playgroud)