所以我正在尝试处理一个程序,该程序可以接受一个返回双精度矢量的函数,或者只返回一个double。
不幸的是,当我尝试编译它(MSVC2010)时,我收到以下错误:
ambiguous call to overloaded function
我有什么事情显然是错的吗?我需要一种方法来区分这两者,并且我试图避免模糊的模板元编程。
#include <iostream>
#include <functional>
#include <vector>
std::vector<double> foo(std::function<std::vector<double>(unsigned int) > a){return a(10);}
double foo(std::function<double(unsigned int) > a){return a(11);}
int main(){
foo([](unsigned int)->double{return 12.0;});
return 0;
}
正如您所看到的,我的返回类型被明确声明为double,但它无法决定调用哪个版本的foo
。
我应该回到函数指针吗?
非常感谢你的时间!