Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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()
{
}