https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105256
--- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Don't both of those tests have UB (sure, we shouldn't ICE), using uninitialized non-static data member? Perhaps: int bar (int &) { return 1; } struct S { struct T { struct U { int i = bar (i); } p; void foo (); }; }; void S::T::foo () { *this = {}; }; is better?