Lambda函数生成"模糊函数调用"尽管缺乏模棱两可,但错误

时间:2014-07-03 09:00:06

标签: c++ lambda

所以我正在尝试处理一个程序,该程序可以接受一个返回双精度矢量的函数,或者只返回一个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

我应该回到函数指针吗?

非常感谢你的时间!

0 个答案:

没有答案