关于隐式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'的已知转换
为什么是这样?或者这可能吗?