diff --git a/doc/counting_iterator.html b/doc/counting_iterator.html index a3366cd..a098422 100644 --- a/doc/counting_iterator.html +++ b/doc/counting_iterator.html @@ -3,7 +3,7 @@ - + Counting Iterator @@ -276,5 +276,10 @@ indirectly printing out the numbers from 0 to 7

The source code for this example can be found here.

+ + diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 250b781..270976f 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -7,7 +7,7 @@ Iterator Facade and Adaptor - + @@ -25,7 +25,7 @@ Boost Consulting, Indiana University Open Systems Lab, Zephyr Associates, Inc. Date: -2004-01-19 +2004-01-21 Number:This is a revised version of N1530=03-0113, which was accepted for Technical Report 1 by the C++ standard committee's library working group. @@ -505,9 +505,6 @@ iterators to interact in the expected ways (unlike those in most implementations of C++98).
  • transform_iterator, which applies a user-defined function object to the underlying values when dereferenced.
  • -
  • projection_iterator, which is similar to transform_iterator -except that when dereferenced it returns a reference instead of -a value.
  • filter_iterator, which provides a view of an iterator range in which some elements of the underlying range are skipped.
  • @@ -1008,8 +1005,14 @@ operator ==(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.equal(rhs). Otherwise, rhs.equal(lhs). +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).equal((Dr2 const&)rhs).
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).equal((Dr1 const&)lhs).
    +
    + @@ -1024,8 +1027,14 @@ operator !=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -!lhs.equal(rhs). Otherwise, !rhs.equal(lhs). +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    !((Dr1 const&)lhs).equal((Dr2 const&)rhs).
    +
    Otherwise,
    +
    !((Dr2 const&)rhs).equal((Dr1 const&)lhs).
    +
    + @@ -1040,9 +1049,14 @@ operator <(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) < 0. Otherwise, rhs.distance_to(lhs) > -0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) < 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) > 0.
    +
    + @@ -1057,9 +1071,14 @@ operator <=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) <= 0. Otherwise, rhs.distance_to(lhs) ->= 0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) <= 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) >= 0.
    +
    + @@ -1074,9 +1093,14 @@ operator >(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) > 0. Otherwise, -rhs.distance_to(lhs) < 0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) > 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) < 0.
    +
    + @@ -1091,16 +1115,21 @@ operator >=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) >= 0. Otherwise, -rhs.distance_to(lhs) <= 0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) >= 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) <= 0.
    +
    +
     template <class Dr1, class V1, class TC1, class R1, class D1,
               class Dr2, class V2, class TC2, class R2, class D2>
    -typename enable_if_interoperable<Dr1,Dr2,difference_type>::type
    +typename enable_if_interoperable<Dr1,Dr2,difference>::type
     operator -(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs,
                iterator_facade<Dr2,V2,TC2,R2,D2> const& rhs);
     
    @@ -1108,14 +1137,26 @@ operator -(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Return Type:if is_convertible<Dr2,Dr1>::value, then difference_type shall be -iterator_traits<Dr1>::difference_type. Otherwise, -difference_type shall be -iterator_traits<Dr2>::difference_type. +Return Type:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    +
    then
    +
    difference shall be +iterator_traits<Dr1>::difference_type.
    +
    Otherwise
    +
    difference shall be iterator_traits<Dr2>::difference_type
    +
    +
    + -Returns:if is_convertible<Dr2,Dr1>::value, then --lhs.distance_to(rhs). Otherwise, -rhs.distance_to(lhs). +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    -((Dr1 const&)lhs).distance_to((Dr2 const&)rhs).
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs).
    +
    + @@ -1722,7 +1763,9 @@ convertible to input_iterator_tag

    reverse_iterator requirements

    -

    Iterator must be a model of Bidirectional Traversal Iterator.

    +

    Iterator must be a model of Bidirectional Traversal Iterator. The +type iterator_traits<Iterator>::reference must be the type of +*i, where i is an object of type Iterator.

    reverse_iterator models

    @@ -2502,7 +2545,9 @@ public: typedef void pointer; typedef void reference; - explicit function_output_iterator(const UnaryFunction& f = UnaryFunction()); + explicit function_output_iterator(); + + explicit function_output_iterator(const UnaryFunction& f); /* see below */ operator*(); function_output_iterator& operator++(); diff --git a/doc/function_output_iterator.html b/doc/function_output_iterator.html index dc3d12d..e3ea4e8 100644 --- a/doc/function_output_iterator.html +++ b/doc/function_output_iterator.html @@ -3,7 +3,7 @@ - + Function Output Iterator @@ -65,7 +65,9 @@ public: typedef void pointer; typedef void reference; - explicit function_output_iterator(const UnaryFunction& f = UnaryFunction()); + explicit function_output_iterator(); + + explicit function_output_iterator(const UnaryFunction& f); /* see below */ operator*(); function_output_iterator& operator++(); @@ -160,5 +162,10 @@ int main(int, char*[])
    + + diff --git a/doc/iterator_adaptor.html b/doc/iterator_adaptor.html index b105c79..cdc3a5c 100644 --- a/doc/iterator_adaptor.html +++ b/doc/iterator_adaptor.html @@ -3,7 +3,7 @@ - + Iterator Adaptor @@ -436,5 +436,10 @@ adaptor, and also iterator_adaptor's Base type needn't be an iterator.

    + +
    diff --git a/doc/iterator_facade.html b/doc/iterator_facade.html index a3d100e..c7ca000 100644 --- a/doc/iterator_facade.html +++ b/doc/iterator_facade.html @@ -674,8 +674,14 @@ operator ==(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.equal(rhs). Otherwise, rhs.equal(lhs). +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).equal((Dr2 const&)rhs).
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).equal((Dr1 const&)lhs).
    +
    + @@ -690,8 +696,14 @@ operator !=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -!lhs.equal(rhs). Otherwise, !rhs.equal(lhs). +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    !((Dr1 const&)lhs).equal((Dr2 const&)rhs).
    +
    Otherwise,
    +
    !((Dr2 const&)rhs).equal((Dr1 const&)lhs).
    +
    + @@ -706,9 +718,14 @@ operator <(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) < 0. Otherwise, rhs.distance_to(lhs) > -0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) < 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) > 0.
    +
    + @@ -723,9 +740,14 @@ operator <=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) <= 0. Otherwise, rhs.distance_to(lhs) ->= 0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) <= 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) >= 0.
    +
    + @@ -740,9 +762,14 @@ operator >(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) > 0. Otherwise, -rhs.distance_to(lhs) < 0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) > 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) < 0.
    +
    + @@ -757,16 +784,21 @@ operator >=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs) >= 0. Otherwise, -rhs.distance_to(lhs) <= 0. +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    ((Dr1 const&)lhs).distance_to((Dr2 const&)rhs) >= 0.
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs) <= 0.
    +
    +
     template <class Dr1, class V1, class TC1, class R1, class D1,
               class Dr2, class V2, class TC2, class R2, class D2>
    -typename enable_if_interoperable<Dr1,Dr2,difference_type>::type
    +typename enable_if_interoperable<Dr1,Dr2,difference>::type
     operator -(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs,
                iterator_facade<Dr2,V2,TC2,R2,D2> const& rhs);
     
    @@ -774,14 +806,26 @@ operator -(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, -Return Type:if is_convertible<Dr2,Dr1>::value, then difference_type shall be -iterator_traits<Dr1>::difference_type. Otherwise, -difference_type shall be -iterator_traits<Dr2>::difference_type. +Return Type:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    +
    then
    +
    difference shall be +iterator_traits<Dr1>::difference_type.
    +
    Otherwise
    +
    difference shall be iterator_traits<Dr2>::difference_type
    +
    +
    + -Returns:if is_convertible<Dr2,Dr1>::value, then --lhs.distance_to(rhs). Otherwise, -rhs.distance_to(lhs). +Returns:

    if is_convertible<Dr2,Dr1>::value

    +
    +
    then
    +
    -((Dr1 const&)lhs).distance_to((Dr2 const&)rhs).
    +
    Otherwise,
    +
    ((Dr2 const&)rhs).distance_to((Dr1 const&)lhs).
    +
    + diff --git a/doc/reverse_iterator.html b/doc/reverse_iterator.html index acc42cb..a867521 100644 --- a/doc/reverse_iterator.html +++ b/doc/reverse_iterator.html @@ -90,7 +90,9 @@ convertible to input_iterator_tag

    reverse_iterator requirements

    -

    Iterator must be a model of Bidirectional Traversal Iterator.

    +

    Iterator must be a model of Bidirectional Traversal Iterator. The +type iterator_traits<Iterator>::reference must be the type of +*i, where i is an object of type Iterator.

    reverse_iterator models

    diff --git a/doc/transform_iterator.html b/doc/transform_iterator.html index e5a715f..183ddf2 100644 --- a/doc/transform_iterator.html +++ b/doc/transform_iterator.html @@ -3,7 +3,7 @@ - + Transform Iterator @@ -132,12 +132,12 @@ it models the following original iterator concepts depending on what the Iterator argument models.

    --++ - + @@ -318,5 +318,10 @@ adding 4 to each element in the array:

    The source code for this example can be found here.

    + +
    If Iterator modelsthen filter_iterator modelsthen transform_iterator models