我有一个函数模板,它接受一个向量和一个给定类型的元素,并返回该元素在向量中的位置。这是此函数模板的代码:
template<class T>
int findElement(const vector<T> &vec, const T &ele)
{
for(size_t i = 0; i < vec.size(); i++)
{
if(ele == vec[i])
return i;
}
return -1;
}
这是函数调用:
findElement<double>(intVec, ele);
但是当我调用该函数时出现此错误:
error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'const std::vector<_Ty,_Ax> &'
即使我删除const
了函数模板定义中的向量,这个错误也是一样的:
error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'std::vector<_Ty,_Ax> &'
但是,当我将函数调用为
findElement(intVec, ele)
我没有收到任何错误。
这种行为的原因是什么?