
John Maddock wrote:
Hold your horses here: surely const char* most certainly is a random access iterator, albeit an immutable one. I don't see anything in 24.1 that requires OutputIterator semantics for anything except, well output iterators :-)
24.1p3: "Forward iterators satisfy all the requirements of the input and output iterators and can be used whenever either kind is specified; Bidirectional iterators also satisfy all the requirements of the forward iterators and can be used whenever a forward iterator is specified; Random access iterators also satisfy all the requirements of bidirectional iterators and can be used whenever a bidirectional iterator is specified." However, it has since been pointed out to me I was ignoring 24.1p4: "Besides its category, a forward, bidirectional, or random access iterator can also be mutable or constant depending on whether the result of the expression *i behaves as a reference or as a reference to a constant." which seems to contradict the previous paragraph, but is more consistent with expected use through the rest of the library. I am now no longer sure what is/is-not a random access iterator according to C++03, but supect the intent is to support-but-not-require output-iterator. Hopefully we can clear this up once and for all in the next standard. -- AlisdairM