std.algorithm move() struct emptying

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Aug 31 08:05:38 PDT 2010


On 8/31/10 7:49 CDT, Michel Fortin wrote:
> On 2010-08-31 06:16:17 -0400, bearophile <bearophileHUGS at lycos.com> said:
>
>> If in generic code T.init is not guaranteed to be an lvalue, as your
>> example shows, isn't it better to disallow (turning it into a syntax
>> error) &T.init in all cases?
>
> Personally, I'd say the code should check if T.init is an lvalue using
> __traits(compiles, &T.init) or is(typeof(&T.init)) and avoid creating a
> static variable or temporary when it is. This optimization of course
> depends &T.init not being a syntax error.

I recall I wrote that code to avoid a compiler bug when T == Tuple!(some 
types).

Andrei




More information about the Digitalmars-d mailing list