函数模板和迭代器

时间:2015-08-26 10:41:33

标签: c++ templates function-templates type-deduction

我有这个简单的函数模板,它应该将容器作为模板参数并打印内容:

template <typename T>
void print(typename T::iterator &it1,typename T::iterator &it2)
{
  while (it1 != it2) {
    std::cout<<*it1<<" ";
    ++it1;
  }
}

我正在传递迭代器范围(通常是第一个和最终的迭代器)并且我将typename关键字添加到函数参数中,因为编译器需要知道我在谈论的是类型而不是静态成员。

但是当我将一个向量传递给函数时,编译器说它无法找到任何匹配的调用(最接近的匹配是函数本身) 怎么会这样?

vector<double> dvec;
vector<double>::iterator it_b=dvec.begin();
vector<double>::iterator it_e=dvec.end();
print_it2(it_b,it_e);

编译器说:

template argument deduction/substitution failed
                    could not deduce template parameter T

0 个答案:

没有答案