функция — Как использовать лямбду в качестве лексической области в переполнении стека

Коды такие:

int a = 1;
auto f = [a] {return a;};
a = 100;
std::cout << f() << endl;
return 0;

Я ожидал увидеть 100 в результате. Тем не менее a как замерзает при захвате в f, Результат 1, Есть ли способ сохранить a соответствует когда a изменения?

2

Решение

Вам нужно захватить a по ссылке:

auto f = [&a] {return a;};

Или просто захватить всю среду по ссылке:

auto f = [&] {return a;};
6

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

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

По вопросам рекламы [email protected]