我有一个类似于以下的模板化函数:
template<class T>
T foo( string sReturnType )
{
//pseudo code
if( sReturnType = "string" )
{
lookup data in string table
return a string
}
else
{
look up in number table
return number answer
}
}
用法类似于:foo("string")
在函数内部,需要有从字符串表或数字表中提取并返回该值的逻辑。我试过这个,但没能像我预期的那样让它工作。看起来它应该非常简单易行。这是模板的有效方法和使用吗?我查看了模板特化,但最终还是编写了两个单独的代码库,为什么不使用重载函数呢?有没有更好的办法?
最佳答案
否 - 无法声明具有不同返回类型的函数(模板函数可能具有不同的返回类型,但这些取决于模板参数)。
您可以返回一个封装所有可能返回类型的类型(如 boost::any 或 boost::variant)。
关于c++ - C++中模板内部的返回类型可以控制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348306/