作者:鎏源大哥 | 来源:互联网 | 2022-12-08 08:02
关于隐式lambda转换的问题.我有这种类型:
class A {
public:
A(std::function func) {
....
}
};
我相信它有一个有效的复制构造函数.
我想做以下几点
A a = [](std::string param) { ... };
要么
void MyFunc(A a) { ... } // definition
MyFunc([](std::string param) { ... }); // call
然而这两个产生编译错误:
注意:候选构造函数不可行:第一个参数没有从'(lambda at ....)'到'std :: function'的已知转换
为什么是这样?或者这可能吗?
1> Jarod42..:
您的问题是只允许一次用户转换,您需要两个:
兰巴 - > std::function
- > A
.
都
A a{[](std::string) {}};
MyFunc({[](std::string) {}});
工作.