Sobes.tech
Junior — Middle

¿Puedes explicar qué es la palabra clave 'typename' en C++ y cómo se usa en plantillas?

sobes.tech AI

Respuesta de la IA

En C++, la palabra clave typename se usa en plantillas para indicar que el identificador que sigue es el nombre de un tipo, y no, por ejemplo, un valor o un miembro.

Esto es importante cuando el compilador no puede determinar de manera inequívoca qué representa exactamente la expresión, especialmente al trabajar con nombres dependientes — nombres que dependen de los parámetros de plantilla.

Ejemplo de uso de typename:

template <typename T>
void func() {
    typename T::value_type x; // indicamos que value_type es un tipo
}

Sin typename, el compilador puede dar un error, ya que no está seguro de que T::value_type sea un tipo.

También se usa typename al declarar plantillas:

template <typename T>
class MyClass {};

Aquí, typename y class son intercambiables, pero typename es preferido para los parámetros de tipos de plantilla.

En resumen, typename ayuda al compilador a interpretar correctamente los nombres de tipos en las plantillas.