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.