参照するテンプレート
このトピックでは以前に宣言されているテンプレートを使用する方法を示します。
template-name < 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 を指定できます。Visual C++ では標準のコードが状況によっては必要な場合 template のキーワードはこのコンテキストでは常に省略可能であること到着します。キーワードはテンプレートの特殊化でこれらの演算子に続く使用できません。
[ :: | ->| .] templatetemplate-name**<template-arg-list>**
たとえばクラス X のメンバーであることを指定しパラメーターを渡します 10 メンバー関数テンプレート f<T>(int) の int の特殊化を呼び出す。
X::template f<int>(10);