无法专门化结构

发布于 2024-10-28 19:34:15 字数 196 浏览 1 评论 0原文

为什么这不起作用?

template <class T>
struct Low;

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

int main()
{
Low<1> a;

}

Why this doesn't work?

template <class T>
struct Low;

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

int main()
{
Low<1> a;

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱你是孤单的心事 2024-11-04 19:34:15

a; 将起作用 - 您的模板采用类型而不是积分参数。

Low<int> a; will work - Your template takes a type not an integral argument.

冷默言语 2024-11-04 19:34:15
Low<1> a;

您的类模板 Low 需要 TYPE,而不是 INTEGRAL VALUE!

如果您想使用这种方式,则必须将类模板定义为:

template <int N>
struct Low {};

这允许您编写 Low<1>, Low<2>, Low<400> 等。


如果您将 Low 定义为,

template <class T>
struct Low;

那么您必须在实例化它时提供类型。例如,LowLow 等。

因此请注意它们在每种情况下定义方式以及实例化方式的差异!

Low<1> a;

Your class template Low expects TYPE, not INTEGRAL VALUE!

If you want to use that way, you've to define your class template as:

template <int N>
struct Low {};

This allows you to write Low<1>, Low<2>, Low<400>, etc.


If you define Low as,

template <class T>
struct Low;

Then you've to provide a type when instantiating it. For example, Low<char>, Low<unsigned int>, etc.

So notice the difference how they're defined in each case, and how they are instantiated!

⒈起吃苦の倖褔 2024-11-04 19:34:15

Low<1>Low 之间存在差异。

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

There is a difference between Low<1> and Low<int>.

You will need to write a specialization for Low<1>, but that is not possible since the original template takes a type as the first parameter not a value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文