Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
typenameidentifier;
Comentarios
La palabra clave typename se debe usar si el nombre en una definición de plantilla es un nombre calificado que depende de un argumento de plantilla; es opcional si el nombre calificado no es dependiente. 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, salvo como argumento de plantilla de 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()
{
}
Vea también
Templates (Plantillas [C++])
Palabras clave