typename
Teilt dem Compiler mit, dass ein unbekannter Bezeichner ein Typ ist.
typename identifier;
Hinweise
Verwenden Sie dieses Schlüsselwort nur in Vorlagendefinitionen.
Dieses Schlüsselwort muss verwendet werden, wenn der Name ein qualifizierter Name ist, der von einem Vorlagenargument abhängig ist; er ist optional, wenn der qualifizierte Name nicht abhängig ist. Weitere Informationen finden Sie unter Vorlagen und Namensauflösung.
Das typename-Schlüsselwort kann von jedem Typ an einer beliebigen Stelle in der Vorlagendeklaration oder -definition verwendet werden. Es ist in der Basisklassenliste nicht zulässig, außer als Vorlagenargument für eine Vorlagenbasisklasse.
template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType> // typename OK.
{};
Das typename-Schlüsselwort kann in Vorlagenparameterlisten auch anstelle von class verwendet werden. Die folgenden Anweisungen sind beispielsweise identisch:
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()
{
}