Глядя на пример на странице:
https://en.cppreference.com/w/cpp/algorithm/generate
Используется лямбда:
std::generate(v.begin(), v.end(), [n = 0] () mutable { return n++; });
переменная n
ранее нигде не объявляласьк лямбде.
Попробовав этот фрагмент в MSVC 14 и GCC 9.1, он работает на обоих.
Попробуйте найти ссылку на это поведение по адресу:
https://en.cppreference.com/w/cpp/language/lambda
но нигде не может найти, где говорится, что новые переменные могут быть объявлены в области захвата лямбды.
Это ожидаемое поведение?Каковы ограничения, если это так?