RValue DIP Draft.

Tejas notrealemail at gmail.com
Tue Oct 19 06:05:25 UTC 2021

On Tuesday, 19 October 2021 at 03:53:45 UTC, Elronnd wrote:
> I support this DIP.  However:
>> For objects larger than 1-2 registers in size, passing by 
>> pointer may be more efficent than passing by value
> I don't buy this
> Really, there are two issues being brought up:
> 1. Copying large objects is slow
> 2. Copy constructors may be slow
> 1 is exclusively an ABI issue, and should be solved at the ABI 
> level (cf 
> https://elronnd.net/writ/boring/2021-05-07_abi-wrong.html).

Even `preview=in` subscribes to this philosophy and implements 
the same semantics, so idk if anyone will ever implement changes 
at ABI level.

> Regarding 2, consider that this DIP applies to rvalues.  That 
> is, it applies to expressions like:
> some_func(SomeStructWithAnExpensiveCopy())
> The proper fix for this is to turn the last use of a struct 
> into a move instead of a copy.  (I believe there was a DIP 
> proposing this.)

It was DIP 1040 that was introducing move constructors, 
moveAssign (and possiby rvalue references), but it's currently 
not being worked on :(

More information about the Digitalmars-d mailing list