On Wednesday, 25 August 2021 at 17:01:54 UTC, Steven
Schveighoffer wrote:
In a world where copyability means it's a forward range? Yes.
We aren't in that world, it's a hypothetical "if we could go
back and redesign".
OK, that makes sense.
Technically this is true. In practice, it rarely happens. The
flaw of `save` isn't that it's an unsound API, the flaw is that
people get away with just copying, and it works 99.9% of the
time. So code is simply untested with ranges where `save` is
important.
This is very true, and makes it quite reasonable to try to pursue
"the obvious/lazy thing == the thing you're supposed to do"
w.r.t. how ranges are defined.
I'd be willing to bet $10 there is a function in phobos right
now, that takes forward ranges, and forgets to call `save` when
iterating with foreach. It's just so easy to do, and works with
most ranges in existence.
I'm sure you'd win that bet!
The idea is to make the meaning of a range copy not ambiguous.
Yes, this feels reasonable. And then one can reserve the idea of
a magic deep-copy method for special cases like pseudo-RNGs where
one wants them to be copyable on user request, but without code
assuming it can copy them.