diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 44ae1dc..dab0bfc 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -75,14 +75,12 @@ by adapting other iterators.
Iterator facade uses the Curiously Recurring Template Pattern (CRTP) -[Cop95] so that the user can specify the behavior of -iterator_facade in a derived class. Former designs used policy -objects to specify the behavior. iterator_facade does not use policy -objects for several reasons:
+Iterator facade uses the Curiously Recurring Template +Pattern (CRTP) [Cop95] so that the user can specify the behavior +of iterator_facade in a derived class. Former designs used +policy objects to specify the behavior, but that approach was +discarded for several reasons:
- the creation and eventual copying of the policy object may create @@ -299,9 +297,11 @@ on the created iterator types, an essential feature if iterator_facade should be used in other library implementations.
- Without the use of CRTP, the standard requirement that an -iterator's operator++ returns the iterator type itself means -that all iterators generated by iterator_facade would be -specializations of iterator_facade. Cumbersome type generator +iterator's operator++ returns the iterator type itself +would mean that all iterators built with the library would +have to be specializations of iterator_facade<...>, rather +than something more descriptive like +indirect_iterator<T*>. Cumbersome type generator metafunctions would be needed to build new parameterized iterators, and a separate iterator_adaptor layer would be impossible.
@@ -437,9 +437,10 @@ is a class, however, it must still be possible to access members through operator->. Therefore, an iterator whose reference type is not in fact a reference must return a proxy containing a copy of the referenced value from its operator->. -The return type for operator-> and operator[] is not -explicitly specified. Instead it requires each iterator_facade -specialization to meet the requirements of its iterator_category.
+The return types for iterator_facade's operator-> and +operator[] are not explicitly specified. Instead, those types +are described in terms of a set of requirements, which must be +satisfied by the iterator_facade implementation.
-
@@ -707,8 +708,9 @@ struct enable_if_interoperable > {}; + -iterator_facade Requirements
+iterator_facade Requirements
The following table describes the typical valid expressions on iterator_facade's Derived parameter, depending on the iterator concept(s) it will model. The operations in the first @@ -789,7 +791,7 @@ Iterator
-iterator_facade iterator category
+iterator_facade iterator category
The iterator_category member of iterator_facade<X,V,R,C,D> is a type which satisfies the following conditions:
@@ -842,7 +844,7 @@ convertible, and not to any more-derived traversal tag type.-iterator_facade operations
+iterator_facade operations
The operations in this section are described in terms of operations on the core interface of Derived which may be inaccessible (i.e. private). The implementation should access these operations @@ -983,7 +985,6 @@ return tmp -= n;