typename

En las definiciones de plantilla, typename proporciona una sugerencia al compilador de que un identificador desconocido es un tipo. En las listas de parámetros de plantilla, se usa para especificar un parámetro de tipo.

Sintaxis

typename identifier;

Comentarios

La typename palabra clave debe usarse si un nombre de una definición de plantilla es un nombre completo que depende de un argumento de plantilla; es opcional si el nombre completo no depende. Para obtener más información, consulte Plantillas y resolución de nombres.

typename se puede usar en cualquier tipo y en cualquier lugar de una declaración o definición de plantilla. No se permite en la lista de clases base, a menos que sea un argumento de plantilla para una clase base de plantilla.

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

La palabra clave typename también se puede usar en lugar de class en las listas de parámetros de plantilla. Por ejemplo, las instrucciones siguientes son semánticamente equivalentes:

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

Ejemplo

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

int main()
{
}

Consulte también

Plantillas
Palabras clave