typename
テンプレート定義では、 typename
不明な識別子が型であることをコンパイラに示します。 テンプレート パラメーター リストでは、型パラメーターを指定するために使用されます。
構文
typename
identifier
;
解説
typename
テンプレート定義内の名前がテンプレート引数に依存する修飾名である場合は、キーワード (keyword)を使用する必要があります。修飾名が依存しない場合は省略可能です。 詳細については、「テンプレートと名前解決」を参照してください。
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
キーワードは、テンプレート パラメーター リストで class
の代わりに使用できます。 たとえば、次のステートメントは意味的に同等です。
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()
{
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示