I'm not sure how it applies to this discussion, but I'd just like to mention that a lot of interest (in c++ and d communities) has moved away from using iterators as the fundamental interface to containers and to ranges as the interface.