https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86238
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid Summary|a vtable layout bug |No diagnostic for virtual | |base class with | |inaccessible destructor --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Please try to provide meaningful bug titles, and reduce the code to remove everything that isn't relevant. This bug reduces from a 72kB testcase to simply: struct s2 { ~s2() {} }; class s3 : virtual protected s2 { }; class s4 : private s3 { }; class s11 : s4 { } a11; C++ and EDG accept this, but Clang prints: test.cc:4:7: error: inherited virtual base class 's2' has private destructor class s11 : s4 { } a11; ^ test.cc:4:20: note: in implicit default constructor for 's11' first required here class s11 : s4 { } a11; ^ test.cc:3:12: note: constrained by private inheritance here class s4 : private s3 { }; ^~~~~~~~~~ test.cc:4:7: error: inherited virtual base class 's2' has private destructor class s11 : s4 { } a11; ^ test.cc:4:20: note: in implicit destructor for 's11' first required here class s11 : s4 { } a11; ^ test.cc:3:12: note: constrained by private inheritance here class s4 : private s3 { }; ^~~~~~~~~~ 2 errors generated.