为什么这不起作用?
template <class T>
struct Low;
template <>
struct Low<int> {};//Here I'm trying to specialize for int
int main()
{
Low<1> a;
}
答案 0 :(得分:5)
Low<int> a;
将起作用 - 您的模板采用类型而不是整数参数。
答案 1 :(得分:4)
Low<1> a;
您的班级模板Low
需要TYPE,而不是INTEGRAL VALUE!
如果您想使用这种方式,您需要将类模板定义为:
template <int N>
struct Low {};
这允许您撰写Low<1>
,Low<2>
,Low<400>
等。
如果您将Low
定义为
template <class T>
struct Low;
然后在实例化时提供类型。例如,Low<char>
,Low<unsigned int>
等
请注意在每种情况下如何定义它们以及它们如何实例化的区别!
答案 2 :(得分:3)
Low<1>
和Low<int>
之间存在差异。
您需要为Low<1>
编写专门化,但这是不可能的,因为原始模板将类型作为第一个参数而不是值。