Можно ли запустить сохраненную лямбду, чьи захваченные значения больше не находятся в области видимости?

У меня есть будущее, в которое я хочу передать лямбду, когда она будет завершена, но объем будет изменяться к тому времени, когда лямбда будет выполняться; что происходит с захваченным значением? Например

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

return isFinished;
}

К тому времени, когда лямбда действительно выполняется, функция может быть завершена. Так что же будет? Является ли захват по значению таким же, как связывание множества переменных?

0

Решение

Ваша лямбда захватывает isFinished указатель по значению, а объект, на который он указывает, находится в бесплатном хранилище. Так что все в порядке. В лямбде не упоминается местный объект.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector