是否可以将 lambda 函数作为某种类型的函数传递?
比如我有
typedef double(*Function)(int, double);
如何将 lambda 函数转换为类型?
最佳答案
对于无状态的 lambda,此转换隐式可用:
Function f = [](int, double) -> double {};
如果只想转换lambda表达式本身,可以使用一元+
运算符来实现:
auto* p = +[](int, double) -> double {}; // p is of type double(*)(int, double)
具有捕获的 lambda 不提供此类转换,因为它在语义上不等同于(无状态)函数(这甚至适用于最终未捕获任何内容的默认捕获的情况)。
关于c++ - lambda C++ 的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46285628/