Also added an import into the boost::detail namespace for backward compatibility with Boost.Range. Added a pure_iterator_traversal metafunction that automatically converts iterator category as well.
This change excludes boost:: and boost::detail:: namespaces from ADL for unqualified function calls (e.g. algorithms). This reduces the possibility of name clashes with other libraries and user's code. One of the effects should be fixing test failures on gcc 4.2 and 4.4 due to clashed with Boost.TypeTraits.
Also some of the functions marked with inline keyword.
This makes iterators defined using iterator_facade more friendly to type inspection and fixes its use with next()/prior() since commit 651a869d4f.
The arithmetic, indexing and relational operators are only defined if the iterator category or traversal permits that. Note that the implementation requires partial template specialization support now.
Reverted: 2e099caceb9..21102938e8ccb
I'm going to reapply some of them soon, but it's easier to revert them
all first, as there are conflicts. Also the number of changes that were
inserted since then, mean that there would be a huge gap between related
changes.
- The logic for determining the result of iterator_facade::operator[] has been factored out into a separate detail header in preparation for its potential use in iterator_range to avoid iterator_range::operator[] from returning a reference to a temporary.
[SVN r80901]
- Update iterator_facade test for #1019
(header change already merged).
- Category of each iterator is reduced to a known category before we try to
find a minimum. Fixes#1517.
- `function_input_iterator` from Dean Michael Berris. Fixes#2893
- Fix typo in `boost/iterator.hpp`. Fixes#3434.
- Always include `add_reference` header in iterator adaptor header.
Did not merge changes for #1427.
[SVN r70709]
either changing assert(...) or BOOST_ASSERT(...) to BOOST_TEST
(in my code only)
or adding "return boost::report_errors();" where it was clearly
missing (and a pure bug, in anyone's code).
or changing BOOST_TEST to BOOST_CHECK where the integer library
was clearly using Boost.Test and not returning report_errors().
[SVN r37063]