部分的特殊化のテンプレート・パラメーターと引き数リスト

C++主テンプレートは、 テンプレート引き数リストを持っていません。このリストは、テンプレート・パラメーター・リストに含まれています。

テンプレート・パラメーターを主テンプレートでは指定しているが、部分的特殊化で使用していなければ、 それを部分的特殊化のテンプレート・パラメーター・リストから省略できます。 部分的特殊化の引き数リストの順序は、 主テンプレートの暗黙の引き数リストの順序と同じです。

部分的テンプレート・パラメーターのテンプレート引き数リストでは、 式が ID のみとなる場合を除いて、非型引き数を含む式を持つことはできません。 次の例では、コンパイラーは、最初の部分的特殊化を許可しませんが、2 番目のものは許可します。

template<int I, int J> class X { };
 
// Invalid partial specialization
template<int I> class X <I * 4, I + 3> { };
 
// Valid partial specialization
template <int I> class X <I, I> { }; 

「非型」テンプレート引き数の型は、部分的特殊化のテンプレート・パラメーターに依存できません。 コンパイラーは、次の部分的特殊化を許可しません。

template<class T, T i> class X { };
 
// Invalid partial specialization
template<class T> class X<T, 25> { };

部分的特殊化のテンプレート引き数リストは、主テンプレートによる暗黙のリストと同じにすることはできません。

部分的特殊化のテンプレート・パラメーター・リストに、デフォルト値を持つことができません。

関連参照

IBM Copyright 2003