如果我想做一个lambda类型std::function<void(const Foo&)>
。为什么删除引用和论点的一致性是合法的?这是有效的:
std::function<void(const Foo&)> f = [](Foo) {
// ...
};
Run Code Online (Sandbox Code Playgroud)
如果我想做一个lambda类型
std::function<void(const Foo&)>
该类型不是lambda,因此您不能拥有该类型的lambda。我想您的意思是,您想将lambda存储在该类型的函数包装中。
为什么删除引用和论点的一致性是合法的?
因为Foo
(lambda的参数)可以从const Foo&
(函数包装的参数)初始化。您也可以不使用lambda来执行此操作:
const Foo& ref{some_value};
Foo f {ref};
Run Code Online (Sandbox Code Playgroud)