我正在使用模板函数,并需要一种测试变量是否为std::string类型的方法,以便将其与整数输入等区分开来,因为我在字符串上需要进行不同于整数的操作。 我尝试使用typeid来实现这一点,但遇到了困难。
我正在使用模板函数,并需要一种测试变量是否为std::string类型的方法,以便将其与整数输入等区分开来,因为我在字符串上需要进行不同于整数的操作。 我尝试使用typeid来实现这一点,但遇到了困难。
只有重载:
template<typename T>
void myFunc(T t) {/* */}
void myFunc(std::string s) {/* */}
如果不同的类型需要发生不同的事情,那么它们应该在不同的函数中完成。这样代码就不会被类型检查混杂所干扰。你应该优先让编译器担心重载与类型的匹配。
如果你处于模板上下文中,并且需要像 myFunc<T>(t)
这样调用你的函数,那么你可以进行完全特化:
template<>
void myFunc<std::string>(std::string s) {/* */}