On Tue, Aug 31, 2010 at 17:05, Andrei Alexandrescu <SeeWebsiteForEmail@erdani.org> wrote:
On 8/31/10 7:49 CDT, Michel Fortin wrote:
On 2010-08-31 06:16:17 -0400, bearophile <bearophileHUGS@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

Is that related to this bug?
http://d.puremagic.com/issues/show_bug.cgi?id=4536


Philippe