está siguiendo el diseño posible ?:¿Cómo debo hacer esta especialización explícita?
template <typename T>
class Test{
public:
template <typename Z>
void doSomething();
//rest of things
private:
T obj;
//some things
};
Ahora bien, si era posible me gustaría hacer algunas especializaciones explícitas para doSomething de manera que al final tendría algunas versiones como a continuación:
void doSomething<int>(){
//do something
}
void doSomething<double>(){
//do something
}
...etc
que parece imposible No puedo encontrar ninguna sintaxis para hacer el trabajo, entonces pensé que tal vez el diseño debería ser el siguiente para que todos los argumentos de la plantilla se pasen a la clase de plantilla:
template <typename T,typename Z>
class Test{
public:
void doSomething();
//rest of things
private:
T obj;
//some things
};
Luego probé la especialización parcial que ni siquiera compilar:
template <typename T>
void Test<T,int>::doSomething(){
//do something
}
template <typename T>
void Test<T,double>::doSomething(){
//do something
}
...etc
me los siguientes errores de especialización explícita:
error # 1: Modelo de la lista de argumentos siguiente nombre de la plantilla de clase debe listar parámetros en el orden acostumbrado en la lista de parámetros de la plantilla.
error # 2: 'Container1': muy pocos argumentos de plantilla.
¿No se puede sobrecargar doSomething en una etiqueta y tener una visión general con una elipsis o una plantilla genérica? – Tomek
@ Tomek_No entiendes lo que quieres decir, por cierto, el foco está en las plantillas. – Pooria