当 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/