On Sunday, 5 May 2013 at 16:14:01 UTC, Dicebot wrote:
Few additional points:
On Sunday, 5 May 2013 at 16:07:12 UTC, deadalnix wrote:
I wish to add to the discussion that you want to pass by ref
for 2 reasons (and the intent is very different) :
- You intend to modify the value in some meaningful way for
the caller. In which case, binding to rvalue don't make any
sense.
You may want to modify rvalue temporary for implementing some
sort of move semantics like in C++11.
No, you won't be able to reach any of this anyway. Move semantic
is already cleanly implemented in D, so the C++ mess is
irrelevant here.
- You want to avoid creating copies, when this isn't
necessary. In this case, this is a performance reason, and
binding to rvalue make sense.
Not necessarily performance reason on its own, copy
construction of given object may have an undesired side
effects. Or it may be even some singleton'ish object.
Having a singleton as a value type, and not marking the postblit
as @disable is asking for trouble in general, nothing specific to
the discussion here.