diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 0d02978..6ae7ed3 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -814,24 +814,19 @@ if (R is a reference type && C is convertible to forward_traversal_tag) { if (C is convertible to random_access_traversal_tag) - return random_access_iterator_tag + random_access_iterator_tag else if (C is convertible to bidirectional_traversal_tag) - return bidirectional_iterator_tag + bidirectional_iterator_tag else - return forward_traversal_tag + forward_iterator_tag } else { if (C is convertible to single_pass_traversal_tag && R is convertible to V) - { - if (V is const) - return input_iterator_tag - else - return input_iterator_tag and output_iterator_tag - } + input_iterator_tag else - return output_iterator_tag + C } @@ -1892,15 +1887,10 @@ private: Iterator m_end; // exposition only }; -

If iterator_traits<Iterator>::reference is a reference to -iterator_traits<Iterator>::value_type and -iterator_traversal<Iterator>::type is convertible to -forward_traversal_tag then the iterator_category member is a -type convertible to forward_iterator_tag. Otherwise -iterator_category is a type convertible to -input_iterator_tag.

- +

If Iterator models Readable Lvalue Iterator and Forward Traversal +Iterator then iterator_category is convertible to +std::forward_iterator_tag. Otherwise iterator_category is +convertible to std::input_iterator_tag.

filter_iterator requirements

@@ -2350,7 +2340,7 @@ LocalWords: OtherIncrementable Coplien --> diff --git a/doc/filter_iterator.html b/doc/filter_iterator.html index 67ff6a4..2c58572 100644 --- a/doc/filter_iterator.html +++ b/doc/filter_iterator.html @@ -91,15 +91,10 @@ private: Iterator m_end; // exposition only }; -

If iterator_traits<Iterator>::reference is a reference to -iterator_traits<Iterator>::value_type and -iterator_traversal<Iterator>::type is convertible to -forward_traversal_tag then the iterator_category member is a -type convertible to forward_iterator_tag. Otherwise -iterator_category is a type convertible to -input_iterator_tag.

- +

If Iterator models Readable Lvalue Iterator and Forward Traversal +Iterator then iterator_category is convertible to +std::forward_iterator_tag. Otherwise iterator_category is +convertible to std::input_iterator_tag.

filter_iterator requirements

@@ -383,7 +378,7 @@ int main() diff --git a/doc/filter_iterator_ref.rst b/doc/filter_iterator_ref.rst index ba9e17d..c4bf934 100644 --- a/doc/filter_iterator_ref.rst +++ b/doc/filter_iterator_ref.rst @@ -30,16 +30,10 @@ }; -If ``iterator_traits::reference`` is a reference to -``iterator_traits::value_type`` and -``iterator_traversal::type`` is convertible to -``forward_traversal_tag`` then the ``iterator_category`` member is a -type convertible to ``forward_iterator_tag``. Otherwise -``iterator_category`` is a type convertible to -``input_iterator_tag``. - -.. In that last case, I think the implementation produces a tag - convertible to both input and output, which seems wrong. -JGS +If ``Iterator`` models Readable Lvalue Iterator and Forward Traversal +Iterator then ``iterator_category`` is convertible to +``std::forward_iterator_tag``. Otherwise ``iterator_category`` is +convertible to ``std::input_iterator_tag``. ``filter_iterator`` requirements diff --git a/doc/iterator_facade.html b/doc/iterator_facade.html index a70a6c0..752761c 100644 --- a/doc/iterator_facade.html +++ b/doc/iterator_facade.html @@ -486,24 +486,19 @@ if (R is a reference type && C is convertible to forward_traversal_tag) { if (C is convertible to random_access_traversal_tag) - return random_access_iterator_tag + random_access_iterator_tag else if (C is convertible to bidirectional_traversal_tag) - return bidirectional_iterator_tag + bidirectional_iterator_tag else - return forward_traversal_tag + forward_iterator_tag } else { if (C is convertible to single_pass_traversal_tag && R is convertible to V) - { - if (V is const) - return input_iterator_tag - else - return input_iterator_tag and output_iterator_tag - } + input_iterator_tag else - return output_iterator_tag + C } @@ -1137,7 +1132,7 @@ even be superior.

diff --git a/doc/iterator_facade_ref.rst b/doc/iterator_facade_ref.rst index 2fa7a5c..b28b234 100644 --- a/doc/iterator_facade_ref.rst +++ b/doc/iterator_facade_ref.rst @@ -192,24 +192,19 @@ is a type which satisfies the following conditions: && C is convertible to forward_traversal_tag) { if (C is convertible to random_access_traversal_tag) - return random_access_iterator_tag + random_access_iterator_tag else if (C is convertible to bidirectional_traversal_tag) - return bidirectional_iterator_tag + bidirectional_iterator_tag else - return forward_traversal_tag + forward_iterator_tag } else { if (C is convertible to single_pass_traversal_tag && R is convertible to V) - { - if (V is const) - return input_iterator_tag - else - return input_iterator_tag and output_iterator_tag - } + input_iterator_tag else - return output_iterator_tag + C } - ``iterator_traversal::type`` is convertible to the most