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