Ruling out arbitrary cost copy construction?
Rainer Deyke
rainerd at eldwood.com
Thu Oct 7 12:34:41 PDT 2010
On 10/7/2010 07:24, Steven Schveighoffer wrote:
> First, let me discuss why I don't like save.
...
> So my question is, what is the point of save? The whole point is for
> this last class of ranges, so they can implement a way to copy the
> iteration position in a way that isn't doable via simple assignment.
> But there *AREN'T ANY* of these ranges in existence. Why do we have a
> feature that is littered all over phobos and any range that wants to be
> more than a basic imput range when the implementation is return this; ?
Let me add two reasons to that list.
First, I expect that forgetting to call 'save' is or will be a very
common bug. There's no way to detect it at compile time, and when the
code is used with a range with a trivial 'save', the code will work as
expected. The bug will only be triggered by a range with a non-trivial
'save'. Therefore ranges with non-trivial 'save' should be considered
error-prone and should not be used.
Second, it is in fact fairly easy to wrap a range with a non-trivial
'save' in a range with a trivial 'save', using a copy-on-write strategy.
So if there /were/ any ranges with non-trivial 'save', it would be easy
enough to rewrite them to eliminate the non-trivial 'save'.
Eliminating 'save' makes ranges a lot easier and safer for range users,
at a minor cost for range writers. Since range users greatly outnumber
range writers, this seems like an overwhelmingly good trade-off.
--
Rainer Deyke - rainerd at eldwood.com
More information about the Digitalmars-d
mailing list