https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100054
--- Comment #2 from Barry Revzin <barry.revzin at gmail dot com> --- In case it helps, here's a different example which on trunk ICEs in get_nsdmi, but on gcc 10.2 and 10.3 ICEs on "unexpected expression '(F)<brace-enclosed initializer list>()' of kind implicit_conv_expr" (and is accepted by 10.1) struct F { private: int cx; }; template <typename> void find() { struct H { F o{}; }; using r = decltype([](auto) { return H{}; }(0)); } void p() { find<int>(); }