diff --git a/doc/counting_iterator.html b/doc/counting_iterator.html index 66a91a9..003bf77 100644 --- a/doc/counting_iterator.html +++ b/doc/counting_iterator.html @@ -142,6 +142,10 @@ tag CategoryOrTraversal. Othe counting_iterator models Random Access Traversal Iterator. Otherwise, counting_iterator models the same iterator traversal concepts modeled by Incrementable.

+

If iterator X is interoperable with iterator Y then +counting_iterator<X,C1,D1> is interoperable with +counting_iterator<Y,C2,D2> if both counting iterators have the +same traversal category and difference type.

counting_iterator operations

@@ -268,7 +272,7 @@ indirectly printing out the numbers from 0 to 7 diff --git a/doc/counting_iterator_ref.rst b/doc/counting_iterator_ref.rst index 833a778..03d7373 100644 --- a/doc/counting_iterator_ref.rst +++ b/doc/counting_iterator_ref.rst @@ -83,6 +83,11 @@ tag ``CategoryOrTraversal``. Otherwise, if Otherwise, ``counting_iterator`` models the same iterator traversal concepts modeled by ``Incrementable``. +If iterator ``X`` is interoperable with iterator ``Y`` then +``counting_iterator`` is interoperable with +``counting_iterator`` if both counting iterators have the +same traversal category and difference type. + ``counting_iterator`` operations diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 7156f62..73af822 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -1540,6 +1540,8 @@ Random Access Traversal Iterator +

If iterator X is interoperable with iterator Y then +reverse_iterator<X> is interoperable with reverse_iterator<Y>.

reverse_iterator operations

@@ -1741,6 +1743,9 @@ the Iterator argument models.<

If transform_iterator models Writable Lvalue Iterator then it is a mutable iterator (as defined in the old iterator requirements).

+

If iterator X is interoperable with iterator Y then +transform_iterator<F1, X, R1, V1> is interoperable with +transform_iterator<F2, Y, R2, V2>.

transform_iterator operations

@@ -1963,6 +1968,9 @@ following tables.

+

If iterator X is interoperable with iterator Y then +filter_iterator<P1, X> is interoperable with +filter_iterator<P2, Y>.

filter_iterator operations

@@ -2161,6 +2169,10 @@ tag CategoryOrTraversal. Othe counting_iterator models Random Access Traversal Iterator. Otherwise, counting_iterator models the same iterator traversal concepts modeled by Incrementable.

+

If iterator X is interoperable with iterator Y then +counting_iterator<X,C1,D1> is interoperable with +counting_iterator<Y,C2,D2> if both counting iterators have the +same traversal category and difference type.

counting_iterator operations

@@ -2332,7 +2344,7 @@ LocalWords: OtherIncrementable Coplien --> diff --git a/doc/filter_iterator.html b/doc/filter_iterator.html index 2c58572..6910645 100644 --- a/doc/filter_iterator.html +++ b/doc/filter_iterator.html @@ -175,6 +175,9 @@ following tables.

+

If iterator X is interoperable with iterator Y then +filter_iterator<P1, X> is interoperable with +filter_iterator<P2, Y>.

filter_iterator operations

@@ -378,7 +381,7 @@ int main() diff --git a/doc/filter_iterator_ref.rst b/doc/filter_iterator_ref.rst index c4bf934..2125765 100644 --- a/doc/filter_iterator_ref.rst +++ b/doc/filter_iterator_ref.rst @@ -87,6 +87,11 @@ following tables. +-------------------------------------------------------+---------------------------------+ +If iterator ``X`` is interoperable with iterator ``Y`` then +``filter_iterator`` is interoperable with +``filter_iterator``. + + ``filter_iterator`` operations .............................. diff --git a/doc/iter-issue-list.rst b/doc/iter-issue-list.rst index 6404592..1aaf6aa 100644 --- a/doc/iter-issue-list.rst +++ b/doc/iter-issue-list.rst @@ -927,11 +927,14 @@ provide rather than how they're implemented. :Proposed resolution: **Needs work** -Remove the specfication of inheritance, and add lots of specification -to make up for it. In iterator_adaptor, that means duplicating a lot of -function prototypes. In the other adaptors, that means making sure we -state what concepts are modeled. Also, we will need an Interoperable -Iterator concept to accomplish this. +Remove the specfication of inheritance, and explicit specification of +all the functionality that was inherited. In iterator_adaptor, that +means adding a lot of function prototypes. In the other adaptors, that +means making sure we state what concepts are modeled, in addition to +specifying the semantics of some core operations. Also, the +Interoperable Iterators concept is added to the new iterator concepts, +and this concept is used in the specification of the iterator +adaptors. I'll start on the work of changing the specification for the specialized adaptors. -Jeremy diff --git a/doc/reverse_iterator.html b/doc/reverse_iterator.html index 60dfba3..69370cc 100644 --- a/doc/reverse_iterator.html +++ b/doc/reverse_iterator.html @@ -127,6 +127,8 @@ Random Access Traversal Iterator +

If iterator X is interoperable with iterator Y then +reverse_iterator<X> is interoperable with reverse_iterator<Y>.

reverse_iterator operations

@@ -269,7 +271,7 @@ sequence in double-reversed (normal) order: hello world! diff --git a/doc/reverse_iterator_ref.rst b/doc/reverse_iterator_ref.rst index 22a1dc5..9306ae9 100644 --- a/doc/reverse_iterator_ref.rst +++ b/doc/reverse_iterator_ref.rst @@ -69,6 +69,11 @@ specified in the following table: +---------------------------------------+-----------------------------------+ +If iterator ``X`` is interoperable with iterator ``Y`` then +``reverse_iterator`` is interoperable with ``reverse_iterator``. + + + ``reverse_iterator`` operations ............................... diff --git a/doc/transform_iterator.html b/doc/transform_iterator.html index f606318..ae37a2f 100644 --- a/doc/transform_iterator.html +++ b/doc/transform_iterator.html @@ -157,6 +157,9 @@ the Iterator argument models.<

If transform_iterator models Writable Lvalue Iterator then it is a mutable iterator (as defined in the old iterator requirements).

+

If iterator X is interoperable with iterator Y then +transform_iterator<F1, X, R1, V1> is interoperable with +transform_iterator<F2, Y, R2, V2>.

transform_iterator operations

@@ -318,7 +321,7 @@ adding 4 to each element in the array: diff --git a/doc/transform_iterator_ref.rst b/doc/transform_iterator_ref.rst index 8fde050..a3e98d4 100644 --- a/doc/transform_iterator_ref.rst +++ b/doc/transform_iterator_ref.rst @@ -102,6 +102,11 @@ the ``Iterator`` argument models. If ``transform_iterator`` models Writable Lvalue Iterator then it is a mutable iterator (as defined in the old iterator requirements). +If iterator ``X`` is interoperable with iterator ``Y`` then +``transform_iterator`` is interoperable with +``transform_iterator``. + + ``transform_iterator`` operations .................................