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建议的解决方法,专门针对整个类,因为它只有一个成员函数和一个数据成员.
您不能部分专门化单个成员函数,您必须为整个类执行此操作.
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)