0

我有一个未来,我想将一个 lambda 传递给它以在它完成时运行,但是在 lambda 执行时范围会发生变化;捕获的值会发生什么?例如

bool* MakeThen(Concurrency::completion_future& future)
{
  bool * isFinished = new bool(false);
  future.then([=](){ *isFinished = true; });

  return isFinished;
}

到 lambda 实际执行时,该函数可能已经完成。那么会发生什么呢?按值捕获就像绑定一堆变量一样吗?

4

2 回答 2

1

您的 lambda 按值捕获isFinished指针,并且它指向的对象位于自由存储区。所以没关系。lambda 中没有引用本地对象。

于 2013-11-16T01:04:07.113 回答
0

只要你没做delete isFinished;,都是安全的。

于 2019-12-16T14:03:40.493 回答