次の方法で共有


テンプレートの参照 [C++ 言語]

このトピックでは、宣言済みのテンプレートを使用する方法について説明します。

template-name < template-arg-list >

解説

template-arg-list は、以下のコンマ区切りのリストである必要があります。

expressiontype-name

式のすべての引数は定数式である必要があります。 以前に生成済みのテンプレートに厳密に一致するものがない場合、コンパイラはそのテンプレート クラスまたはテンプレート関数の新しいインスタンスを作成します (インスタンス化と呼ばれます)。 たとえば、「メンバー関数テンプレート」で定義されている MyStack クラスを参照するには、次のようにします。

MyStack< unsigned long, 5 > stack1;     
// Creates a stack of unsigned longs.
MyStack< DWORD, 5 >stack2;
// Uses code created above.
MyStack< char, 6 > stack3;
// Generates new code.
MyStack< MyClass, 6 > stack4;
// Generates stack of MyClass objects.

生成された関数テンプレートは、それぞれ固有の静的変数とメンバーを作成します。

すべてのテンプレート引数は、使用される時点でアクセス可能になっている必要があります。

上記の構文規則の例外は、::、.-> のいずれかの演算子の後ろの式でメンバー テンプレートの特殊化を明示する場合です。 このような場合は、これらの演算子の後ろに template キーワードを指定できます。 標準 C++ では、一部の状況で template キーワードが必須ですが、Visual C++ ではこのようなコンテキストでこのキーワードが常に省略可能となっており、その点が標準とは異なります。 これらの演算子に続く場合を除いて、特殊化で template キーワードを使用することはできません。

[ :: | -> | . ] template template-name < template-arg-list >

たとえば、以下は、X クラスのメンバーであるメンバー関数テンプレート f<T>(int) の int 特殊化を呼び出し、パラメーター 10 を渡す場合の指定です。

X::template f<int>(10);

参照

その他の技術情報

テンプレート