diff --git a/MultiPassInputIterator.html b/MultiPassInputIterator.html index 99ee2fc..cb76b45 100644 --- a/MultiPassInputIterator.html +++ b/MultiPassInputIterator.html @@ -21,21 +21,21 @@

-MultiPassInputIterator +Multi-Pass Input Iterator

This concept is a refinement of InputIterator, +href="http://www.sgi.com/tech/stl/InputIterator.html">Input Iterator, adding the requirements that the iterator can be used to make multiple passes through a range, and that if it1 == it2 and it1 is dereferenceable then ++it1 == ++it2. The -MultiPassInputIterator is very similar to the ForwardIterator. The +Multi-Pass Input Iterator is very similar to the Forward Iterator. The only difference is that a ForwardIterator +href="http://www.sgi.com/tech/stl/ForwardIterator.hmtl">Forward Iterator requires the reference type to be value_type&, whereas MultiPassInputIterator is like InputIterator +href="http://www.sgi.com/tech/stl/InputIterator.html">Input Iterator in that the reference type merely has to be convertible to value_type. @@ -44,29 +44,29 @@ in that the reference type merely has to be convertible to comments by Valentin Bonnard: -

I think that introducing MultiPassInputIterator isn't the right -solution. Do you also want to define MultiPassBidirectionnalIterator -and MultiPassRandomAccessIterator ? I don't, definitly. It only +

I think that introducing Multi-Pass Input Iterator isn't the right +solution. Do you also want to define Multi-Pass Bidirectionnal Iterator +and Multi-Pass Random Access Iterator ? I don't, definitly. It only confuses the issue. The problem lies into the existing hierarchy of iterators, which mixes movabillity, modifiabillity and lvalue-ness, and these are clearly independant. -

The terms Forward, Bidirectionnal and RandomAccess are about +

The terms Forward, Bidirectionnal and Random Access are about movabillity and shouldn't be used to mean anything else. In a completly orthogonal way, iterators can be immutable, mutable, or neither. Lvalueness of iterators is also orthogonal with -immutabillity. With these clean concepts, your MultiPassInputIterator -is just called a ForwardIterator. +immutabillity. With these clean concepts, your Multi-Pass Input Iterator +is just called a Forward Iterator.

Other translations are:
-std::ForwardIterator -> ForwardIterator & LvalueIterator
-std::BidirectionnalIterator -> BidirectionnalIterator & LvalueIterator
-std::RandomAccessIterator -> RandomAccessIterator & LvalueIterator
+std::Forward Iterator -> ForwardIterator & Lvalue Iterator
+std::Bidirectionnal Iterator -> Bidirectionnal Iterator & Lvalue Iterator
+std::Random Access Iterator -> Random Access Iterator & Lvalue Iterator

Note that in practice the only operation not allowed on my -ForwardIterator which is allowed on std::ForwardIterator is +Forward Iterator which is allowed on std::Forward Iterator is &*it. I think that &* is rarely needed in generic code.

@@ -75,9 +75,9 @@ reply by Jeremy Siek:

The above analysis by Valentin is right on. Of course, there is the problem with backward compatibility. The current STL implementations -are based on the old definition of ForwardIterator. The right course -of action is to get ForwardIterator, etc. changed in the C++ standard. -Once that is done we can drop MultiPassInputIterator. +are based on the old definition of Forward Iterator. The right course +of action is to get Forward Iterator, etc. changed in the C++ standard. +Once that is done we can drop Multi-Pass Input Iterator.