gpt4 book ai didi

c++ - 我可以运行一个存储的 lambda,其捕获的值不再在范围内吗?

转载 作者:行者123 更新时间:2023-11-28 07:17:26 26 4
gpt4 key购买 nike

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

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

return isFinished;
}

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

最佳答案

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

关于c++ - 我可以运行一个存储的 lambda,其捕获的值不再在范围内吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com