On Saturday, 10 October 2015 at 22:06:31 UTC, Andrei Alexandrescu
wrote:
So there was knowledge of said long history of ranges in C++.
Far as I can tell >"Iterators Must Go" was immediately and
universally recognized as a turning point in >how people
approached getting work done using ranges.
You've already published the background for your library approach
here:
http://www.informit.com/articles/article.aspx?p=1407357&seqNum=4
Which basically states the foundation: GoF iterators + STL. So
you've already killed the novelty game yourself.
GoF patterns is just an attempt to describe _common_ patterns in
software design. Stepanov "C++ pointer-iterators" was an attempt
to break away from the heavier GoF iterators (which D calls
ranges) with something more lightweight.
If one tries to enumerate all kinds of types of iterators one
will end up with a combinatorial explosion, so much for
generality. Stepanovs approach was probably also an attempt to
get away from this combinatorial explosion by providing
pointer-semantics instead.
One of the most important and convenient iterators (which C++
fails to deliver) are what GoF calls "roboust iterators":
iterators that allow deletions. To get there safely and
conveniently iterators have to be made a language feature, since
it requires static analysis in the general case, IMO.
Want to innovate? Provide language support.