У меня есть будущее, в которое я хочу передать лямбду, когда она будет завершена, но объем будет изменяться к тому времени, когда лямбда будет выполняться; что происходит с захваченным значением? Например
bool* MakeThen(Concurrency::completion_future& future)
{
bool * isFinished = new bool(false);
future.then([=](){ *isFinished = true; });
return isFinished;
}
К тому времени, когда лямбда действительно выполняется, функция может быть завершена. Так что же будет? Является ли захват по значению таким же, как связывание множества переменных?
Ваша лямбда захватывает isFinished
указатель по значению, а объект, на который он указывает, находится в бесплатном хранилище. Так что все в порядке. В лямбде не упоминается местный объект.
Других решений пока нет …