
Andrei Alexandrescu wrote:
My article with a draft name "Iterators Must Go (Ahead)" is now published on InformIt and mentioned on reddit.com. Due to the vagaries of posting time and reddit dynamics, the article didn't stay long on reddit's programming page so it got very few views and comments.
Having considered this problem myself, I went down a slightly different path. I was never really comfortable with the idea of "find" and friends returning a range when conceptually, what you're asking for is a location. My solution to that was to introduce a "referent" type that works like a MyType * const (more-or-less). Instead of having something like "Until", I take the referent and use it to split the range into two subranges and then take the piece I care about. Obviously, this has some of the same safety concerns that iterators do, but I'm not sure if it's worth worrying about in practice (especially since there are plenty of ways of invalidating a range to begin with). Still, ranges are pretty useful, and having played around with implementing them, they definitely make it easier to write functions like zip or cartesian_product. - Jim