Есть ли способ определить тип переменной, переданной шаблону, и вызвать функцию на основе if 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;
}
};
Когда я пытаюсь использовать этот код, я получаю сообщение об ошибке invalid conversion from const char* to int
. Я подозреваю, что это связано с тем, что компилятор "расширяет" шаблон в отдельные функции, и когда я указал новый экземпляр структуры throw Jam<std::string>(&setme);
, он обнаружил оператор var* = 25
и отказался от компиляции.
Есть ли правильный способ сделать это? Может быть, с помощью магов? Спасибо.