https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70616
Nathan Sidwell <nathan at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nathan at gcc dot gnu.org --- Comment #4 from Nathan Sidwell <nathan at gcc dot gnu.org> --- 12.4 seems to cover this case, and indicate that with an unqualified name, we call the complete object destructor -- not the base destructor. Thus Patrick's test case is behaving as expected. The qualified name will call that specific base's (in-charge, complete) destructor. And I think will not work with the current ABI in the case of virtual bases. The virtual bases could be placed differently in the complete object to how a particlar base would place them if it were the complete object (that's what the VTT param is all about). The std does not seem to indicate such calls are undefined though.