From 0074f50573afc8ce651f6238c988099270e59aba Mon Sep 17 00:00:00 2001
From: Jeremy Siek Iterators play an important role in modern C++ programming. The
iterator is the central abstraction of the algorithms of the Standard
Library, allowing algorithms to be re-used in in a wide variety of
@@ -226,15 +226,15 @@ applies some user-specified function during the dereference of the
iterator. This proposal is purely an addition to the C++ standard library.
However, note that this proposal relies on the proposal for New
Iterator Concepts. This proposal is formulated in terms of the new iterator concepts
as proposed in n1550, since user-defined and especially adapted
iterators suffer from the well known categorization problems that are
@@ -244,7 +244,7 @@ is a direct mapping between new and old categories. This proposal
could be reformulated using this mapping if n1550 was not accepted. The question of iterator interoperability is poorly addressed in the
current standard. There are currently two defect reports that are
concerned with interoperability issues. The Iterator argument shall meet the requirements of Readable
Iterator. The CategoryOrTraversal argument shall be one of the
standard iterator tags or use_default. If CategoryOrTraversal
@@ -1332,7 +1341,7 @@ is not use_default, as implied
default for the value_type member. If CategoryOrTraversal is a standard iterator tag,
indirect_iterator is a model of the iterator concept corresponding
to the tag, otherwise indirect_iterator satisfies the requirements
@@ -1346,7 +1355,7 @@ the Iterator argument. indirect_iterator(); The reverse iterator adaptor flips the direction of a base iterator's
motion. Invoking operator++() moves the base iterator backward and
invoking operator--() moves the base iterator forward. The base Iterator must be a model of Bidirectional Traversal
Iterator and Readable Iterator. reverse_iterator models Bidirectional Traversal Iterator and
Readable Iterator. In addition, reverse_iterator models the same
standard iterator access concepts that the Iterator
argument models. reverse_iterator(); The transform iterator adapts an iterator by applying some function
object to the result of dereferencing the iterator. In other words,
the operator* of the transform iterator first dereferences the
base iterator, passes the result of this to the function object, and
then returns the result. The type UnaryFunction must be Assignable, Copy Constructible, and
the expression f(*i) must be valid where f is an object of
type UnaryFunction, i is an object of type Iterator, and
@@ -1568,7 +1577,7 @@ where the type of f(*i) must b
The type Iterator must at least model Readable Iterator. The resulting transform_iterator models the most refined of the
following options that is also modeled by Iterator. transform_iterator(); The filter iterator adaptor creates a view of an iterator range in
which some elements of the range are skipped over. A predicate
function object controls which elements are skipped. When the
@@ -1677,7 +1686,7 @@ of the underlying range. Therefore the constructor of the filter
iterator takes two iterator parameters: the position for the filtered
iterator and the end of the range. The Predicate argument must be Assignable, Copy Constructible, and
the expression p(x) must be valid where p is an object of type
Predicate, x is an object of type
@@ -1724,7 +1733,7 @@ Iterator and Single Pass Iterator or it shall meet the requirements of
Input Iterator. The concepts that filter_iterator models are dependent on what
concepts the Iterator argument models, as specified in the
following tables. In addition to those operations required by the concepts that
filter_iterator models, filter_iterator provides the following
operations. counting_iterator adapts an arithmetic type, such as int, by
adding an operator* that returns the current value of the object. The Incrementable type must be Default Constructible, Copy
Constructible, and Assignable. The default distance is
an implementation defined signed integral type. counting_iterator models Readable Lvalue Iterator. Furthermore, if you wish to create a counting iterator that is a Forward
Traversal Iterator, then the following expressions must be valid: counting_iterator(); The function output iterator adaptor makes it easier to create custom
output iterators. The adaptor takes a unary function and creates a
model of Output Iterator. Each item assigned to the output iterator is
@@ -2031,7 +2040,7 @@ iterator is that creating a conforming output iterator is non-trivial,
particularly because the proper implementation usually requires a
proxy object. The UnaryFunction must be Assignable, Copy Constructible, and the
expression f(x) must be valid, where f is an object of type
UnaryFunction and x is an object of a type accepted by f.
@@ -2066,7 +2075,7 @@ The resulting function_output_iterator
explicit function_output_iterator(const UnaryFunction& f = UnaryFunction()); output_proxy(UnaryFunction& f);
+
diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html
index ee34d90..2084dd0 100755
--- a/doc/facade-and-adaptor.html
+++ b/doc/facade-and-adaptor.html
@@ -56,82 +56,82 @@ by adapting other iterators.
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
Motivation
+Motivation
Impact on the Standard
+Impact on the Standard
Design
+Design
Iterator Concepts
+Iterator Concepts
Interoperability
+Interoperability
Iterator Facade
+Iterator Facade
Class template indirect_iterator
+Class template indirect_iterator
template <
class Iterator
@@ -1316,7 +1325,7 @@ satisfies the requirements of the concepts modeled by the indirect
iterator as specified in the models section.
indirect_iterator requirements
+indirect_iterator requirements
indirect_iterator models
+indirect_iterator models
indirect_iterator operations
+indirect_iterator operations
Reverse iterator
+Reverse iterator
Class template reverse_iterator
+Class template reverse_iterator
template <class Iterator>
class reverse_iterator
@@ -1433,19 +1442,19 @@ private:
reverse_iterator requirements
+reverse_iterator requirements
reverse_iterator models
+reverse_iterator models
reverse_iterator operations
+reverse_iterator operations
Transform iterator
+Transform iterator
Class template transform_iterator
+Class template transform_iterator
template <class UnaryFunction,
@@ -1559,7 +1568,7 @@ private:
transform_iterator requirements
+transform_iterator requirements
transform_iterator models
+transform_iterator models
@@ -1586,7 +1595,7 @@ concept that is modeled by Iterator
The value_type is remove_cv<remove_reference<reference> >::type.
transform_iterator operations
+transform_iterator operations
Filter iterator
+Filter iterator
Class template filter_iterator
+Class template filter_iterator
template <class Predicate, class Iterator>
class filter_iterator
@@ -1713,7 +1722,7 @@ corresponding to each standard concept modeled by
filter_iterator requirements
+filter_iterator requirements
filter_iterator models
+filter_iterator models
filter_iterator operations
+filter_iterator operations
Counting iterator
+Counting iterator
Class template counting_iterator
+Class template counting_iterator
template <
class Incrementable
@@ -1932,13 +1941,13 @@ the cases when the Incrementable
counting_iterator requirements
+counting_iterator requirements
counting_iterator models
+counting_iterator models
counting_iterator operations
+counting_iterator operations
Function output iterator
+Function output iterator
Class template function_output_iterator
+Class template function_output_iterator
template <class UnaryFunction>
class function_output_iterator {
@@ -2058,7 +2067,7 @@ public:
function_output_iterator requirements
+function_output_iterator requirements
function_output_iterator operations
+function_output_iterator operations
function_output_iterator::output_proxy operations
+function_output_iterator::output_proxy operations
diff --git a/doc/filter_iterator.html b/doc/filter_iterator.html index 0aa7457..4a8139e 100644 --- a/doc/filter_iterator.html +++ b/doc/filter_iterator.html @@ -3,7 +3,7 @@
- +
@@ -108,7 +108,7 @@ Input Iterator.
The concepts that filter_iterator models are dependent on what concepts the Iterator argument models, as specified in the following tables.
-