output ranges: by ref or by value?

Rainer Deyke rainerd at eldwood.com
Fri Jan 1 15:07:25 PST 2010


Andrei Alexandrescu wrote:
> If the implementor of consume() forgets to call save(), the situation is
> unpleasant albeit not catastrophic: for most struct ranges things will
> continue to work, but for class ranges the function will fail to perform
> to spec. I don't know how to improve on that.

Require that all ranges are structs.  If you want to implement a range
as a class, use a wrapper struct that creates a new object in its
postblit function.  The wrapper struct can be made generic and placed in
the standard library.

Same performance as the current approach, slightly more effort on the
part of the range implementor, much easier and less error-prone on the
side of the range user.


-- 
Rainer Deyke - rainerd at eldwood.com



More information about the Digitalmars-d mailing list