typename

Dans les définitions de modèle, typename fournit un indicateur au compilateur qu’un identificateur inconnu est un type. Dans les listes de paramètres de modèle, il est utilisé pour spécifier un paramètre de type.

Syntaxe

typename identifier;

Notes

La typename mot clé doit être utilisée si un nom dans une définition de modèle est un nom qualifié dépendant d’un argument de modèle ; il est facultatif si le nom qualifié n’est pas dépendant. Pour plus d’informations, consultez Modèles et résolution de noms.

typename peut être utilisé par n’importe quel type n’importe où dans une déclaration ou une définition de modèle. Elle n’est pas autorisée dans la liste des classes de base, sauf en tant qu’argument de modèle pour une classe de base de modèle.

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

Le typename mot clé peut également être utilisé à la place des listes de paramètres de class modèle. Par exemple, les instructions suivantes sont sémantiquement équivalentes :

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

Exemple

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

int main()
{
}

Voir aussi

Modèles
Mots clés