[Issue 14638] The last (in lexical order) copy of an object must be a move

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Mon Jun 1 07:13:59 PDT 2015


https://issues.dlang.org/show_bug.cgi?id=14638

--- Comment #3 from Jonathan M Davis <issues.dlang at jmdavisProg.com> ---
It's my understanding (though I could be wrong) that the

void main()
{
    fun(S1());
    hun(S2());
}

part at least is guaranteed to do a move, since you're dealing with
temporaries. I would have expected the rest of it to do moves as well like
you're requesting, but I don't remember how guaranteed it's supposed to be.
Clearly, the compiler doesn't seem to think that it's guaranteed though, since
it's not doing it.

Regardless, I agree with this. We need to make it so that moves are guaranteed
where we can for both performance reasons and for noncopyable objects (and the
noncopyable objects pretty much throw it in your face when it doesn't do a
move).

However, I don't understand what you mean by dynamic and static uses. Is a
dynamic use one that may or may not be the last one hit depending on what
occurs after it, whereas a static use is guaranteed to be the last use if it's
hit?

--


More information about the Digitalmars-d-bugs mailing list