模板的总类专业化

发布于 2024-10-11 15:03:41 字数 397 浏览 8 评论 0原文

可以说我有一个模板类

template <typename T>
struct Widget
{
   //generalized implementation
}

但我想完全专业化.. 对于接受参数的模板?

template <>
struct Widget< TemplateThatAcceptsParameter<N> >
{
       //implementation for Widget for TemplateThatAcceptsParameterN 
       //which takes parameter N
}

如何做到这一点?

lets say i have a templated class

template <typename T>
struct Widget
{
   //generalized implementation
}

but i wanted to totally specialize..
for a template that accepted a parameter?

template <>
struct Widget< TemplateThatAcceptsParameter<N> >
{
       //implementation for Widget for TemplateThatAcceptsParameterN 
       //which takes parameter N
}

How does one go about doing this?

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

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

发布评论

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

评论(2

等待我真够勒 2024-10-18 15:03:41

这称为部分特化,可以这样编码:

template <typename T>
struct Widget
{
   //generalized implementation
};

template <typename N>
struct Widget< TemplateThatAcceptsParameter<N> >
{
   //implementation for Widget for TemplateThatAcceptsParameterN 
   //which takes parameter N
};

它的工作方式就像常规特化,但有一个额外的模板参数。

This is called a partial specialization and can be coded like this:

template <typename T>
struct Widget
{
   //generalized implementation
};

template <typename N>
struct Widget< TemplateThatAcceptsParameter<N> >
{
   //implementation for Widget for TemplateThatAcceptsParameterN 
   //which takes parameter N
};

It works just like a regular specialization, but has an extra template argument.

如若梦似彩虹 2024-10-18 15:03:41
template < typename N >
struct Widget< template_thing<N> >
{
  ...
};
template < typename N >
struct Widget< template_thing<N> >
{
  ...
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文