On Friday, 10 January 2014 at 08:27:42 UTC, Andrei Alexandrescu wrote:
It's an outrage, and this particular combination of (mis)features has never got to my attention until now.

I've submitted https://d.puremagic.com/issues/show_bug.cgi?id=11889 on your behalf. I've also sent out the fix https://github.com/D-Programming-Language/phobos/pull/1845 for review. (It's simple, but perhaps I'm missing some subtler issues.)

Apologies for this!


Andrei

Array returns a value by design. I don't think it's array that's wrong here, it's being able to assign to members of an rvalue (IMO).

Off the top of my head, a possible language enhancement would be to allow member functions to be marked as "ref", in which case, they only work on lvalue (as applying the function on a temp would make no sense).

eg:
struct S
{
    void doit();
    void opAssign(int) ref;
}

void main()
{
    S().doit(); //OK, rvalue call
    S() = 5; //Nope, opAssign requires an lvalue.
}

Reply via email to