С любого. auto l = [&l]{}; не соберётся.
Потоуммучто тут тип не выведен
Так я о том же. Захват не поможет реализовать рекурсивную лямбду
Нам ведь для рекурсивного вызова не нужно захватывать сам объект лямбды, мы уже в теле closure type, и для него же гарантируется стандартом наличие operator(). Достаточно позволить вызывать его изнутри, при этом не нужно будет ни захватывать, ни обращаться к объекту лямбды по имени из лямбда-выражения, поэтому проблемы нет. Цена — лишнее условие в стандарте и не самый красивый синтаксис Собственно, в моём примере это получилось и у GCC, и у MSVC просто потому что они предоставляют operator() внутри лямбда-выражения
Мы обсуждали текущие возможности стандарта, где для вызова лямбды внутри самой себя надо иметь в том или ином виде this
Обсуждают сегодня