Steven Schveighoffer wrote:
You're assuming an iterator does not know its bounds.

That's right. That's the usual design, which is based on the pointer model. Pointers do not know their limits.

Maybe I should call it something other than iterator. How about cursor?

Or range? <g>


There are definite reasons to use containers in ways that don't involve std.algorithm, where something that has the easy ability to move back and forth N times without weird subrange operations.

I'm thinking of a structure with either a pointer to the container for bounds checking, or a range and pointer combined (where the invariant is that the pointer is always within the range).

I'm not saying ranges are not great, i think they are a HUGE step forward, but the statement "Iterators must be eliminated" may be too harsh. Perhaps the unchecked iterator, yes (but you may want to allow it in certain performance-critical code).

If you had an iterator that knew its beginning and end, then the whole paradigm of:

   for (iterator i = begin; i != end; i++)

doesn't make much sense because of the redundancy.

Reply via email to