我有这个简单的函数模板,它应该将容器作为模板参数并打印内容:
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