相关疑难解决方法(0)

使用+解决lambda的函数指针和std :: function上的模糊重载

在下面的代码中,第一次调用foo是不明确的,因此无法编译.

第二个,+在lambda之前添加,解析为函数指针重载.

#include <functional>

void foo(std::function<void()> f) { f(); }
void foo(void (*f)()) { f(); }

int main ()
{
    foo(  [](){} ); // ambiguous
    foo( +[](){} ); // not ambiguous (calls the function pointer overload)
}
Run Code Online (Sandbox Code Playgroud)

+这里的符号是什么?

lambda overloading c++11

87
推荐指数
1
解决办法
6710
查看次数

标签 统计

c++11 ×1

lambda ×1

overloading ×1