Subject: Re: [std-proposals] Make abstract classes non-deletable if no virtual destructor available
From: Vishal Oza (vickoza_at_[hidden])
Date: 2020-03-23 15:28:56
I not sure if this should be an error or the compiler should generate the
public virtual destuctor. I learn toward having the compiler generate the
public virtual destuctor.
On Mon, Mar 23, 2020 at 3:19 PM Kilian Henneberger via Std-Proposals <
> an abstract class (a class that either defines or inherits at least one
> function for which the final overrider is pure virtual)
> cannot be instantiated. However it can be destroyed. But deleting a
> Derived-object through a pointer to Base-object
> leads to undefined behaviour if the destructor of the Base-class is not
> There also exists a CppCoreGuideline addressing this topic:
> I want to propose that we make the attempt to delete a pointer to an
> abstract class ill-formed,
> if the abstract class does not have a (public) virtual destructor.
> This would turn what currently is UB into a compiler error.
> But it also might imply that code which compiles today (even if leading
> to UB), wont compile any longer after this change.
> I am looking forward to any feedback.
> Best regards,
> Kilian Henneberger
> Std-Proposals mailing list
STD-PROPOSALS list run by herb.sutter at gmail.com
Standard Proposals Archives on Google Groups