3

假设我有一个模板类

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

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

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

如何做到这一点?

4

2 回答 2

8

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

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

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

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

于 2011-01-13T23:26:18.987 回答
1
template < typename N >
struct Widget< template_thing<N> >
{
  ...
};
于 2011-01-13T23:25:49.750 回答