On Monday, 25 May 2015 at 17:25:57 UTC, Andrei Alexandrescu wrote:
It's not += doing the magic, it's bar(). And it's not limited
to
concurrency, it happens with every side effect:
import std.stdio;
void main()
{
int a = 0;
int bar()
{
a++;
return a;
}
a += bar(); // => a = a + bar()
writeln(a);
}
DMD: 2
GDC: 1
which one is correct?
GDC. -- Andrei
You made me change SDC to return 2 recently using the following
as an argument (one lwoering per line):
a += foo();
((ref X, Y) => X = X + Y)(a, foo());
http://33.media.tumblr.com/31bb0136f46468417bd3ccac1c52c769/tumblr_inline_nix5v8WXLd1t7oi6g.gif