Ole*_*leg 4 c++ lambda function type-conversion
是否可以将lambda函数作为某种类型的函数传递?
例如,我有
typedef double(*Function)(int, double);
Run Code Online (Sandbox Code Playgroud)
如何将lambda函数转换为该类型?
对于无状态lambda,可以隐式使用此转换:
Function f = [](int, double) -> double {};
Run Code Online (Sandbox Code Playgroud)
如果您只想转换lambda表达式本身,可以使用一元运算+符来实现:
auto* p = +[](int, double) -> double {}; // p is of type double(*)(int, double)
Run Code Online (Sandbox Code Playgroud)
带捕获的lambda不提供这样的转换,因为它在语义上不等同于(无状态)函数(这甚至适用于默认捕获但不会捕获任何内容的情况).