https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118577
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Adding: ``` void f() { C a; } ``` GCC now rejects it with a similar message as clang: ``` <source>: In destructor 'virtual C::~C()': <source>:8:8: error: 'static void A::operator delete(void*, int)' is private within this context 8 | struct C : /*mut1*/private B {}; | ^ <source>:5:8: note: declared private here 5 | struct B : /*mut1*/private A { | ^ <source>:8:8: error: no suitable 'operator delete' for 'C' 8 | struct C : /*mut1*/private B {}; | ^ <source>: In function 'void f()': <source>:13:11: note: synthesized method 'virtual C::~C()' first required here 13 | C a; | ^ ``` I am not 100% sure if the synthesized method deconstructor should happen always or not.