有没有办法确定传递给模板的变量的类型并根据它是否是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
语句并拒绝编译。
有没有合适的方法来做到这一点?也许有宏守卫?谢谢。