【发布时间】:2015-05-06 22:45:22
【问题描述】:
我想有这样一个函数,它的返回类型将在函数内决定(取决于参数的值),但未能实现它。 (可能是模板专业化?)
// half-pseudo code
auto GetVar(int typeCode)
{
if(typeCode == 0)return int(0);
else if(typeCode == 1)return double(0);
else return std::string("string");
}
我想使用它而不指定类型为:
auto val = GetVar(42); // val's type is std::string
【问题讨论】:
-
函数只能有一种返回类型。 C++ 是静态类型的。也许你正在寻找
boost::variant。 -
@chris:模板函数、自动函数怎么样?
-
这看起来不像真正的代码,而是一个人为的例子。如果您可以向我们展示您想要达到的目标,也许我们可以提出更好的建议
-
@Ausser 模板为编译期间需要的每种类型实例化一次。
auto的类型是在编译时推导出来的,不是在运行时确定的。 -
也许这是对工厂模式的尝试?您可能返回的各种类型是否以某种方式相关?
标签: c++ templates c++11 metaprogramming