型名

未定義の識別子が型になるようにコンパイラに指示します。

typename identifier;

解説

テンプレート定義でのみこのキーワードを使用します。

このキーワードは名前がテンプレートの引数で修飾された名前を使用する必要があります。; 依存しない場合これは修飾名が依存しているオプションです。詳細についてはテンプレートおよび名前解決 を参照してください。

TypeName はテンプレート宣言または定義の型でどこでも使用できます。これは基本クラスのリストにテンプレートの基本クラスのテンプレート引数として使用できません。

template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType>  // typename OK.
{};

TypeName のキーワードはテンプレート パラメーター リストで クラス の代わりに使用できます。たとえば次のステートメントは同じです :

template<class T1, class T2>...
template<typename T1, typename T2>...

使用例

// typename.cpp
template<class T> class X
{
   typename T::Y m_y;   // treat Y as a type
};

int main()
{
}

参照

関連項目

C++ のキーワード

その他の技術情報

テンプレート