为什么这不起作用?
template <class T>
struct Low;
template <>
struct Low<int> {};//Here I'm trying to specialize for int
int main()
{
Low<1> a;
}
为什么这不起作用?
template <class T>
struct Low;
template <>
struct Low<int> {};//Here I'm trying to specialize for int
int main()
{
Low<1> a;
}
Low<int> a;
将起作用 - 您的模板采用类型而不是整体参数。
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>
等。
所以请注意它们在每种情况下是如何定义的,以及它们是如何实例化的!
Low<1>
和之间有区别Low<int>
。
您将需要为 编写专门Low<1>
化,但这是不可能的,因为原始模板将类型作为第一个参数而不是值。