On 08/23/2018 10:11 PM, Walter Bright wrote:
On 8/23/2018 5:55 AM, Steven Schveighoffer wrote:
[...]
I think he means, if the range ITSELF doesn't allow copying, it won't
work with foreach (because foreach makes a copy), but it will work
with opApply.
foreach (ref v; collection)
does not make a copy.
It makes a copy of `collection`.
It's up to the programmer whether copying is done
with it. After all, if one is passing a struct instance around by value
instead of by ref, there is no escaping copying it. This should not be
surprising.
It's not obvious that using `collection` in a `foreach` means passing it
around by value.