我正在尝试编写一个函数,将第一个参数设置为第二个参数的值。但是,当第二个参数是容器类时,我希望它将第一个参数设置为容器的第一个元素。我发现这个问题回答了类似的问题,但是,我似乎无法让它在我的情况下工作。
当我编译这段代码时,我得到一个错误,说 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;
}