c++ - 如何创建容器和类型都是参数的模板函数?

标签 c++ templates

这可能是一个微不足道的问题,但让我发疯。 我想定义一个函数 foo()这将适用于不同的容器,例如: vector<int> , vector<double> , set<int>set<double> .

我试过这样定义 foo:

template<typename CONT, typename T>
   int foo(CONT<T>){
      //evaluate x
      return (int) x ;
   }

这种定义是行不通的,但我不明白为什么。

我怎样才能实现类似的目标?

最佳答案

同时指定容器类模板及其实例化的方法是使用template模板参数:

template <template <typename...> class Cont, typename T>
int foo(Cont<T>) {
    ...
}

请注意,Cont 使用了可变数量的参数,否则它不会覆盖标准容器具有的未知数量的默认模板参数。

关于c++ - 如何创建容器和类型都是参数的模板函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12965082/

相关文章:

c++ - 在 2 个限制之间的 C/C++ 中生成随机素数

c++ - 递归函数的不同输出

c++ - 是否有理由在 header 中保留完全专业的模板?

C++ 变量模板。这是UB?

c++ - 名称后跟 '::' 必须是类或命名空间错误,即使 '::' 跟在类名之后

c++ - 使用 CppUnit 进行 "less than"测试

C++ 类前向声明​​的缺点?

c++ - 将 QMenu::addAction 直接连接到 lambda(函数签名不匹配)

templates - 如何在 SMARTY 中重定向到移动模板

比较 sizeof(type) == constant 时,C++ 模板特化不起作用