ベクトルと特定の型の要素を取り、ベクトル内の要素の位置を返す関数テンプレートがあります。これは、この関数テンプレートのコードです:
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
そして、このエラーは、関数テンプレート定義のベクトルの for を削除しても同じです:
error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'std::vector<_Ty,_Ax> &'
ただし、関数呼び出しを次のように行うと、
findElement(intVec, ele)
エラーは発生しません。
この動作の理由は何ですか?