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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta