¿Cuál es la diferencia entre typename y class al declarar parámetros de plantilla en C++?
¡Hola! Soy un desarrollador principiante de C++ y estoy tratando de entender las plantillas. Noté que al declarar parámetros de plantilla se pueden usar tanto la palabra clave `typename` como `class`. Por ejemplo:
```cpp
template
void foo(T t) { }
template
void bar(T t) { }
```
Ambas opciones se compilan y funcionan igual. Esto me confunde. ¿Por qué se necesitan dos palabras clave diferentes para el mismo propósito? ¿Hay alguna diferencia entre ellas? He oído que en algunos contextos, como al trabajar con tipos dependientes anidados, `typename` es obligatorio y `class` no funciona. ¿Es cierto? ¿O es solo una reliquia histórica? Por favor, explíquenme en detalle para que finalmente entienda cuándo usar cada una. ¡Los ejemplos de código son muy bienvenidos! Gracias de antemano.
<<>>
Respuesta breve: históricamente es así, pero hay matices importantes
En realidad, en el 99% de los casos al declarar un parámetro de plantilla (template parameter), las palabras clave type
No answers yet.
Inicia sesión para dejar una respuesta