diff --git a/doc/counting_iterator.html b/doc/counting_iterator.html index 4465a98..6fd0e36 100644 --- a/doc/counting_iterator.html +++ b/doc/counting_iterator.html @@ -3,13 +3,13 @@ - + Counting Iterator - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction Date: 2003-08-05 Copyright: -Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved @@ -140,5 +140,11 @@ object copy constructed from x
+ + diff --git a/doc/counting_iterator.rst b/doc/counting_iterator.rst index d6aedf7..25fb3b3 100644 --- a/doc/counting_iterator.rst +++ b/doc/counting_iterator.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 3750a32..aa0cde4 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -3,13 +3,13 @@ - + Iterator Facade and Adaptor - - + +
@@ -31,7 +31,7 @@ Railway Operation and Construction Number:This document is a revised version of the official N1476=03-0059 Copyright: -Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved @@ -961,15 +961,15 @@ class iterator_adaptor

iterator_adaptor requirements

The Derived template parameter must be a derived class of -iterator_adaptor. The Base type must implement the expressions -involving m_iterator in the specifications of those private member -functions of iterator_adaptor that are not redefined by the -Derived class and that are needed to model the concept -corresponding to the chosen Category according to the requirements -of iterator_facade. The rest of the template parameters specify -the types for the member typedefs in iterator_facade. The -following pseudo-code specifies the traits types for -iterator_adaptor.

+iterator_adaptor. The Base type must implement the +expressions involving m_iterator in the specifications of those +private member functions of iterator_adaptor that are not +redefined by the Derived class and that are needed to model the +concept corresponding to the iterator_adaptor's category +typedef according to the requirements of iterator_facade. The +rest of the template parameters specify the types for the member +typedefs in iterator_facade. The following pseudo-code +specifies the traits types for iterator_adaptor.

 if (Value == use_default)
     value_type = iterator_traits<Base>::value_type;
@@ -991,26 +991,29 @@ else
 
 if (Category == use_default)
     iterator_category = iterator_tag< 
-        access_category< 
-            iterator< iterator_traits<Base>::iterator_category,
-                      Value,
-                      Distance,
-                      Value*,
-                      Reference > >,
-        traversal_category<
-            iterator< iterator_traits<Base>::iterator_category,
-                      Value,
-                      Distance,
-                      Value*,
-                      Reference > >
+        access_category< Base >,
+        traversal_category< Base >
+    >
+else if (Category is an access tag)
+    iterator_category = iterator_tag<
+        Category
+    ...
+
+else if (Category is a traversal tag)
+    ...
 else
     iterator_category = Category;
+    // Actually the above is wrong.  See the use of
+    // access_category_tag and
+    // new_category_to_access/iter_category_to_access.
 
+ iterator_category = Category; + +Fix this up!! -->

iterator_adaptor public operations

@@ -1841,5 +1844,11 @@ LocalWords: OtherIncrementable Coplien -->
+ + diff --git a/doc/facade-and-adaptor.rst b/doc/facade-and-adaptor.rst index a2d0493..e06567b 100644 --- a/doc/facade-and-adaptor.rst +++ b/doc/facade-and-adaptor.rst @@ -9,7 +9,7 @@ Railway Operation and Construction`_ :date: $Date$ :Number: **This document is a revised version of the official** N1476=03-0059 -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/filter_iterator.html b/doc/filter_iterator.html index a0fa47c..4133ae5 100644 --- a/doc/filter_iterator.html +++ b/doc/filter_iterator.html @@ -3,13 +3,13 @@ - +Filter Iterator - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction
- +
Date: 2003-08-05
Copyright:Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
@@ -186,5 +186,11 @@ filter_iterator(
+ + diff --git a/doc/filter_iterator.rst b/doc/filter_iterator.rst index 06a7c5f..acd770e 100644 --- a/doc/filter_iterator.rst +++ b/doc/filter_iterator.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/function_output_iterator.html b/doc/function_output_iterator.html index e3e1ba3..30d4559 100644 --- a/doc/function_output_iterator.html +++ b/doc/function_output_iterator.html @@ -3,13 +3,13 @@ - + Function Output Iterator - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction Date: 2003-08-05 Copyright: -Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved @@ -155,5 +155,11 @@ return *this;
+ + diff --git a/doc/function_output_iterator.rst b/doc/function_output_iterator.rst index 33ea80e..d1740fb 100644 --- a/doc/function_output_iterator.rst +++ b/doc/function_output_iterator.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/index.html b/doc/index.html index 6940f28..37421eb 100755 --- a/doc/index.html +++ b/doc/index.html @@ -3,9 +3,9 @@ - + The Boost Iterator Library Boost - + @@ -177,5 +178,11 @@ LocalWords: incrementable xxx min prev inplace png oldeqnew AccessTag struct LocalWords: TraversalTag typename lvalues DWA Hmm JGS --> + + diff --git a/doc/index.rst b/doc/index.rst index d8961a4..13da6f7 100755 --- a/doc/index.rst +++ b/doc/index.rst @@ -17,7 +17,7 @@ __ ../../../index.htm Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu @@ -37,7 +37,7 @@ __ ../../../index.htm report. The components of the Boost Iterator Library replace the older Boost Iterator Adaptor Library. -.. _concepts: ../../more/generic_programming.html +.. _concepts: ../../../more/generic_programming.html#concept .. contents:: **Table of Contents** @@ -52,16 +52,17 @@ __ ../../../index.htm The iterator categories defined in C++98 are extremely limiting because they bind together two orthogonal concepts: traversal and element access. For example, because a random access iterator is -required to return a reference (and not a proxy) when dereferenced, it -is impossible to capture the capabilities of -``vector::iterator`` using the C++98 categories. The infamous -"``vector`` is not a container, and its iterators aren't random -access iterators", debacle about which Herb Sutter wrote two papers -for the standards comittee (n1185_ and n1211_), and a `Guru of the -Week`__. New-style iterators go well beyond patching up -``vector``, though. There are lots of other iterators already -in use which can't be adequately represented by the existing concepts. -For details about the new iterator concepts, see our +required to return a reference (and not a proxy) when dereferenced, +it is impossible to capture the capabilities of +``vector::iterator`` using the C++98 categories. This is the +infamous "``vector`` is not a container, and its iterators +aren't random access iterators", debacle about which Herb Sutter +wrote two papers for the standards comittee (n1185_ and n1211_), +and a `Guru of the Week`__. New-style iterators go well beyond +patching up ``vector``, though: there are lots of other +iterators already in use which can't be adequately represented by +the existing concepts. For details about the new iterator +concepts, see our .. _n1185: http://www.gotw.ca/publications/N1185.pdf .. _n1211: http://www.gotw.ca/publications/N1211.pdf diff --git a/doc/indirect_iterator.html b/doc/indirect_iterator.html index cff848f..9bbc80b 100644 --- a/doc/indirect_iterator.html +++ b/doc/indirect_iterator.html @@ -3,13 +3,13 @@ - + Indirect Iterator - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction Date: 2003-08-05 Copyright: -Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved @@ -159,5 +159,11 @@ indirect_iterator(
+ + diff --git a/doc/indirect_iterator.rst b/doc/indirect_iterator.rst index 7d19ba2..3ea8dcb 100644 --- a/doc/indirect_iterator.rst +++ b/doc/indirect_iterator.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/iterator_adaptor.html b/doc/iterator_adaptor.html index 641ac85..d34598e 100644 --- a/doc/iterator_adaptor.html +++ b/doc/iterator_adaptor.html @@ -3,13 +3,13 @@ - + Iterator Adaptor - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction Date: 2003-08-05 Copyright: -Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved @@ -146,15 +146,15 @@ class iterator_adaptor

iterator_adaptor requirements

The Derived template parameter must be a derived class of -iterator_adaptor. The Base type must implement the expressions -involving m_iterator in the specifications of those private member -functions of iterator_adaptor that are not redefined by the -Derived class and that are needed to model the concept -corresponding to the chosen Category according to the requirements -of iterator_facade. The rest of the template parameters specify -the types for the member typedefs in iterator_facade. The -following pseudo-code specifies the traits types for -iterator_adaptor.

+iterator_adaptor. The Base type must implement the +expressions involving m_iterator in the specifications of those +private member functions of iterator_adaptor that are not +redefined by the Derived class and that are needed to model the +concept corresponding to the iterator_adaptor's category +typedef according to the requirements of iterator_facade. The +rest of the template parameters specify the types for the member +typedefs in iterator_facade. The following pseudo-code +specifies the traits types for iterator_adaptor.

 if (Value == use_default)
     value_type = iterator_traits<Base>::value_type;
@@ -176,26 +176,29 @@ else
 
 if (Category == use_default)
     iterator_category = iterator_tag< 
-        access_category< 
-            iterator< iterator_traits<Base>::iterator_category,
-                      Value,
-                      Distance,
-                      Value*,
-                      Reference > >,
-        traversal_category<
-            iterator< iterator_traits<Base>::iterator_category,
-                      Value,
-                      Distance,
-                      Value*,
-                      Reference > >
+        access_category< Base >,
+        traversal_category< Base >
+    >
+else if (Category is an access tag)
+    iterator_category = iterator_tag<
+        Category
+    ...
+
+else if (Category is a traversal tag)
+    ...
 else
     iterator_category = Category;
+    // Actually the above is wrong.  See the use of
+    // access_category_tag and
+    // new_category_to_access/iter_category_to_access.
 
+ iterator_category = Category; + +Fix this up!! -->

iterator_adaptor public operations

@@ -322,5 +325,11 @@ typename iterator_adaptor::difference_type distance_to(
+ + diff --git a/doc/iterator_adaptor.rst b/doc/iterator_adaptor.rst index d46f4fd..e64e93a 100644 --- a/doc/iterator_adaptor.rst +++ b/doc/iterator_adaptor.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/iterator_adaptor_ref.rst b/doc/iterator_adaptor_ref.rst index 62c1d78..69c6aa7 100644 --- a/doc/iterator_adaptor_ref.rst +++ b/doc/iterator_adaptor_ref.rst @@ -47,15 +47,15 @@ __ : --------------------------------- The ``Derived`` template parameter must be a derived class of -``iterator_adaptor``. The ``Base`` type must implement the expressions -involving ``m_iterator`` in the specifications of those private member -functions of ``iterator_adaptor`` that are not redefined by the -``Derived`` class and that are needed to model the concept -corresponding to the chosen ``Category`` according to the requirements -of ``iterator_facade``. The rest of the template parameters specify -the types for the member typedefs in ``iterator_facade``. The -following pseudo-code specifies the traits types for -``iterator_adaptor``. +``iterator_adaptor``. The ``Base`` type must implement the +expressions involving ``m_iterator`` in the specifications of those +private member functions of ``iterator_adaptor`` that are not +redefined by the ``Derived`` class and that are needed to model the +concept corresponding to the ``iterator_adaptor``\ 's ``category`` +typedef according to the requirements of ``iterator_facade``. The +rest of the template parameters specify the types for the member +typedefs in ``iterator_facade``. The following pseudo-code +specifies the traits types for ``iterator_adaptor``. :: @@ -79,20 +79,21 @@ following pseudo-code specifies the traits types for if (Category == use_default) iterator_category = iterator_tag< - access_category< - iterator< iterator_traits::iterator_category, - Value, - Distance, - Value*, - Reference > >, - traversal_category< - iterator< iterator_traits::iterator_category, - Value, - Distance, - Value*, - Reference > > + access_category< Base >, + traversal_category< Base > + > + else if (Category is an access tag) + iterator_category = iterator_tag< + Category + ... + + else if (Category is a traversal tag) + ... else iterator_category = Category; + // Actually the above is wrong. See the use of + // access_category_tag and + // new_category_to_access/iter_category_to_access. .. Replaced with new semantics --thw @@ -101,6 +102,7 @@ following pseudo-code specifies the traits types for else iterator_category = Category; + Fix this up!! ``iterator_adaptor`` public operations diff --git a/doc/iterator_facade.html b/doc/iterator_facade.html index 64c6764..84f7e25 100644 --- a/doc/iterator_facade.html +++ b/doc/iterator_facade.html @@ -3,13 +3,13 @@ - +Iterator Facade - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction
- +
Date: 2003-08-05
Copyright:Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
@@ -570,5 +570,11 @@ return tmp -= n; + + diff --git a/doc/iterator_facade.rst b/doc/iterator_facade.rst index 379e942..473d095 100644 --- a/doc/iterator_facade.rst +++ b/doc/iterator_facade.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/new-iter-concepts.html b/doc/new-iter-concepts.html index fd98e5f..8202cf7 100755 --- a/doc/new-iter-concepts.html +++ b/doc/new-iter-concepts.html @@ -3,13 +3,13 @@ - +New Iterator Concepts - - - + + +
@@ -25,11 +25,11 @@
- + - +
Organization: Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction
Date:2003-07-13
2003-08-14
Number:This document is a revised version of the official N1477=03-0060
Copyright:Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
@@ -373,29 +373,39 @@ Equivalent to (*a).m

Writable Iterators [lib.writable.iterators]

A class or built-in type X models the Writable Iterator concept if the following expressions are valid and respect the stated -semantics.

- +semantics. In addition, a model of Writable Iterator must include +in its documentation the set of value types that it allows for +output.

+
+
+++++ + + + + + + + + + + + + + + + + + + +
Writable Iterator Requirements (in addition to CopyConstructible)
ExpressionReturn TypePrecondition
access_category<X>::typeConvertible to +writable_iterator_tag 
*a = o pre: The type of o +is in the set of +value types of X
+

Swappable Iterators [lib.swappable.iterators]

@@ -932,5 +942,11 @@ LocalWords: TraversalTag typename lvalues DWA Hmm JGS -->
+ + diff --git a/doc/new-iter-concepts.rst b/doc/new-iter-concepts.rst index ff39358..a636584 100644 --- a/doc/new-iter-concepts.rst +++ b/doc/new-iter-concepts.rst @@ -7,7 +7,7 @@ :organization: `Boost Consulting`_, Indiana University `Open Systems Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ :Number: **This document is a revised version of the official** N1477=03-0060 -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/permutation_iterator.html b/doc/permutation_iterator.html index 8d74da7..4549786 100644 --- a/doc/permutation_iterator.html +++ b/doc/permutation_iterator.html @@ -3,13 +3,13 @@ - + Permutation Iterator - - + +
@@ -28,7 +28,7 @@ Lab Date: 2003-08-05 Copyright: -Copyright Toon Knapen, Dave Abrahams, Roland Richter, and Jeremy Siek 2003. All rights reserved +Copyright Toon Knapen, David Abrahams, Roland Richter, and Jeremy Siek 2003. All rights reserved @@ -118,5 +118,11 @@ ForwardIterator instead of amortized constant time.

+ + diff --git a/doc/permutation_iterator.rst b/doc/permutation_iterator.rst index 3d75608..d506b78 100644 --- a/doc/permutation_iterator.rst +++ b/doc/permutation_iterator.rst @@ -7,7 +7,7 @@ :organization: `Boost Consulting`_, Indiana University `Open Systems Lab`_ :date: $Date$ -:copyright: Copyright Toon Knapen, Dave Abrahams, Roland Richter, and Jeremy Siek 2003. All rights reserved +:copyright: Copyright Toon Knapen, David Abrahams, Roland Richter, and Jeremy Siek 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/reverse_iterator.html b/doc/reverse_iterator.html index 60d1521..3aba842 100644 --- a/doc/reverse_iterator.html +++ b/doc/reverse_iterator.html @@ -3,13 +3,13 @@ - +Reverse Iterator - - + +
@@ -29,7 +29,7 @@ Railway Operation and Construction
- +
Date: 2003-08-05
Copyright:Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved
@@ -133,5 +133,11 @@ reverse_iterator(
+ + diff --git a/doc/reverse_iterator.rst b/doc/reverse_iterator.rst index 44b9101..5265076 100644 --- a/doc/reverse_iterator.rst +++ b/doc/reverse_iterator.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu diff --git a/doc/transform_iterator.rst b/doc/transform_iterator.rst index 6f8be45..021532d 100644 --- a/doc/transform_iterator.rst +++ b/doc/transform_iterator.rst @@ -8,7 +8,7 @@ Lab`_, University of Hanover `Institute for Transport Railway Operation and Construction`_ :date: $Date$ -:copyright: Copyright Dave Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved +:copyright: Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved .. _`Boost Consulting`: http://www.boost-consulting.com .. _`Open Systems Lab`: http://www.osl.iu.edu