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