我有一个带有 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() {}
谁能告诉我这是否可行以及我在最后一行做错了什么?
编辑:我要感谢大家的投入。由于我还需要对某些 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() {}
};
关于c++ - 如何使用模板模板参数专门化模板类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558907/