https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88690
--- Comment #10 from Eugene <eugene at hutorny dot in.ua> --- (In reply to Jakub Jelinek from comment #8) > Further reduced (-std=c++17): > struct A { int a = 1; }; > struct B { int b = 0; }; > struct C { C () = delete; }; > struct D : public B, public C {}; > struct E : A { D f; } g{}; I think this particular example should be rejected by the compiler because there is no means for constructing C; The one below should compile indeed: struct A { int a = 1; }; struct B { int b = 0; }; struct C { C() = default; C (const C&) = delete; }; struct D : public B, public C {}; struct E : A { D f; } g{};