Изменяемый захват лямбды в C++
Захват по значению копирует переменную внутрь замыкания и по умолчанию делает ее константной в теле лямбды.
Ключевое слово mutable снимает эту
константность для копий, поэтому счетчик
можно увеличивать внутри operator(). Запишем
лямбду со счетчиком и выведем два вызова:
#include <iostream>
int start = 0;
auto step = [start]() mutable {
start += 1;
return start;
};
std::cout << step() << "\n";
std::cout << step() << "\n";
Захватите int n со значением
0 по значению. Лямбда mutable
должна три раза увеличивать n и
возвращать его; выведите три результата
с новой строки.