pass by value && elide dtor + post-blit

Xiaoxi via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jun 21 01:32:09 PDT 2015


On Saturday, 20 June 2015 at 22:44:17 UTC, Ali Çehreli wrote:
> On 06/20/2015 02:09 PM, Xiaoxi wrote:
> The output:
>
> before
> deneme.S.this
> after
> deneme.S.~this
>
> Ali

Dear Ali,

thank you for helping! Problem happens when passing by value as 
in param.

DMD32 D Compiler v2.067.0
deneme.S.this
before
deneme.S.__postblit
deneme.S.__postblit
deneme.S.~this
deneme.S.~this
after
deneme.S.~this

import std.stdio;

struct S
{
     int val;
     this(int par)
     {
         val = par;
         writeln(__FUNCTION__);
     }

     this(this)
     {
         writeln(__FUNCTION__);
     }

     ~this()
     {
         writeln(__FUNCTION__);
     }
}

S foo(S s)
{
     s.val+=1;
     return s;
}

void main()
{
     auto s = S(42);
     writeln("before");
     foo(s);
     writeln("after");
}




More information about the Digitalmars-d-learn mailing list