diff --git a/doc/counting_iterator.html b/doc/counting_iterator.html index 9e5b105..5ed9298 100644 --- a/doc/counting_iterator.html +++ b/doc/counting_iterator.html @@ -81,7 +81,7 @@ class counting_iterator counting_iterator(); counting_iterator(counting_iterator const& rhs); explicit counting_iterator(Incrementable x); - Incrementable base() const; + Incrementable const& base() const; reference operator*() const; counting_iterator& operator++(); counting_iterator& operator--(); @@ -105,9 +105,12 @@ else iterator_traversal<Incrementable>::type, Incrementable, const Incrementable&) -

[Note: implementers are encouraged to provide an implementation -of operator- and a default difference_type that avoid -overflows when Incrementable is a numeric type.]

+
+
[Note: implementers are encouraged to provide an implementation of
+
operator- and a difference_type that avoids overflows in +the cases where std::numeric_limits<Incrementable>::is_specialized +is true.]
+

counting_iterator requirements

@@ -216,7 +219,7 @@ operations.

-

Incrementable base() const;

+

Incrementable const& base() const;

diff --git a/doc/counting_iterator_ref.rst b/doc/counting_iterator_ref.rst index 91e78e3..6af2358 100644 --- a/doc/counting_iterator_ref.rst +++ b/doc/counting_iterator_ref.rst @@ -17,7 +17,7 @@ counting_iterator(); counting_iterator(counting_iterator const& rhs); explicit counting_iterator(Incrementable x); - Incrementable base() const; + Incrementable const& base() const; reference operator*() const; counting_iterator& operator++(); counting_iterator& operator--(); @@ -140,6 +140,6 @@ operations. :Returns: ``*this`` -``Incrementable base() const;`` +``Incrementable const& base() const;`` :Returns: ``m_inc`` diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index bb8d52e..4d2a597 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -1158,13 +1158,13 @@ template < , class Difference = use_default > class iterator_adaptor - : public iterator_facade<Derived, V, C, R, D> // see details + : public iterator_facade<Derived, V', C', R', D'> // see details { friend class iterator_core_access; public: iterator_adaptor(); explicit iterator_adaptor(Base iter); - Base const base() const; + Base const const& base() const; protected: Base const& base_reference() const; Base& base_reference(); @@ -1193,27 +1193,27 @@ class iterator_adaptor

iterator_adaptor requirements

-

The Derived template argument must be a publicly derived from -iterator_adaptor.

-

The Base argument shall be Assignable and Copy Constructible.

+

The Base argument shall be Assignable and Copy +Constructible. In addition, +static_cast<Derived*>(iterator_adaptor*) shall be well-formed.

iterator_adaptor base class parameters

-

The V, C, R, and D parameters of the iterator_facade +

The V', C', R', and D' parameters of the iterator_facade used as a base class in the summary of iterator_adaptor above are defined as follows:

-V = if (Value is use_default)
+V' = if (Value is use_default)
           return iterator_traits<Base>::value_type
       else
           return Value
 
-C = if (CategoryOrTraversal is use_default)
+C' = if (CategoryOrTraversal is use_default)
           return iterator_traversal<Base>::type
       else
           return CategoryOrTraversal
 
-R = if (Reference is use_default)
+R' = if (Reference is use_default)
           if (Value is use_default)
               return iterator_traits<Base>::reference
           else
@@ -1221,7 +1221,7 @@ above are defined as follows:

else return Reference -D = if (Difference is use_default) +D' = if (Difference is use_default) return iterator_traits<Base>::difference_type else return Difference @@ -1261,7 +1261,7 @@ expression involving Derived i
-

Base const base() const;

+

Base const& base() const;

@@ -1270,10 +1270,6 @@ expression involving Derived i
-

[Note: specifying Base const gives implementations license to -return Base const& for efficiency's sake. If base() -returned just Base, it would be possible to call non-const -member functions on the result object directly]

iterator_adaptor protected member functions

@@ -1516,7 +1512,7 @@ class indirect_iterator , typename enable_if_convertible<Iterator2, Iterator>::type* = 0 // exposition ); - Iterator base() const; + Iterator const& base() const; reference operator*() const; indirect_iterator& operator++(); indirect_iterator& operator--(); @@ -1552,11 +1548,11 @@ else typedef Difference difference_type; if (CategoryOrTraversal is use_default) - typedef iterator-category( + typedef iterator-category ( iterator_traversal<Iterator>::type,``reference``,``value_type`` ) iterator_category; else - typedef iterator-category( + typedef iterator-category ( CategoryOrTraversal,``reference``,``value_type`` ) iterator_category; @@ -1646,7 +1642,7 @@ indirect_iterator( -

Iterator base() const;

+

Iterator const& base() const;

@@ -1713,7 +1709,7 @@ public: reverse_iterator<OtherIterator> const& r , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 // exposition ); - Iterator base() const; + Iterator const& base() const; reference operator*() const; reverse_iterator& operator++(); reverse_iterator& operator--(); @@ -1816,7 +1812,7 @@ reverse_iterator(
-

Iterator base() const;

+

Iterator const& base() const;

@@ -1893,8 +1889,8 @@ public: , typename enable_if_convertible<I2, Iterator>::type* = 0 // exposition only , typename enable_if_convertible<F2, UnaryFunction>::type* = 0 // exposition only ); - Iterator base() const; UnaryFunction functor() const; + Iterator const& base() const; reference operator*() const; transform_iterator& operator++(); transform_iterator& operator--(); @@ -1932,7 +1928,7 @@ where the type of f(*i) must b

transform_iterator models

The resulting transform_iterator models the most refined of the -following options that is also modeled by Iterator.

+following that is also modeled by Iterator.

  • Writable Lvalue Iterator if transform_iterator::reference is a non-const reference.
  • @@ -2018,15 +2014,6 @@ transform_iterator(
-

Iterator base() const;

- --- - - - -
Returns:m_iterator

UnaryFunction functor() const;

@@ -2036,6 +2023,15 @@ transform_iterator(
+

Iterator const& base() const;

+ +++ + + + +
Returns:m_iterator

reference operator*() const;

@@ -2108,7 +2104,7 @@ class filter_iterator ); Predicate predicate() const; Iterator end() const; - Iterator base() const; + Iterator const& base() const; reference operator*() const; filter_iterator& operator++(); private: @@ -2282,7 +2278,7 @@ filter_iterator(
-

Iterator base() const;

+

Iterator const& base() const;

@@ -2340,7 +2336,7 @@ class counting_iterator counting_iterator(); counting_iterator(counting_iterator const& rhs); explicit counting_iterator(Incrementable x); - Incrementable base() const; + Incrementable const& base() const; reference operator*() const; counting_iterator& operator++(); counting_iterator& operator--(); @@ -2364,9 +2360,12 @@ else iterator_traversal<Incrementable>::type, Incrementable, const Incrementable&) -

[Note: implementers are encouraged to provide an implementation -of operator- and a default difference_type that avoid -overflows when Incrementable is a numeric type.]

+
+
[Note: implementers are encouraged to provide an implementation of
+
operator- and a difference_type that avoids overflows in +the cases where std::numeric_limits<Incrementable>::is_specialized +is true.]
+

counting_iterator requirements

@@ -2475,7 +2474,7 @@ operations.

-

Incrementable base() const;

+

Incrementable const& base() const;

diff --git a/doc/filter_iterator.html b/doc/filter_iterator.html index 4449469..1d498d3 100644 --- a/doc/filter_iterator.html +++ b/doc/filter_iterator.html @@ -86,7 +86,7 @@ class filter_iterator ); Predicate predicate() const; Iterator end() const; - Iterator base() const; + Iterator const& base() const; reference operator*() const; filter_iterator& operator++(); private: @@ -260,7 +260,7 @@ filter_iterator(
-

Iterator base() const;

+

Iterator const& base() const;

diff --git a/doc/filter_iterator_ref.rst b/doc/filter_iterator_ref.rst index 3f77471..e00e41d 100644 --- a/doc/filter_iterator_ref.rst +++ b/doc/filter_iterator_ref.rst @@ -25,7 +25,7 @@ ); Predicate predicate() const; Iterator end() const; - Iterator base() const; + Iterator const& base() const; reference operator*() const; filter_iterator& operator++(); private: @@ -151,7 +151,7 @@ operations. :Returns: ``m_end`` -``Iterator base() const;`` +``Iterator const& base() const;`` :Returns: ``m_iterator`` diff --git a/doc/index.html b/doc/index.html index 9fdf0b4..06d9033 100755 --- a/doc/index.html +++ b/doc/index.html @@ -17,11 +17,10 @@ - + +Lab, Zephyr Associates, Inc. @@ -92,7 +91,7 @@ concepts, see our

up often. In order to ease the implementation of new iterators, the Boost.Iterator library provides the iterator_facade class template, which implements many useful defaults and compile-time checks -designed to help the author iterator ensure that his iterator is +designed to help the iterator author ensure that his iterator is correct.

It is also common to define a new iterator that is similar to some underlying iterator or iterator-like type, but that modifies some diff --git a/doc/indirect_iterator.html b/doc/indirect_iterator.html index 8cf1bbb..cee3771 100644 --- a/doc/indirect_iterator.html +++ b/doc/indirect_iterator.html @@ -90,7 +90,7 @@ class indirect_iterator , typename enable_if_convertible<Iterator2, Iterator>::type* = 0 // exposition ); - Iterator base() const; + Iterator const& base() const; reference operator*() const; indirect_iterator& operator++(); indirect_iterator& operator--(); @@ -126,11 +126,11 @@ else typedef Difference difference_type; if (CategoryOrTraversal is use_default) - typedef iterator-category( + typedef iterator-category ( iterator_traversal<Iterator>::type,``reference``,``value_type`` ) iterator_category; else - typedef iterator-category( + typedef iterator-category ( CategoryOrTraversal,``reference``,``value_type`` ) iterator_category; @@ -220,7 +220,7 @@ indirect_iterator(

Authors:David Abrahams, Jeremy Siek, Thomas Witt
Contact:dave@boost-consulting.com, jsiek@osl.iu.edu, witt@ive.uni-hannover.de
Contact:dave@boost-consulting.com, jsiek@osl.iu.edu, witt@styleadvisor.com
organizations:Boost Consulting, Indiana University Open Systems -Lab, University of Hanover Institute for Transport -Railway Operation and Construction
date:$Date$
-

Iterator base() const;

+

Iterator const& base() const;

diff --git a/doc/indirect_iterator_ref.diff b/doc/indirect_iterator_ref.diff index 90749a4..0c1bf5c 100644 --- a/doc/indirect_iterator_ref.diff +++ b/doc/indirect_iterator_ref.diff @@ -63,7 +63,7 @@ Issue 9.37x - return **this->base(); - } + -+ Iterator base() const; ++ Iterator const& base() const; + reference operator*() const; + indirect_iterator& operator++(); + indirect_iterator& operator--(); @@ -223,7 +223,7 @@ Issue 9.29 Issue 9.37x -+``Iterator base() const;`` ++``Iterator const& base() const;`` +:Returns: ``m_iterator`` + diff --git a/doc/indirect_iterator_ref.rst b/doc/indirect_iterator_ref.rst index 8b844bc..8dd78bb 100644 --- a/doc/indirect_iterator_ref.rst +++ b/doc/indirect_iterator_ref.rst @@ -30,7 +30,7 @@ , typename enable_if_convertible::type* = 0 // exposition ); - Iterator base() const; + Iterator const& base() const; reference operator*() const; indirect_iterator& operator++(); indirect_iterator& operator--(); @@ -155,7 +155,7 @@ following operations. ``m_iterator`` subobject is constructed from ``y.base()``. -``Iterator base() const;`` +``Iterator const& base() const;`` :Returns: ``m_iterator`` diff --git a/doc/iter-issue-list.rst b/doc/iter-issue-list.rst index fa2e195..1162920 100644 --- a/doc/iter-issue-list.rst +++ b/doc/iter-issue-list.rst @@ -996,7 +996,7 @@ provide rather than how they're implemented. to:: - Iterator base() const; + Iterator const& base() const; reference operator*() const; indirect_iterator& operator++(); indirect_iterator& operator--(); @@ -1068,7 +1068,7 @@ provide rather than how they're implemented. After ``UnaryFunction functor() const;`` add:: - Iterator base() const; + Iterator const& base() const; reference operator*() const; transform_iterator& operator++(); transform_iterator& operator--(); @@ -1173,7 +1173,7 @@ provide rather than how they're implemented. After the entry for ``functor()``, add:: - ``Iterator base() const;`` + ``Iterator const& base() const;`` :Returns: ``m_iterator`` @@ -1447,4 +1447,6 @@ specification :Proposed resolution: add "from" before "making" +9.46y N1530: ``base()`` +===================================================== diff --git a/doc/iterator_adaptor.html b/doc/iterator_adaptor.html index 020a4ba..1481a83 100644 --- a/doc/iterator_adaptor.html +++ b/doc/iterator_adaptor.html @@ -127,13 +127,13 @@ template < , class Difference = use_default > class iterator_adaptor - : public iterator_facade<Derived, V, C, R, D> // see details + : public iterator_facade<Derived, V', C', R', D'> // see details { friend class iterator_core_access; public: iterator_adaptor(); explicit iterator_adaptor(Base iter); - Base const base() const; + Base const const& base() const; protected: Base const& base_reference() const; Base& base_reference(); @@ -161,27 +161,27 @@ class iterator_adaptor

iterator_adaptor requirements

-

The Derived template argument must be a publicly derived from -iterator_adaptor.

-

The Base argument shall be Assignable and Copy Constructible.

+

The Base argument shall be Assignable and Copy +Constructible. In addition, +static_cast<Derived*>(iterator_adaptor*) shall be well-formed.

iterator_adaptor base class parameters

-

The V, C, R, and D parameters of the iterator_facade +

The V', C', R', and D' parameters of the iterator_facade used as a base class in the summary of iterator_adaptor above are defined as follows:

-V = if (Value is use_default)
+V' = if (Value is use_default)
           return iterator_traits<Base>::value_type
       else
           return Value
 
-C = if (CategoryOrTraversal is use_default)
+C' = if (CategoryOrTraversal is use_default)
           return iterator_traversal<Base>::type
       else
           return CategoryOrTraversal
 
-R = if (Reference is use_default)
+R' = if (Reference is use_default)
           if (Value is use_default)
               return iterator_traits<Base>::reference
           else
@@ -189,7 +189,7 @@ above are defined as follows:

else return Reference -D = if (Difference is use_default) +D' = if (Difference is use_default) return iterator_traits<Base>::difference_type else return Difference @@ -229,7 +229,7 @@ expression involving Derived i
-

Base const base() const;

+

Base const& base() const;

@@ -238,10 +238,6 @@ expression involving Derived i
-

[Note: specifying Base const gives implementations license to -return Base const& for efficiency's sake. If base() -returned just Base, it would be possible to call non-const -member functions on the result object directly]

iterator_adaptor protected member functions

diff --git a/doc/iterator_adaptor_ref.rst b/doc/iterator_adaptor_ref.rst index cc643d3..c15287e 100644 --- a/doc/iterator_adaptor_ref.rst +++ b/doc/iterator_adaptor_ref.rst @@ -15,13 +15,13 @@ , class Difference = use_default > class iterator_adaptor - : public iterator_facade // see details__ + : public iterator_facade // see details__ { friend class iterator_core_access; public: iterator_adaptor(); explicit iterator_adaptor(Base iter); - Base const base() const; + Base const const& base() const; protected: Base const& base_reference() const; Base& base_reference(); @@ -47,18 +47,16 @@ Base m_iterator; // exposition only }; - -__ requirements_ +__ base_parameters_ .. _requirements: ``iterator_adaptor`` requirements --------------------------------- -The ``Derived`` template argument must be a publicly derived from -``iterator_adaptor``. - -The ``Base`` argument shall be Assignable and Copy Constructible. +The ``Base`` argument shall be Assignable and Copy +Constructible. In addition, +``static_cast(iterator_adaptor*)`` shall be well-formed. .. _base_parameters: @@ -66,23 +64,23 @@ The ``Base`` argument shall be Assignable and Copy Constructible. ``iterator_adaptor`` base class parameters ------------------------------------------ -The *V*, *C*, *R*, and *D* parameters of the ``iterator_facade`` +The *V'*, *C'*, *R'*, and *D'* parameters of the ``iterator_facade`` used as a base class in the summary of ``iterator_adaptor`` above are defined as follows: .. parsed-literal:: - *V* = if (Value is use_default) + *V'* = if (Value is use_default) return iterator_traits::value_type else return Value - *C* = if (CategoryOrTraversal is use_default) + *C'* = if (CategoryOrTraversal is use_default) return iterator_traversal::type else return CategoryOrTraversal - *R* = if (Reference is use_default) + *R'* = if (Reference is use_default) if (Value is use_default) return iterator_traits::reference else @@ -90,7 +88,7 @@ above are defined as follows: else return Reference - *D* = if (Difference is use_default) + *D'* = if (Difference is use_default) return iterator_traits::difference_type else return Difference @@ -122,15 +120,10 @@ expression involving ``Derived`` in those concepts' requirements. :Returns: An instance of ``iterator_adaptor`` with ``m_iterator`` copy constructed from ``iter``. -``Base const base() const;`` +``Base const& base() const;`` :Returns: ``m_iterator`` -[Note: specifying ``Base const`` gives implementations license to -return ``Base const&`` for efficiency's sake. If ``base()`` -returned just ``Base``, it would be possible to call non-``const`` -member functions on the result object directly] - ``iterator_adaptor`` protected member functions ----------------------------------------------- diff --git a/doc/iterator_facade.html b/doc/iterator_facade.html index d607f4d..7e7be4b 100644 --- a/doc/iterator_facade.html +++ b/doc/iterator_facade.html @@ -408,7 +408,7 @@ traversal tags would add no information]

The enable_if_interoperable template used above is for exposition -purposes. The member operators should be only be in an overload set +purposes. The member operators should only be in an overload set provided the derived types Dr1 and Dr2 are interoperable, meaning that at least one of the types is convertible to the other. The enable_if_interoperable approach uses SFINAE to take the operators @@ -785,7 +785,7 @@ operator -(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, Returns:if is_convertible<Dr2,Dr1>::value, then -lhs.distance_to(rhs). Otherwise, --rhs.distance_to(lhs). +rhs.distance_to(lhs). diff --git a/doc/new-iter-concepts.html b/doc/new-iter-concepts.html index e7dc9ae..6b063fc 100755 --- a/doc/new-iter-concepts.html +++ b/doc/new-iter-concepts.html @@ -6,8 +6,8 @@ New Iterator Concepts - - + + @@ -21,13 +21,12 @@ Author: David Abrahams, Jeremy Siek, Thomas Witt Contact: -dave@boost-consulting.com, jsiek@osl.iu.edu, witt@acm.org +dave@boost-consulting.com, jsiek@osl.iu.edu, witt@styleadvisor.com Organization: -Boost Consulting, Indiana University Open -Systems Lab, University of Hanover Institute for -Transport Railway Operation and Construction +Boost Consulting, Indiana University Open Systems +Lab, Zephyr Associates, Inc. Date: -2004-01-15 +2004-01-18 Number:This is a revised version of n1550=03-0133, which was accepted for Technical Report 1 by the C++ standard committee's library working group. This proposal is a @@ -190,11 +189,6 @@ made it). -DWA --> standards conforming input iterator is allowed to have a tag that is not input_iterator_tag but that is convertible to input_iterator_tag? -JGS --> -

Note that as currently specified, istreambuf_iterator doesn't -meet the Readable Iterator requirements because its value_type -is not convertible to its reference type. We believe this to -be a defect in the standard; it should be fixed by changing its -reference type from value_type& to value_type const&.

Possible (but not proposed) Changes to the Working Paper

The extensions in this paper suggest several changes we might make diff --git a/doc/permutation_iterator.html b/doc/permutation_iterator.html index 21fc381..456940a 100644 --- a/doc/permutation_iterator.html +++ b/doc/permutation_iterator.html @@ -97,9 +97,9 @@ public: ); reference operator*() const; permutation_iterator& operator++(); - ElementIterator base() const; + ElementIterator const& base() const; private: - ElementIterator m_iterator; // exposition only + ElementIterator m_elt; // exposition only IndexIterator m_order; // exposition only }; @@ -131,9 +131,10 @@ as IndexIterator and the same

If IndexIterator models Random Access Traversal Iterator and ElementIterator models Readable Lvalue Iterator then permutation_iterator models Random Access Iterator.

-

permutation_iterator<X, I1, V1, C2, R1, D1> is interoperable -with permutation_iterator<Y, I2, V2, C2, R2, D2> if and only if -X is interoperable with Y.

+

permutation_iterator<E1, X, V1, C2, R1, D1> is interoperable +with permutation_iterator<E2, Y, V2, C2, R2, D2> if and only if +X is interoperable with Y and E1 is convertible +to E2.

permutation_iterator operations

@@ -145,7 +146,7 @@ following operations.

-Effects:Default constructs m_iterator and m_order. +Effects:Default constructs m_elt and m_order. @@ -154,7 +155,7 @@ following operations.

-Effects:Constructs m_iterator from x and m_order from y. +Effects:Constructs m_elt from x and m_order from y. @@ -170,7 +171,7 @@ permutation_iterator( -Effects:Constructs m_iterator from r.m_iterator and +Effects:Constructs m_elt from r.m_elt and m_order from y.m_order. @@ -180,7 +181,7 @@ permutation_iterator( -Returns:*(m_iterator + *m_order) +Returns:*(m_elt + *m_order) @@ -195,12 +196,12 @@ permutation_iterator( -

ElementIterator base() const;

+

ElementIterator const& base() const;

- +
Returns:m_iterator
Returns:m_order
diff --git a/doc/permutation_iterator_ref.rst b/doc/permutation_iterator_ref.rst index 369ee45..c29f285 100644 --- a/doc/permutation_iterator_ref.rst +++ b/doc/permutation_iterator_ref.rst @@ -20,7 +20,7 @@ ); reference operator*() const; permutation_iterator& operator++(); - ElementIterator base() const; + ElementIterator const& base() const; private: ElementIterator m_elt; // exposition only IndexIterator m_order; // exposition only @@ -111,7 +111,7 @@ following operations. :Returns: ``*this`` -``ElementIterator base() const;`` +``ElementIterator const& base() const;`` :Returns: ``m_order`` diff --git a/doc/reverse_iterator.html b/doc/reverse_iterator.html index f696d42..6f9c4c5 100644 --- a/doc/reverse_iterator.html +++ b/doc/reverse_iterator.html @@ -72,7 +72,7 @@ public: reverse_iterator<OtherIterator> const& r , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 // exposition ); - Iterator base() const; + Iterator const& base() const; reference operator*() const; reverse_iterator& operator++(); reverse_iterator& operator--(); @@ -175,7 +175,7 @@ reverse_iterator( -

Iterator base() const;

+

Iterator const& base() const;

diff --git a/doc/reverse_iterator_ref.rst b/doc/reverse_iterator_ref.rst index 3a2ee45..7b32886 100644 --- a/doc/reverse_iterator_ref.rst +++ b/doc/reverse_iterator_ref.rst @@ -18,7 +18,7 @@ reverse_iterator const& r , typename enable_if_convertible::type* = 0 // exposition ); - Iterator base() const; + Iterator const& base() const; reference operator*() const; reverse_iterator& operator++(); reverse_iterator& operator--(); @@ -108,7 +108,7 @@ operations. -``Iterator base() const;`` +``Iterator const& base() const;`` :Returns: ``m_iterator`` diff --git a/doc/transform_iterator_ref.diff b/doc/transform_iterator_ref.diff index 7b983d1..0f2d704 100644 --- a/doc/transform_iterator_ref.diff +++ b/doc/transform_iterator_ref.diff @@ -48,7 +48,7 @@ Issue 9.43x Issues 9.37x and 9.12 -+ Iterator base() const; ++ Iterator const& base() const; + reference operator*() const; + transform_iterator& operator++(); + transform_iterator& operator--(); @@ -170,7 +170,7 @@ Issue 9.37x. :Requires: ``OtherIterator`` is implicitly convertible to ``Iterator``. + -+``Iterator base() const;`` ++``Iterator const& base() const;`` + +:Returns: ``m_iterator`` + diff --git a/doc/transform_iterator_ref.rst b/doc/transform_iterator_ref.rst index 3c31ee4..c2fdc18 100644 --- a/doc/transform_iterator_ref.rst +++ b/doc/transform_iterator_ref.rst @@ -25,7 +25,7 @@ , typename enable_if_convertible::type* = 0 // exposition only ); UnaryFunction functor() const; - Iterator base() const; + Iterator const& base() const; reference operator*() const; transform_iterator& operator++(); transform_iterator& operator--(); @@ -145,7 +145,7 @@ operations. :Returns: ``m_f`` -``Iterator base() const;`` +``Iterator const& base() const;`` :Returns: ``m_iterator``