Extend D's switch statement?
via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jul 10 02:07:19 PDT 2015
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.
More information about the Digitalmars-d
mailing list