Указание mutable
для лямбды верхнего уровня исправляет сборку GCC: https://godbolt.org/z/qGGBgs
Похоже, что в GCC "захватывает" поток через лямбды. т.е. во вложенных лямбда-захватах можно захватывать только то, что захвачено в вышеупомянутой лямбде. Так что, если a
не зафиксировано изменчивым в лямбде верхнего уровня, вложенная лямбда не может сделать его изменяемым внезапно.
Я не знаю, приемлемо ли это в соответствии с C ++хотя спец.