On 12/13/17 2:33 PM, Jonathan M Davis wrote:
On Wednesday, December 13, 2017 11:33:35 Steven Schveighoffer via
Digitalmars-d wrote:
I don't think there's a requirement for empty not to do any work, it
just has to return the same value each time.
IIRC, when this was discussed previously, it was decided that you really
couldn't do work in empty. The problem is that under some circumstances at
least, it's perfectly legitimate to skip calls to empty
The discussion before was whether empty was required to be called before
calling front. It's perfectly acceptable to do work in empty, as long as
you return the same value in 2 subsequent calls to empty without
changing the range between those calls.
The problem is, if you have work done in empty, that doesn't mean you
don't have to do the equivalent work in front. Which is probably what
Luís is after.
The best way I think to have ranges work is to only modify them in
popFront/popBack, and the ctor.
-Steve