c++ - C++ 中 lambda 派生的隐式仿函数的生命周期是多少?

标签 c++ lambda

问题很简单:当我编写 lambda 表达式时,C++ 编译器自动为我生成的仿函数对象的生命周期是多少?

我进行了快速搜索,但找不到满意的答案。特别是,如果我在某处传递 lambda,它在那里被记住,然后我超出范围,一旦稍后调用我的 lambda 并尝试访问我的堆栈分配但不再事件的捕获变量,将会发生什么?或者编译器是否以某种方式防止这种情况?或者什么?

最佳答案

取决于您捕获变量的方式。如果您通过引用 ([&]) 捕获它们并且它们超出范围,则引用将无效,就像普通引用一样。如果您想确保它们的生命周期超出其范围,则按值捕获它们 ([=])。

关于c++ - C++ 中 lambda 派生的隐式仿函数的生命周期是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5207467/

相关文章:

Python Lambda 检查 URL 健康状况

c++ - 重载下标运算符 []

C++:简单节点/链表

c++ - 使用 boost::singleton_pool 时处理 std::string/std::vector 成员变量

c++ - 使用 VS2008 构建的 .lib 由使用 VS2005 构建的二进制文件使用

c# - Re# 中未解析的 lambda 表达式

c++ - 在 C++ 中从另一个进程解锁线程

c++ 11以下lambda函数的作用域是什么

c# - 从没有实例的类中获取字段的名称

haskell - 这个haskell函数中的这些值来自哪里?