小编Nic*_*lob的帖子

C++ lambda转换 - 为什么候选构造函数不可行:没有已知的从lambda到std :: function的转换

关于隐式lambda转换的问题.我有这种类型:

class A {
 public:
  A(std::function<void(std::string)> func) {
    ....
  }
};
Run Code Online (Sandbox Code Playgroud)

我相信它有一个有效的复制构造函数.

我想做以下几点

A a = [](std::string param) { ... };
Run Code Online (Sandbox Code Playgroud)

要么

void MyFunc(A a) { ... }  // definition

MyFunc([](std::string param) { ... });  // call
Run Code Online (Sandbox Code Playgroud)

然而这两个产生编译错误:

注意:候选构造函数不可行:第一个参数没有从'(lambda at ....)'到'std :: function'的已知转换

为什么是这样?或者这可能吗?

c++ lambda

2
推荐指数
1
解决办法
278
查看次数

标签 统计

c++ ×1

lambda ×1