Partager via


typename

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

Syntaxe

typename identifier;

Notes

Le mot clé typename doit être utilisé si un nom dans une définition de modèle est un nom qualifié dépendant dans un argument de modèle. Cela 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 tout type et n’importe où dans une déclaration ou définition de modèle. Il n’est pas autorisé 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 mot clé typename peut également être utilisé à la place de class dans les listes de paramètres du modèle. Par exemple, les instructions suivantes sont équivalentes sur le plan sémantique :

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