DIP 1022---foreach auto ref---Final Review

Walter Bright newshound2 at digitalmars.com
Sun Dec 1 10:31:56 UTC 2019


We are working on a comprehensive solution to the copy, move, and forward 
problem with function parameters. This naturally leads into under what 
conditions are the foreach ranges copied, moved, or forwarded to the foreach 
variable?

I'm concerned that we seem to now have a mess over what ref actually means. There's:

a) pre- and post- DMD 2.088 behavior of ref in foreach (as noted in the DIP, but 
there's no reference to the DIP for that change).

b) `auto ref` for function parameters

c) `auto ref` for function return values

d) rvalues being promoted to `ref` for function parameters
https://gist.github.com/andralex/e5405a5d773f07f73196c05f8339435a
https://digitalmars.com/d/archives/digitalmars/D/Binding_rvalues_to_ref_parameters_redux_325087.html
Implementation: https://github.com/dlang/dmd/pull/9817

I suggest putting this on hold until we have a comprehensive solution to 
function parameter copying, moving, and forwarding so we don't have to re-do 
foreach yet again after this DIP.


More information about the Digitalmars-d mailing list