c++ - 使用范围变量的 lambda 表达式 - 安全吗?

标签 c++

当 f 被调用时,a 已经被“破坏”了。这样使用安全吗?它是如何工作的?

std::function<void()> f;
{
  int a = some_calc();
  f = [=] { std::cout << a << std::endl; }
}
f();

最佳答案

Is it safe to use it this way?

How does it work?

由该 lambda 表达式创建的闭包对象将 int a 作为数据成员,从该范围内的 a 复制初始化。

关于c++ - 使用范围变量的 lambda 表达式 - 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68632885/

相关文章:

c++ - 通过 tcp 将数据流存储到大型数组中的最佳方法是什么?

c++ - 存储正常(即非动态分配)数据的非动态创建的 std::vectors 的内存释放问题

c++ - Win32 C++ 重绘窗口

c++ - 我正在尝试制作一个循环来检查输入是否为数字,如果不是则再次询问

c++ - OpenCV contourArea() 不工作

c++ - 模板选择 const 引用而不是 const 指针

c++ - 错误 : base class 'A1' has private copy constructor

c++ - QList 中的 boost::shared_ptr 导致段错误

C++:运算符和模板

c++ - 架构 : plugin and standalone behavior