typename
Indica al compilatore che un identificatore sconosciuto è un tipo.
typename identifier;
Note
Utilizzare questa parola chiave solo nelle definizioni di modello.
Questa parola chiave deve essere utilizzata se il nome dipende da nome completo da un argomento di modello; è facoltativa se il nome completo non è dipendente.Per ulteriori informazioni, vedere Modelli e risoluzione dei nomi.
typename può essere utilizzato da qualsiasi tipo in un punto qualsiasi di una dichiarazione o in una definizione di modello.Non è consentito nell'elenco delle classi di base, a meno che come argomento di modello in una classe base del modello.
template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType> // typename OK.
{};
typename la parola chiave può essere utilizzata al posto di classe negli elenchi di parametri di modello.Ad esempio, le istruzioni seguenti sono identici:
template<class T1, class T2>...
template<typename T1, typename T2>...
Esempio
// typename.cpp
template<class T> class X
{
typename T::Y m_y; // treat Y as a type
};
int main()
{
}