comp.lang.ada
 help / color / mirror / Atom feed
From: Brian Drummond <brian@shapes.demon.co.uk>
Subject: Re: Why is the destructor called multiple times after I declare an object?
Date: Tue, 12 Jan 2016 12:41:35 -0000 (UTC)
Date: 2016-01-12T12:41:35+00:00	[thread overview]
Message-ID: <n72s9v$gi4$1@dont-email.me> (raw)
In-Reply-To: 871t9ogevj.fsf@theworld.com

On Mon, 11 Jan 2016 13:17:20 -0500, Bob Duff wrote:

> Brian Drummond <brian@shapes.demon.co.uk> writes:
> 
>> Somehow I expected "extended return" to allocate space and "build in
>> place" during the execution of the return statement.
> 
> Build-in-place is done for return of immutably-limited types,
> whether or not the extended return syntax is used.
> 
> For nonlimited types, the compiler is free to use build-in-place if it
> can prove that it's equivalent to return-by-copy.  It's often not
> equivalent.  For example:
> 
>     X := Init;
> 
> What if Init raises an exception after partly modifying the result? In
> that case X should not be modified, so the result object of Init and X
> had better not be at the same address.

Thank you (and Simon and Brad) for the clarification. 

I had not considered the ramifications in the case of exceptions, and the 
impracticability of rolling back a partially modified object...

-- Brian


  parent reply	other threads:[~2016-01-12 12:41 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-11  1:37 Why is the destructor called multiple times after I declare an object? Andrew Shvets
2016-01-11  2:18 ` Jeffrey R. Carter
2016-01-11  3:35   ` Andrew Shvets
2016-01-11 17:02     ` Brian Drummond
2016-01-11 16:29   ` Brian Drummond
2016-01-11 17:20     ` Simon Wright
2016-01-11 18:17     ` Bob Duff
2016-01-11 21:10       ` Dmitry A. Kazakov
2016-01-11 23:44         ` Randy Brukardt
2016-01-12  9:33           ` Dmitry A. Kazakov
2016-01-12 20:21             ` Randy Brukardt
2016-01-12 21:05               ` Dmitry A. Kazakov
2016-01-13  0:02                 ` Robert A Duff
2016-01-13  8:31                   ` Dmitry A. Kazakov
2016-01-13  9:01                     ` Georg Bauhaus
2016-01-13 14:45                     ` J-P. Rosen
2016-01-13 20:09                       ` Dmitry A. Kazakov
2016-01-14  9:04                         ` J-P. Rosen
2016-01-14  9:47                           ` Dmitry A. Kazakov
2016-01-13 16:03                     ` Robert A Duff
2016-01-13 19:59                       ` Dmitry A. Kazakov
2016-01-14 10:04                         ` Georg Bauhaus
2016-01-14 13:42                           ` Dmitry A. Kazakov
2016-01-12 12:41       ` Brian Drummond [this message]
2016-01-13 20:18       ` Jacob Sparre Andersen
2016-01-14  1:31         ` Robert A Duff
2016-01-12  0:43     ` Jeffrey R. Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox