Есть ли способ определить тип переменной, переданной в шаблон, и вызвать функцию на основе того, является ли она int
или std::string
и т.д...?
Например
template <class T>
struct Jam
{
Jam(T *var)
{
if (typeid(var) == typeid(std::string*)
*var = "Hello!";
else if (typeid(var) == typeid(int*)
*var = 25;
}
};
Когда я пытаюсь использовать этот код, я получаю сообщение об ошибке недопустимое преобразование из const char* в int
. Я подозреваю, что это связано с тем, что компилятор " расширяет» шаблон на отдельные функции, и когда я указал новый экземпляр структуры throw Jam
, он обнаружил оператор var* = 25
и отказался компилироваться.
Есть ли правильный способ сделать это?Может быть, с защитой макросов?Спасибо.