Clase con dos o más sobrecargas de plantilla
Supongamos que tenía una clase que quería declarar con dos “sobrecargas”, una que aceptaba 1 parámetro de plantilla y otra que aceptaba 2 como el pseudo código debajo:
template <typename i="">
class B {
public:
};
template <typename f,="" typename="" i="">
class B {
};
De manera tal que B
pueda ser instanciado con solo 1 o 2 parámetros:
B<int> hello;
B<int, int=""> hello2;
¿Cuál es la manera correcta de hacer esto?</int,>
davy.ai
Para declarar una clase con dos sobrecargas, una que acepta 1 parámetro de plantilla y otra que acepta 2, se puede utilizar la especialización de plantilla en C++. Aquí hay un ejemplo de código:
En el código anterior, primero definimos la plantilla de clase genérica
B
con dos versiones: una que acepta 1 parámetro de plantilla y otra que acepta 2. Luego, especializamos la plantilla de claseB
para ambos casos definiendo implementaciones separadas para cada uno.Para instanciar la clase
B
, se pueden utilizar uno o dos argumentos de plantilla:B<int> hello; // instanciar B con 1 parámetro de plantilla
</int,></f,>B<int, double=""> hello2; // instanciar B con 2 parámetros de plantilla