Freigeben über


typename

In Vorlagendefinitionen teilt typename dem Compiler mit, dass ein unbekannter Bezeichner ein Typ ist. In Vorlagenparameterlisten wird damit ein Typparameter angegeben.

Syntax

typename identifier;

Hinweise

Das Schlüsselwort typename muss verwendet werden, wenn ein Name in einer Vorlagendefinition ein qualifizierter Name ist, der von einem Vorlagenargument abhängig ist. Es ist optional, wenn der qualifizierte Name nicht abhängig ist. Weitere Informationen finden Sie unter Vorlagen und Namensauflösung.

Das Schlüsselwort typename kann von jedem Typ an einer beliebigen Stelle in der Vorlagendeklaration oder -definition verwendet werden. In der Basisklassenliste ist es nur als Vorlagenargument für eine Vorlagenbasisklasse zulässig.

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

Das Schlüsselwort typename kann in Vorlagenparameterlisten auch anstelle von class verwendet werden. Die folgenden Anweisungen sind z. B. semantisch äquivalent:

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

Beispiel

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

int main()
{
}

Siehe auch

Vorlagen
Schlüsselwörter