I see many texts on the STL (e.g. http://www.cplusplus.com/reference/std/iterator/) that imply that Forward iterators (and by extension Bidi and Random iterators) must satisfy both Input and Output iterator requirements. This seems odd to me, since const iterators are clearly iterators, but are just as clearly not Output iterators.
What is the truth of this understanding? Do I not understand the concept of Output iterator, or do Output iterators not fall into the expanding requirements order of iterators? (Does this idea have a better/official name? I mean the idea that Random iterators are also Bidi iterators which are also Forward…)
C++03 says (24.1/4):
cplusplus.com chose not to mention that. The wording in the standard is confusing, since it states “Forward iterators satisfy all the requirements of the input and output iterators”, and contradicts that in the next paragraph to say that some forward iterators do not satisfy the requirements of output iterators.
C++11 simplifies a little (24.2.1/3-4):