Выполнять различные методы в зависимости от типа переменной шаблона
Есть ли способ определить тип переменной, передаваемой в шаблон, и вызвать функцию на основе того, является ли она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
Заявление и отказались составить.
Есть ли правильный способ сделать это? Может быть с макро охранниками? Благодарю.