https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102899
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #5) > The object is only destroyed after the destructor finishes, which is never > in this case. But it's still wrong to re-enter the destructor after it starts, even if it hasn't finished yet. And [basic.life] p1 says the lifetime ends when the destructor call *starts*. So the delete expression calls a destructor on an object after its lifetime ends.