¿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.