模板的总类专门化

时间:2011-01-13 23:20:01

标签: c++ templates special-characters template-specialization

假设我有一个模板类

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

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

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

如何做到这一点?

2 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:1)

template < typename N >
struct Widget< template_thing<N> >
{
  ...
};