https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123700
--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> ---
A workaround is to use an intermediate variable that holds the lambda:
template <typename> constexpr int zero = 0;
template <auto> struct Type;
int outer(auto) {
constexpr auto lambda = [](auto) {};
using inner = Type<lambda>;
return [](auto) { return zero<inner>; }(0);
}
int main() { outer(0); }
