c++ - lambda C++ 的类型转换

标签 c++ function lambda type-conversion

是否可以将 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/

相关文章:

c++ - unique_ptr : can't get value from iterator 的无序映射

C++ 从函数、指针返回多维数组的最佳方式?

c++ - 为什么 const QString& param 返回指向数据的错误 const char* 指针

c++ - 尝试应用肖恩 parent 谈话中的模式 "inheritance is the base class of evil"

postgresql - 在 PostgreSQL 9.2 中基于循环创建动态表

lambda - 在 Java8 中使用 Lambda 表达式对映射进行排序

javascript - 完全控制许多对象 Javascript

python - python中函数的len()

c++ - 是否可以找出多态 C++ 14 lambda 的参数类型和返回类型?

python - 双 lambda Python