C++ 使用模板进行参数转换时出错

C++ 使用模板进行参数转换时出错,c++,templates,C++,Templates,我有一个函数模板,它接受一个向量和一个给定类型的元素,并返回元素在向量中的位置。这是此函数模板的代码: 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; }

我有一个函数模板,它接受一个向量和一个给定类型的元素,并返回元素在向量中的位置。这是此函数模板的代码:

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(intVec, ele)
我没有得到任何错误


这种行为的原因是什么?

似乎编译器无法将
向量
转换为
向量
。从逻辑上讲,
intVec
是int的向量,不是吗?你说编译器,你想要双倍的向量。
您无法将
向量
转换为
向量
,因为
向量
没有后续的
转换构造函数
,这很好。

似乎编译器无法将
向量
转换为
向量
。从逻辑上讲,
intVec
是int的向量,不是吗?你说编译器,你想要双倍的向量。
无法将
向量
转换为
向量
,因为
向量
没有以下
转换构造函数
,很好。

什么类型的
intVec
ele
?intVec和ele都是int类型。但我希望编译器在实例化模板函数时将它们视为双重类型。@RakeshK为什么?将它们视为双精度不会改变
findElement
的功能。
intVec
ele
的类型是什么?intVec和ele都是int类型。但我希望编译器在实例化模板函数时将它们视为双精度。@RakeshK为什么?将他们视为替身不会改变
findElement
的作用。
error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'const std::vector<_Ty,_Ax> &'
error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'std::vector<_Ty,_Ax> &'
findElement(intVec, ele)