我有一个未来,我希望传递一个lambda在它完成时运行,但范围将在lambda执行时改变;捕获的值会发生什么?例如
bool* MakeThen(Concurrency::completion_future& future)
{
bool * isFinished = new bool(false);
future.then([=](){ *isFinished = true; });
return isFinished;
}
当lambda实际执行时,函数可能已经完成。那会发生什么?是否像绑定一堆变量那样按值捕获?
答案 0 :(得分:1)
您的lambda按值捕获isFinished
指针,它指向的对象位于免费商店。所以没关系。 lambda中没有引用本地对象。
答案 1 :(得分:0)
只要您还没有完成delete isFinished;
,它都是安全的。