Лямбда - это просто компактное определение для встроенной структуры и перегрузки operator()
для этой структуры (и для создания объекта типа этой структуры).Лямбда-захваты - это просто переменные-члены этой структуры, инициализированные конструктором типа.Это одна из причин, почему лямбда-выражения C ++ должны иметь синтаксис для захвата по значению по сравнению со ссылкой.
Но переменные-члены структуры являются закрытыми.А поскольку структура, сгенерированная компилятором, в значительной степени определяется реализацией, стандарт не требует предоставления этих членов с этими именами.Генерируемая компилятором структура может использовать другое имя, если оно того хочет;компилятору просто нужно переназначить использование этих имен в лямбда-выражениях для ссылки на имена членов.
Так что нет, лямбда-захваты любого вида не могут быть доступны миру за пределамиэта лямбда.Если вы фиксируете ссылку на объект, то внешний мир может получить доступ к тому же объекту.Но вы не получите доступ к той же ссылке на этот объект.