Sean Kelly wrote:
Great paper! The only quibble I have so far is that I think iterators can support sentinel-terminated containers, it just isn't terribly natural to do so.

The things I particularly like:

find_end() -- Reverse iterators are a pain in the ass. The simplicity of this is just fantastic.

Chain, Zip, Stride, Radial -- 100% pure awesome.

partial_sort() -- The definition of this is just ingenious. It derives naturally from the range design and yet I'd never have thought of it otherwise.

Regarding iostream ranges, I'd have liked if there was a bit more about the difference in interface: put vs. push/pop. One "benefit" of stream iterators is that they use the same syntax as other iterators, so it would be good to hear why the change in syntax for ranges isn't actually a design flaw.

Overall, the presentation makes a very compelling case for ranges. While it's /possible/ to do quite a lot with iterators, the truly interesting stuff is so difficult/messy that it isn't worth doing. Ranges are elegant and safe for even fancy things. Nice work.

Reply via email to