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 に答える