Executar métodos diferentes com base no tipo de variável de modelo
Existe uma maneira de determinar o tipo de variável passado para um modelo e chamar uma função com base em se é umint
oustd::string
etc ...?
Por exemplo
template <class T>
struct Jam
{
Jam(T *var)
{
if (typeid(var) == typeid(std::string*)
*var = "Hello!";
else if (typeid(var) == typeid(int*)
*var = 25;
}
};
Quando tento usar esse código, recebo um erroinvalid conversion from const char* to int
. Eu suspeito que isso é porque o compilador "expande" o modelo em funções separadas e quando eu especifiquei uma nova instância da estruturathrow Jam<std::string>(&setme);
detectou ovar* = 25
declaração e se recusou a compilar.
Existe uma maneira correta de fazer isso? Talvez com guardas macro? Obrigado.