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.