¿Cómo hacer que la instancia de un método de plantilla de clase sea igual a otro en C++?
Digamos que hay la siguiente plantilla de clase:
template<char type="">
class A
{
public:
// ...
void worker_method();
};
// Instanciación para el tipo 'c'.
template<>
void A<'c'>::worker_method()
{
// Hacer algo específico para el tipo 'c'.
}
Es bastante simple, pero digamos que me gustaría que la instanciación de worker_method
para A<'C'>
sea igual a A<'c'>
.
EDIT:
Necesito que la misma instanciación de worker_method
sea independiente del caso del type
. Por ejemplo, para ‘c’ y ‘C’ — las suyas propias, para ‘f’ y ‘F’ — las suyas propias, pero, digamos, para ‘e’ y ‘E’ — diferentes entre sí.
davy.ai
Para hacer que la instanciación del método
worker_method
paraA<'C'>
sea igual aA<'c'>
, podemos usar unstatic_assert
para comprobar si el tipo es ‘c’ o ‘C’. Luego, podemos usar declaraciones condicionales para ejecutar el código correspondiente. Aquí tienes un ejemplo:De esta manera, el método
worker_method
tendrá diferentes instanciaciones para cada tipo, pero las de ‘c’ y ‘C’ tendrán el mismo código.