[C++/66443] virtual base of abstract class
Jason Merrill
jason@redhat.com
Mon Aug 3 03:44:00 GMT 2015
On 08/01/2015 07:31 PM, Nathan Sidwell wrote:
> Ok, this patch fixes things up. The previous version was a little too
> lax, extending the logic of DR1611 to all synthesized functions.
> However, this broke virtual synthesized dtors, in that an abstract
> class's synthesized dtor's exception specification would not take
> account of any virtual base dtor exception specs. This would mean that
> a non-abstract derived class's synthesized dtor might end up with a
> throwing exception spec (because the virtual base's dtor did), and that
> would be looser than the exception spec on the abstract base's
> non-callable synthesized dtor. And that fails the virtual overriding
> checks.
It seems to me that DR 1658 ignores vbases of abstract classes for
determining whether a destructor is deleted, but says nothing about
exception specifications.
DR 1351 specifically ignores vbases of abstract classes for determining
the exception specification of a constructor, but only for constructors.
So I think that for destructors we want to walk the base, but pass in a
fake delete_p.
Why the check for inherited_parms? I would think that inheriting
constructors would be handled like other ctors.
Jason
More information about the Gcc-patches
mailing list