Saf*_*der 3 c++ templates type-conversion
我将如何编写函数以根据输入返回不同的类型。我尝试使用模板,但是不确定我是否了解自己在做什么。如果输入是一个整数,我希望输出是一个字符串,反之亦然。
所以我尝试了这样的事情:
using namespace std;
template <class T>
T functionName(T s){
if(typeid(s).name() == 'i'){
return "int";
}
if(typeid(s).name() == 's'){
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
不知道如何实现我在这里寻找的东西。任何指导将不胜感激。
问题是必须在编译时确定唯一的返回类型;您不能有多个return语句返回不相关的类型。
您可以使用constexpr if(自C ++ 17起)。
如果值为
true,则丢弃statement-false(如果存在),否则,丢弃statement-true。废弃语句中的return语句不参与函数返回类型推导
例如
template <class T>
auto functionName(T s){
if constexpr (std::is_same_v<T, int>) {
return std::string("int");
} else {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
使用重载:
const char* foo(int) {
return "int";
}
int foo(const char*) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |