最初の引数を 2 番目の引数の値に設定する関数を作成しようとしています。ただし、第2引数がコンテナクラスの場合、第1引数をコンテナの第1要素に設定したい。同様の問題に答えるこの質問を見つけましたが、私の場合はうまくいかないようです。
このコードをコンパイルすると、SetVar があいまいであるというエラーが表示されます。機能を動作させる方法はありますか?
これまでの私のコードは次のとおりです...
#include <iostream>
#include <vector>
template<typename T1,typename T2>
static void SetVar(T1& a, const T2 &b, typename T2::const_iterator= T2().begin()){
//Check to make sure b contains an element.
if(b.begin()!=b.end()) a=*b.begin();
}
template<typename T1,typename T2>
static void SetVar(T1& a, const T2 &b,...){
a=b;
}
int main(int argc, const char * argv[])
{
int x;
int y=5;
std::vector<int> z;
z.push_back(1);
z.push_back(3);
SetVar(x, y);
//Should print 5
std::cout<<x<<"\n";
SetVar(x, z);//<---SetVar is ambiguous
//Should print 1
std::cout<<x<<"\n";
return 0;
}