From ac0c6461fb831a9185d07ac849acd7cbc66e6016 Mon Sep 17 00:00:00 2001
From: Jeremy Siek
The iterator_tag class template is derived from the appropriate -iterator tag or tags from the old requirements based on the new-style -tags passed as template parameters. The algorithm for determining the -old tag or tags from the new tags picks the least-refined old concepts -that include all of the requirements of the access and traversal -concepts (that is, the closest fit), if any such category exists. For -example, the category tag for a Readable Single Pass Iterator will -always be derived from input_iterator_tag, while the category tag -for a Single Pass Iterator that is both Readable and Writable will be -derived from both input_iterator_tag and output_iterator_tag.
+iterator tag or tags from the old requirements based on the access +bits and traversal tag passed as template parameters. The algorithm +for determining the old tag or tags picks the least-refined old +concepts that include all of the requirements of the access and +traversal concepts (that is, the closest fit), if any such category +exists. For example, the category tag for a Readable Single Pass +Iterator will always be derived from input_iterator_tag, while the +category tag for a Single Pass Iterator that is both Readable and +Writable will be derived from both input_iterator_tag and +output_iterator_tag.We also provide several helper classes that make it convenient to obtain the access and traversal characteristics of an iterator. These helper classes work both for iterators whose iterator_category is diff --git a/doc/new-iter-concepts.rst b/doc/new-iter-concepts.rst index 44642f7..a92d11a 100644 --- a/doc/new-iter-concepts.rst +++ b/doc/new-iter-concepts.rst @@ -283,16 +283,16 @@ class. The ``lvalue_iterator`` bit is not recorded in the ``iterator_tag::access`` data member. The ``iterator_tag`` class template is derived from the appropriate -iterator tag or tags from the old requirements based on the new-style -tags passed as template parameters. The algorithm for determining the -old tag or tags from the new tags picks the least-refined old concepts -that include all of the requirements of the access and traversal -concepts (that is, the closest fit), if any such category exists. For -example, the category tag for a Readable Single Pass Iterator will -always be derived from ``input_iterator_tag``, while the category tag -for a Single Pass Iterator that is both Readable and Writable will be -derived from both ``input_iterator_tag`` and ``output_iterator_tag``. - +iterator tag or tags from the old requirements based on the access +bits and traversal tag passed as template parameters. The algorithm +for determining the old tag or tags picks the least-refined old +concepts that include all of the requirements of the access and +traversal concepts (that is, the closest fit), if any such category +exists. For example, the category tag for a Readable Single Pass +Iterator will always be derived from ``input_iterator_tag``, while the +category tag for a Single Pass Iterator that is both Readable and +Writable will be derived from both ``input_iterator_tag`` and +``output_iterator_tag``. We also provide several helper classes that make it convenient to obtain the access and traversal characteristics of an iterator. These