diff --git a/doc/new-iter-concepts.html b/doc/new-iter-concepts.html index 8202cf7..2bcf044 100755 --- a/doc/new-iter-concepts.html +++ b/doc/new-iter-concepts.html @@ -3,13 +3,13 @@ - + New Iterator Concepts - + - +
@@ -25,7 +25,7 @@ Organization: Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction Date: -2003-08-14 +2003-09-14 Number:This document is a revised version of the official N1477=03-0060 Copyright: @@ -92,7 +92,7 @@ geared towards iterator traversal (hence the category names), while requirements that address value access sneak in at various places. The following table gives a summary of the current value access requirements in the iterator categories.

- +
@@ -326,7 +326,7 @@ for the value type T if the fo respect the stated semantics. U is the type of any specified member of type T.

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

-
+
@@ -413,7 +413,7 @@ value types of X if the following expressions are valid and respect the stated semantics.

-
+
@@ -445,7 +445,7 @@ semantics.

The Readable Lvalue Iterator concept adds the requirement that the reference type be a reference to the value type of the iterator.

-
+
@@ -482,7 +482,7 @@ cv-qualificationreference type be a non-const reference to the value type of the iterator.

-
+
@@ -518,7 +518,7 @@ type X,
-
+
@@ -555,7 +555,7 @@ semantics.

concept if the following expressions are valid and respect the stated semantics.

-
+
@@ -600,7 +600,7 @@ its domain concept if the following expressions are valid and respect the stated semantics.

-
+
@@ -646,7 +646,7 @@ the distance between iterators Iterator concept if the following expressions are valid and respect the stated semantics.

-
+
@@ -690,7 +690,7 @@ the stated semantics. In the table below, iterator_traits<X>::difference_type and n represents a constant object of type Distance.

-
+
@@ -817,7 +817,8 @@ struct readable_writable_iterator_tag : virtual readable_iterator_tag , virtual writable_iterator_tag , virtual swappable_iterator_tag { }; -struct readable_lvalue_iterator_tag { }; +struct readable_lvalue_iterator_tag + : virtual readable_iterator_tag { }; struct writable_lvalue_iterator_tag : virtual public readable_writable_iterator_tag , virtual public readable_lvalue_iterator_tag { }; @@ -836,7 +837,7 @@ struct input_output_iterator_tag : input_iterator_tag, output_iterator_tag {};

Addition to [lib.iterator.traits]

The iterator_tag class template is an iterator category tag that encodes the access and traversal tags in addition to being compatible -with the original iterator tags. The iterator_tag class inherits +with the original iterator tags. The iterator_tag class inherits from one of the original iterator tags according to the following pseudo-code.

@@ -869,6 +870,12 @@ inherit-category(access-tag, traversal-tag) =
      else
          return null_category_tag;
 
+

If the argument for the template parameter AccessTag is not +convertible to one or more of: readable_iterator_tag, +writable_iterator_tag, swappable_iterator_tag, or if the +argument for TraversalTag is not convertible to +incrementable_iterator_tag then the behavior of iterator_tag +is not defined.

The access_category and traversal_category class templates are traits classes. For iterators whose iterator_traits<Iter>::iterator_category type is iterator_tag, @@ -942,11 +949,5 @@ LocalWords: TraversalTag typename lvalues DWA Hmm JGS --> -

- diff --git a/doc/new-iter-concepts.rst b/doc/new-iter-concepts.rst index a636584..e721c3a 100644 --- a/doc/new-iter-concepts.rst +++ b/doc/new-iter-concepts.rst @@ -625,7 +625,8 @@ Addition to [lib.iterator.synopsis] : virtual readable_iterator_tag , virtual writable_iterator_tag , virtual swappable_iterator_tag { }; - struct readable_lvalue_iterator_tag { }; + struct readable_lvalue_iterator_tag + : virtual readable_iterator_tag { }; struct writable_lvalue_iterator_tag : virtual public readable_writable_iterator_tag , virtual public readable_lvalue_iterator_tag { }; @@ -644,7 +645,7 @@ Addition to [lib.iterator.traits] The ``iterator_tag`` class template is an iterator category tag that encodes the access and traversal tags in addition to being compatible -with the original iterator tags. The ``iterator_tag`` class inherits +with the original iterator tags. The ``iterator_tag`` class inherits from one of the original iterator tags according to the following pseudo-code. @@ -679,6 +680,12 @@ pseudo-code. else return null_category_tag; +If the argument for the template parameter ``AccessTag`` is not +convertible to one or more of: ``readable_iterator_tag``, +``writable_iterator_tag``, ``swappable_iterator_tag``, or if the +argument for ``TraversalTag`` is not convertible to +``incrementable_iterator_tag`` then the behavior of ``iterator_tag`` +is not defined. The ``access_category`` and ``traversal_category`` class templates are traits classes. For iterators whose