c++ - C++中模板内部的返回类型可以控制吗?

标签 c++ templates

我有一个类似于以下的模板化函数:

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/

相关文章:

java - Android 轻量级 HTML 模板引擎

javascript - 在 Meteor 的 onRendered 中获取模板变量

c++ - boost::circular_buffer 相当于文件?

c++ - SFINAE 和 std::numeric_limits

c++ - 将#include 包装在命名空间 block 中是个好主意吗?

c++ - 困惑,为什么没有在此范围内声明 c++ 全局变量

python - 如何从 index.html 中的模板返回 appengine 数据存储对象的键?

c++ - 使用默认参数为模板函数起别名

c++ - unique_ptr push_back 和 std::list

c++ - 我可以在 native C++ 服务中使用 ATL 吗?