https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122884
--- Comment #1 from C Runge <rungecc at gmail dot com> --- A more detailed reproducer(https://godbolt.org/z/YTcsc4z8b): ```cxx struct demux_t { template <class Fn, class... Slots> static constexpr auto operator()(Fn&& fn, Slots&&... slots) noexcept(noexcept( [fn{fn}, ... slots{slots}]<class Self, class... Args>( this Self&&, Args&&... args) // noexcept(noexcept(fn(slots(args...)...))) // crash -> decltype(auto) requires requires { fn(slots(args...)...); } { return fn(slots(args...)...); } )) -> decltype(auto) requires requires { [fn{fn}, ... slots{slots}]<class Self, class... Args>( this Self&&, Args&&... args) // noexcept(noexcept(fn(slots(args...)...))) // crash -> decltype(auto) requires requires { fn(slots(args...)...); } { return fn(slots(args...)...); }; } { return [fn{fn}, ... slots{slots}]<class Self, class... Args>( this Self&&, Args&&... args) // noexcept(noexcept(fn(slots(args...)...))) // crash -> decltype(auto) // requires requires { fn(slots(args...)...); } // crash { return fn(slots(args...)...); }; } } static constexpr demux{}; static_assert(demux([](auto x, auto y) { return x + y; }, [](auto...) { return 1; }, [](auto...) { return 2; })(1, 2) == 3); ``` each comment could trigger this ICE, with similar backtrace.
