Realizar diferentes métodos en función del tipo de variable de plantilla.
¿Hay una manera de determinar el tipo de variable que se pasa a una plantilla y llamar a una función en función de si es unaint
ostd::string
etc ...?
Por ejemplo
template <class T>
struct Jam
{
Jam(T *var)
{
if (typeid(var) == typeid(std::string*)
*var = "Hello!";
else if (typeid(var) == typeid(int*)
*var = 25;
}
};
Cuando intento usar ese código, me sale un error.invalid conversion from const char* to int
. Sospecho que esto se debe a que el compilador "expande" la plantilla en funciones separadas y cuando especifiqué una nueva instancia de la estructurathrow Jam<std::string>(&setme);
detectó elvar* = 25
Declaración y se negó a compilar.
¿Hay una manera adecuada de hacer esto? Tal vez con macro guardias? Gracias.