Struct d'tors and destructive assignment of return vals
Steven Schveighoffer
schveiguy at yahoo.com
Tue May 26 18:38:05 PDT 2009
On Tue, 26 May 2009 21:20:41 -0400, dsimcha <dsimcha at yahoo.com> wrote:
> import std.stdio;
>
> struct RC {
> uint N;
>
> this(this) {
> writeln("Postblit: ", N);
> }
>
> ~this() {
> writeln("D'tor: ", N);
> }
> }
>
> RC fun() {
> writeln("Doing stuff...");
> return RC(3);
> }
>
>
> void main() {
> RC foo = RC(1);
> writeln("Calling fun()...");
> foo = fun();
> writeln("Exiting...");
> }
>
> Output:
>
> Calling fun()...
> Doing stuff...
> D'tor: 1
> Exiting...
> D'tor: 3
>
> Would it be feasible to require that, when a struct is being
> destructively
> assigned the return value of a function, the d'tor is called for the old
> contents before the function that provides the return value is called
> instead
> of calling it after?
What if fun throws an exception?
-Steve
More information about the Digitalmars-d
mailing list