Discussion: Rvalue refs and a Move construtor for D

kinke kinke at gmx.net
Wed Sep 4 09:20:05 UTC 2019

On Wednesday, 4 September 2019 at 00:33:06 UTC, Exil wrote:
> How would it work with multi-function passing though? With a 
> rvalue reference, you are effectively just passing around a 
> reference, until the contents of the value are moved. So you 
> can pass it through N functions and it won't ever to do a 
> move/copy.
> Would you effectively be relying on the compiler to optimize 
> out the un-necessary moves, or would they be unavoidable, as 
> they effectively are now?

Yes, by changing the ABI details to the C++ way in this regard, 
making move/forward intrinsics and detecting them in argument 
expressions. Laid out earlier in this thread in 
https://forum.dlang.org/post/jogsaeqxouxaeflmgzcc@forum.dlang.org. We don't need rvalue refs in the language for that at all, just use a value parameter - rvalue args will be passed by ref under the hood, just like explicitly moved lvalue args.

More information about the Digitalmars-d mailing list