C++ Logo


Advanced search

Re: [std-proposals] Relax condition for potentially invoked destructor in constructor

From: Jason McKesson <jmckesson_at_[hidden]>
Date: Thu, 24 Feb 2022 09:43:43 -0500
On Thu, Feb 24, 2022 at 8:22 AM organicoman via Std-Proposals
<std-proposals_at_[hidden]> wrote:
> But remember that the compiler is free to rearrange the construction of subobjects for optimization purposes,

Um, no it isn't. The order of initialization of subobjects is
well-defined ([class.base.init]/13: declaration order, base classes
first) and not allowed to vary. Compilers are not free to re-order
those subobject constructors.

The OP's point therefore stands: if all of the constructors for
subobjects past a certain point are not potentially throwing, then
none of their destructors *need* to be potentially invoked.

That said, I don't think it's a very *useful* idea. It makes
"potentially invoked" a matter of exactly how you initialize an
object, which sounds very brittle. One constructor might consider
certain destructors to be "potentially invoked" while another may not.
And I'm not sure what any of this would actually purchase you in terms
of useful functionality.

Received on 2022-02-24 14:43:55