【发布时间】:2014-10-08 02:52:33
【问题描述】:
在以下示例中:
template <class T, int n>
class MyContainer{
public:
T myArray[size];
int size;
MyContainer() : size(n){}
};
// full or partial specialization?
template <int n>
class MyContainer <double, n>{
public:
double myArray[n];
int size;
MyContainer() : size(n){}
double sum();
double average();
};
我刚开始学习完整和部分模板专业化,这让我有点困惑。一般来说,我会说这是一个完整的模板专业化,因为参数 T 被定义为 double 并且没有其他形式参数。但是,我不确定参数 n 在这里是否有什么不同?
【问题讨论】:
-
是的,在模板参数列表中的所有参数都被专门化/指定之前,它不是一个完整的专门化
-
如果是类型,则为全特化;如果是模板,则为部分特化。
-
那么,如果我删除 int n 那么这将是一个完整的模板专业化?
-
部分。提示,完全特化看起来像
template <>,即所有参数都已特化。
标签: c++ class templates template-specialization