Выполнение различных методов на основе типа переменной шаблона

Есть ли способ определить тип переменной, переданной в шаблон, и вызвать функцию на основе того, является ли она 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(&setme);, он обнаружил оператор var* = 25и отказался компилироваться.

Есть ли правильный способ сделать это?Может быть, с защитой макросов?Спасибо.

10
задан user99545 13 June 2012 в 18:39
поделиться