1

为什么这不起作用?

template <class T>
struct Low;

template <>
struct Low<int> {};//Here I'm trying to specialize for int

int main()
{
Low<1> a;

}
4

3 回答 3

5

Low<int> a;将起作用 - 您的模板采用类型而不是整体参数。

于 2011-04-03T11:03:11.213 回答
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>等。

所以请注意它们在每种情况下是如何定义的,以及它们是如何实例化的!

于 2011-04-03T11:01:17.087 回答
3

Low<1>和之间有区别Low<int>

您将需要为 编写专门Low<1>化,但这是不可能的,因为原始模板将类型作为第一个参数而不是值。

于 2011-04-03T11:02:31.153 回答