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.

Reply via email to