On Thursday, 9 July 2015 at 22:50:37 UTC, Vlad Levenfeld wrote:
On Thursday, 9 July 2015 at 16:08:37 UTC, Timon Gehr wrote:
On 07/09/2015 04:17 PM, Timon Gehr wrote:
On 07/09/2015 02:54 PM, rsw0x wrote:
...
someone was willing to produce.

Someone is often willing to produce awkward language quirks, so I think
being critical of new additions has some value.

E.g.

"Note: Cannot swap values by tuple assignment.

int x = 1, y = 2;
{x, y} = {y, x};
// Lowered to:
// x = y, y = x;
assert(y == 2);
assert(x == 2);"

No, please.

Couldn't this could be detected at compile-time and temporary variables created?

Yes, but there needs to be a complete aliasing analysis, e.g.

    int* x, y;
    // ...
    {*x, *y} = {*y, *x};

It's probably safer to create the temporaries by default and elide them when the elements are provably non-aliasing.

Reply via email to