Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r61052 - in branches/release: boost/range boost/range/adaptor boost/range/algorithm boost/range/algorithm_ext boost/range/detail libs/range libs/range/doc libs/range/doc/html libs/range/doc/html/range libs/range/doc/html/range/concepts libs/range/doc/html/range/mfc_atl libs/range/doc/html/range/reference libs/range/doc/html/range/reference/adaptors libs/range/doc/html/range/reference/adaptors/adaptors_reference libs/range/doc/html/range/reference/algorithms libs/range/doc/html/range/reference/algorithms/heap_algorithms libs/range/doc/html/range/reference/algorithms/permutation_algorithms libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms libs/range/doc/html/range/reference/algorithms/range_numeric libs/range/doc/html/range/reference/algorithms/set_algorithms libs/range/doc/html/range/reference/extending libs/range/doc/html/range/reference/extending/method_3 libs/range/doc/html/range/reference/range_algorithm libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms libs/range/doc/html/range/reference/ranges libs/range/doc/html/range/reference/ranges/reference libs/range/doc/html/range/reference/semantics libs/range/doc/html/range/upgrade libs/range/doc/html/range/utilities libs/range/doc/reference libs/range/doc/reference/adaptors libs/range/doc/reference/adaptors/examples libs/range/doc/reference/algorithm libs/range/doc/reference/algorithm_ext libs/range/doc/reference/numeric libs/range/doc/reference/ranges libs/range/test libs/range/test/adaptor_test libs/range/test/algorithm_ext_test libs/range/test/algorithm_test libs/range/test/test_driver libs/range/test/test_function
From: neil_at_[hidden]
Date: 2010-04-04 16:00:29


Author: neilgroves
Date: 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
New Revision: 61052
URL: http://svn.boost.org/trac/boost/changeset/61052

Log:
Merged the new Boost.Range into the release branch.
Added:
   branches/release/boost/range/adaptor/
      - copied from r60898, /trunk/boost/range/adaptor/
   branches/release/boost/range/adaptor/adjacent_filtered.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/adjacent_filtered.hpp
   branches/release/boost/range/adaptor/argument_fwd.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/argument_fwd.hpp
   branches/release/boost/range/adaptor/copied.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/copied.hpp
   branches/release/boost/range/adaptor/define_adaptor.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/define_adaptor.hpp
   branches/release/boost/range/adaptor/filtered.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/filtered.hpp
   branches/release/boost/range/adaptor/indexed.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/indexed.hpp
   branches/release/boost/range/adaptor/indirected.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/indirected.hpp
   branches/release/boost/range/adaptor/map.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/map.hpp
   branches/release/boost/range/adaptor/replaced.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/replaced.hpp
   branches/release/boost/range/adaptor/replaced_if.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/replaced_if.hpp
   branches/release/boost/range/adaptor/reversed.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/reversed.hpp
   branches/release/boost/range/adaptor/sliced.hpp
      - copied, changed from r60898, /trunk/boost/range/adaptor/sliced.hpp
   branches/release/boost/range/adaptor/strided.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/strided.hpp
   branches/release/boost/range/adaptor/tokenized.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/tokenized.hpp
   branches/release/boost/range/adaptor/transformed.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/transformed.hpp
   branches/release/boost/range/adaptor/uniqued.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptor/uniqued.hpp
   branches/release/boost/range/adaptors.hpp
      - copied unchanged from r60898, /trunk/boost/range/adaptors.hpp
   branches/release/boost/range/algorithm/
      - copied from r60898, /trunk/boost/range/algorithm/
   branches/release/boost/range/algorithm.hpp
      - copied unchanged from r60898, /trunk/boost/range/algorithm.hpp
   branches/release/boost/range/algorithm/adjacent_find.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/adjacent_find.hpp
   branches/release/boost/range/algorithm/binary_search.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/binary_search.hpp
   branches/release/boost/range/algorithm/copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/copy.hpp
   branches/release/boost/range/algorithm/copy_backward.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/copy_backward.hpp
   branches/release/boost/range/algorithm/count.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/count.hpp
   branches/release/boost/range/algorithm/count_if.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/count_if.hpp
   branches/release/boost/range/algorithm/equal.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/equal.hpp
   branches/release/boost/range/algorithm/equal_range.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/equal_range.hpp
   branches/release/boost/range/algorithm/fill.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/fill.hpp
   branches/release/boost/range/algorithm/fill_n.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/fill_n.hpp
   branches/release/boost/range/algorithm/find.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/find.hpp
   branches/release/boost/range/algorithm/find_end.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/find_end.hpp
   branches/release/boost/range/algorithm/find_first_of.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/find_first_of.hpp
   branches/release/boost/range/algorithm/find_if.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/find_if.hpp
   branches/release/boost/range/algorithm/for_each.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/for_each.hpp
   branches/release/boost/range/algorithm/generate.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/generate.hpp
   branches/release/boost/range/algorithm/heap_algorithm.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/heap_algorithm.hpp
   branches/release/boost/range/algorithm/inplace_merge.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/inplace_merge.hpp
   branches/release/boost/range/algorithm/lexicographical_compare.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/lexicographical_compare.hpp
   branches/release/boost/range/algorithm/lower_bound.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/lower_bound.hpp
   branches/release/boost/range/algorithm/max_element.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/max_element.hpp
   branches/release/boost/range/algorithm/merge.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/merge.hpp
   branches/release/boost/range/algorithm/min_element.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/min_element.hpp
   branches/release/boost/range/algorithm/mismatch.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/mismatch.hpp
   branches/release/boost/range/algorithm/nth_element.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/nth_element.hpp
   branches/release/boost/range/algorithm/partial_sort.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/partial_sort.hpp
   branches/release/boost/range/algorithm/partial_sort_copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/partial_sort_copy.hpp
   branches/release/boost/range/algorithm/partition.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/partition.hpp
   branches/release/boost/range/algorithm/permutation.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/permutation.hpp
   branches/release/boost/range/algorithm/random_shuffle.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/random_shuffle.hpp
   branches/release/boost/range/algorithm/remove.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/remove.hpp
   branches/release/boost/range/algorithm/remove_copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/remove_copy.hpp
   branches/release/boost/range/algorithm/remove_copy_if.hpp
      - copied unchanged from r60898, /trunk/boost/range/algorithm/remove_copy_if.hpp
   branches/release/boost/range/algorithm/remove_if.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/remove_if.hpp
   branches/release/boost/range/algorithm/replace.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/replace.hpp
   branches/release/boost/range/algorithm/replace_copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/replace_copy.hpp
   branches/release/boost/range/algorithm/replace_copy_if.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/replace_copy_if.hpp
   branches/release/boost/range/algorithm/replace_if.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/replace_if.hpp
   branches/release/boost/range/algorithm/reverse.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/reverse.hpp
   branches/release/boost/range/algorithm/reverse_copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/reverse_copy.hpp
   branches/release/boost/range/algorithm/rotate.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/rotate.hpp
   branches/release/boost/range/algorithm/rotate_copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/rotate_copy.hpp
   branches/release/boost/range/algorithm/search.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/search.hpp
   branches/release/boost/range/algorithm/search_n.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/search_n.hpp
   branches/release/boost/range/algorithm/set_algorithm.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/set_algorithm.hpp
   branches/release/boost/range/algorithm/sort.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/sort.hpp
   branches/release/boost/range/algorithm/stable_partition.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/stable_partition.hpp
   branches/release/boost/range/algorithm/stable_sort.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/stable_sort.hpp
   branches/release/boost/range/algorithm/swap_ranges.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/swap_ranges.hpp
   branches/release/boost/range/algorithm/transform.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/transform.hpp
   branches/release/boost/range/algorithm/unique.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/unique.hpp
   branches/release/boost/range/algorithm/unique_copy.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/unique_copy.hpp
   branches/release/boost/range/algorithm/upper_bound.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm/upper_bound.hpp
   branches/release/boost/range/algorithm_ext/
      - copied from r60898, /trunk/boost/range/algorithm_ext/
   branches/release/boost/range/algorithm_ext.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext.hpp
   branches/release/boost/range/algorithm_ext/copy_n.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/copy_n.hpp
   branches/release/boost/range/algorithm_ext/erase.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/erase.hpp
   branches/release/boost/range/algorithm_ext/for_each.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/for_each.hpp
   branches/release/boost/range/algorithm_ext/insert.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/insert.hpp
   branches/release/boost/range/algorithm_ext/iota.hpp
      - copied unchanged from r61047, /trunk/boost/range/algorithm_ext/iota.hpp
   branches/release/boost/range/algorithm_ext/is_sorted.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/is_sorted.hpp
   branches/release/boost/range/algorithm_ext/overwrite.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/overwrite.hpp
   branches/release/boost/range/algorithm_ext/push_back.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/push_back.hpp
   branches/release/boost/range/algorithm_ext/push_front.hpp
      - copied, changed from r60898, /trunk/boost/range/algorithm_ext/push_front.hpp
   branches/release/boost/range/combine.hpp
      - copied unchanged from r60898, /trunk/boost/range/combine.hpp
   branches/release/boost/range/counting_range.hpp
      - copied unchanged from r60898, /trunk/boost/range/counting_range.hpp
   branches/release/boost/range/detail/demote_iterator_traversal_tag.hpp
      - copied unchanged from r60898, /trunk/boost/range/detail/demote_iterator_traversal_tag.hpp
   branches/release/boost/range/detail/extract_optional_type.hpp
      - copied unchanged from r60898, /trunk/boost/range/detail/extract_optional_type.hpp
   branches/release/boost/range/detail/join_iterator.hpp
      - copied unchanged from r60898, /trunk/boost/range/detail/join_iterator.hpp
   branches/release/boost/range/detail/misc_concept.hpp
      - copied unchanged from r60898, /trunk/boost/range/detail/misc_concept.hpp
   branches/release/boost/range/detail/range_return.hpp
      - copied unchanged from r60898, /trunk/boost/range/detail/range_return.hpp
   branches/release/boost/range/irange.hpp
      - copied, changed from r60898, /trunk/boost/range/irange.hpp
   branches/release/boost/range/istream_range.hpp
      - copied unchanged from r60898, /trunk/boost/range/istream_range.hpp
   branches/release/boost/range/iterator_range_core.hpp
      - copied, changed from r60898, /trunk/boost/range/iterator_range_core.hpp
   branches/release/boost/range/iterator_range_io.hpp
      - copied unchanged from r60898, /trunk/boost/range/iterator_range_io.hpp
   branches/release/boost/range/join.hpp
      - copied, changed from r60898, /trunk/boost/range/join.hpp
   branches/release/boost/range/numeric.hpp
      - copied unchanged from r60898, /trunk/boost/range/numeric.hpp
   branches/release/boost/range/unbounded_range.hpp
      - copied unchanged from r60898, /trunk/boost/range/unbounded_range.hpp
   branches/release/libs/range/doc/concepts.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/concepts.qbk
   branches/release/libs/range/doc/counting_range.html
      - copied unchanged from r60898, /trunk/libs/range/doc/counting_range.html
   branches/release/libs/range/doc/examples.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/examples.qbk
   branches/release/libs/range/doc/faq.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/faq.qbk
   branches/release/libs/range/doc/headers.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/headers.qbk
   branches/release/libs/range/doc/history_ack.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/history_ack.qbk
   branches/release/libs/range/doc/html/
      - copied from r60898, /trunk/libs/range/doc/html/
   branches/release/libs/range/doc/html/index.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/index.html
   branches/release/libs/range/doc/html/quickbook_HTML.manifest
      - copied unchanged from r60898, /trunk/libs/range/doc/html/quickbook_HTML.manifest
   branches/release/libs/range/doc/html/range/
      - copied from r60898, /trunk/libs/range/doc/html/range/
   branches/release/libs/range/doc/html/range/concepts/
      - copied from r60898, /trunk/libs/range/doc/html/range/concepts/
   branches/release/libs/range/doc/html/range/concepts.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/concepts.html
   branches/release/libs/range/doc/html/range/concepts/bidirectional_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/concepts/bidirectional_range.html
   branches/release/libs/range/doc/html/range/concepts/concept_checking.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/concepts/concept_checking.html
   branches/release/libs/range/doc/html/range/concepts/forward_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/concepts/forward_range.html
   branches/release/libs/range/doc/html/range/concepts/overview.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/concepts/overview.html
   branches/release/libs/range/doc/html/range/concepts/random_access_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/concepts/random_access_range.html
   branches/release/libs/range/doc/html/range/concepts/single_pass_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/concepts/single_pass_range.html
   branches/release/libs/range/doc/html/range/examples.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/examples.html
   branches/release/libs/range/doc/html/range/faq.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/faq.html
   branches/release/libs/range/doc/html/range/history_ack.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/history_ack.html
   branches/release/libs/range/doc/html/range/introduction.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/introduction.html
   branches/release/libs/range/doc/html/range/library_headers.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/library_headers.html
   branches/release/libs/range/doc/html/range/mfc_atl/
      - copied from r60898, /trunk/libs/range/doc/html/range/mfc_atl/
   branches/release/libs/range/doc/html/range/mfc_atl.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/mfc_atl.html
   branches/release/libs/range/doc/html/range/mfc_atl/atl_ranges.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/mfc_atl/atl_ranges.html
   branches/release/libs/range/doc/html/range/mfc_atl/const_ranges.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/mfc_atl/const_ranges.html
   branches/release/libs/range/doc/html/range/mfc_atl/mfc_ranges.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/mfc_atl/mfc_ranges.html
   branches/release/libs/range/doc/html/range/mfc_atl/references.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/mfc_atl/references.html
   branches/release/libs/range/doc/html/range/mfc_atl/requirements.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/mfc_atl/requirements.html
   branches/release/libs/range/doc/html/range/portability.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/portability.html
   branches/release/libs/range/doc/html/range/reference/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/
   branches/release/libs/range/doc/html/range/reference.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference.html
   branches/release/libs/range/doc/html/range/reference/adaptors/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/
   branches/release/libs/range/doc/html/range/reference/adaptors.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_general_requirements.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_general_requirements.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/copied.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/copied.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/filtered.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/filtered.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/indexed.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/indexed.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/indirected.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/indirected.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/map_values.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/map_values.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/replaced.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/replaced.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/reversed.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/reversed.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/sliced.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/sliced.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/strided.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/strided.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/transformed.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/transformed.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_synopsis.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_synopsis.html
   branches/release/libs/range/doc/html/range/reference/algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html
   branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html
   branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_introduction.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_introduction.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/inner_product.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/inner_product.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/irange.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/irange.html
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/partial_sum.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/partial_sum.html
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms/
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms.html
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/includes.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms/includes.html
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_difference.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_difference.html
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_union.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_union.html
   branches/release/libs/range/doc/html/range/reference/extending/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/extending/
   branches/release/libs/range/doc/html/range/reference/extending.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/extending.html
   branches/release/libs/range/doc/html/range/reference/extending/method_1.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/extending/method_1.html
   branches/release/libs/range/doc/html/range/reference/extending/method_2.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/extending/method_2.html
   branches/release/libs/range/doc/html/range/reference/extending/method_3/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/extending/method_3/
   branches/release/libs/range/doc/html/range/reference/extending/method_3.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/extending/method_3.html
   branches/release/libs/range/doc/html/range/reference/extending/method_3/method_3_1.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/extending/method_3/method_3_1.html
   branches/release/libs/range/doc/html/range/reference/extending/method_3/method_3_2.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/extending/method_3/method_3_2.html
   branches/release/libs/range/doc/html/range/reference/overview.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/overview.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/
   branches/release/libs/range/doc/html/range/reference/range_algorithm.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_introduction.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_introduction.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy_backward.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy_backward.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_new_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_new_algorithms.html
   branches/release/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_non_mutating_algorithms.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/range_algorithm/range_algorithm_non_mutating_algorithms.html
   branches/release/libs/range/doc/html/range/reference/ranges/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/ranges/
   branches/release/libs/range/doc/html/range/reference/ranges.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/ranges.html
   branches/release/libs/range/doc/html/range/reference/ranges/counting_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/ranges/counting_range.html
   branches/release/libs/range/doc/html/range/reference/ranges/introduction.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/ranges/introduction.html
   branches/release/libs/range/doc/html/range/reference/ranges/irange.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/ranges/irange.html
   branches/release/libs/range/doc/html/range/reference/ranges/istream_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/ranges/istream_range.html
   branches/release/libs/range/doc/html/range/reference/ranges/reference/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/ranges/reference/
   branches/release/libs/range/doc/html/range/reference/ranges/reference.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/ranges/reference.html
   branches/release/libs/range/doc/html/range/reference/ranges/reference/counting_range.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/ranges/reference/counting_range.html
   branches/release/libs/range/doc/html/range/reference/ranges/reference/irange.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/ranges/reference/irange.html
   branches/release/libs/range/doc/html/range/reference/ranges/reference/istream_range.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/ranges/reference/istream_range.html
   branches/release/libs/range/doc/html/range/reference/semantics/
      - copied from r60898, /trunk/libs/range/doc/html/range/reference/semantics/
   branches/release/libs/range/doc/html/range/reference/semantics.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/reference/semantics.html
   branches/release/libs/range/doc/html/range/reference/semantics/functions.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/semantics/functions.html
   branches/release/libs/range/doc/html/range/reference/semantics/metafunctions.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/semantics/metafunctions.html
   branches/release/libs/range/doc/html/range/reference/synopsis.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/reference/synopsis.html
   branches/release/libs/range/doc/html/range/style_guide.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/style_guide.html
   branches/release/libs/range/doc/html/range/upgrade/
      - copied from r60898, /trunk/libs/range/doc/html/range/upgrade/
   branches/release/libs/range/doc/html/range/upgrade.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/upgrade.html
   branches/release/libs/range/doc/html/range/upgrade/upgrade_1_34_to_1_35.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/upgrade/upgrade_1_34_to_1_35.html
   branches/release/libs/range/doc/html/range/upgrade/upgrade_from_1_34.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/upgrade/upgrade_from_1_34.html
   branches/release/libs/range/doc/html/range/upgrade/upgrade_from_1_42.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/upgrade/upgrade_from_1_42.html
   branches/release/libs/range/doc/html/range/utilities/
      - copied from r60898, /trunk/libs/range/doc/html/range/utilities/
   branches/release/libs/range/doc/html/range/utilities.html
      - copied unchanged from r60898, /trunk/libs/range/doc/html/range/utilities.html
   branches/release/libs/range/doc/html/range/utilities/iterator_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/utilities/iterator_range.html
   branches/release/libs/range/doc/html/range/utilities/join.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/utilities/join.html
   branches/release/libs/range/doc/html/range/utilities/sub_range.html
      - copied, changed from r60898, /trunk/libs/range/doc/html/range/utilities/sub_range.html
   branches/release/libs/range/doc/html/standalone_HTML.manifest
      - copied unchanged from r60898, /trunk/libs/range/doc/html/standalone_HTML.manifest
   branches/release/libs/range/doc/introduction.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/introduction.qbk
   branches/release/libs/range/doc/istream_range.html
      - copied unchanged from r60898, /trunk/libs/range/doc/istream_range.html
   branches/release/libs/range/doc/mfc_atl.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/mfc_atl.qbk
   branches/release/libs/range/doc/portability.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/portability.qbk
   branches/release/libs/range/doc/reference/
      - copied from r60898, /trunk/libs/range/doc/reference/
   branches/release/libs/range/doc/reference.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference.qbk
   branches/release/libs/range/doc/reference/adaptors/
      - copied from r60898, /trunk/libs/range/doc/reference/adaptors/
   branches/release/libs/range/doc/reference/adaptors.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors.qbk
   branches/release/libs/range/doc/reference/adaptors/adjacent_filtered.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/adjacent_filtered.html
   branches/release/libs/range/doc/reference/adaptors/adjacent_filtered.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/adjacent_filtered.qbk
   branches/release/libs/range/doc/reference/adaptors/copied.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/copied.html
   branches/release/libs/range/doc/reference/adaptors/copied.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/copied.qbk
   branches/release/libs/range/doc/reference/adaptors/examples/
      - copied from r60898, /trunk/libs/range/doc/reference/adaptors/examples/
   branches/release/libs/range/doc/reference/adaptors/examples/adjacent_filtered.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/adjacent_filtered.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/copied.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/copied.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/filtered.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/filtered.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/indexed.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/indexed.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/indirected.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/indirected.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/map_keys.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/map_keys.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/map_values.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/map_values.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/replaced.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/replaced.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/replaced_if.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/replaced_if.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/reversed.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/reversed.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/sliced.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/sliced.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/strided.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/strided.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/tokenized.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/tokenized.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/transformed.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/transformed.cpp
   branches/release/libs/range/doc/reference/adaptors/examples/uniqued.cpp
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/examples/uniqued.cpp
   branches/release/libs/range/doc/reference/adaptors/filtered.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/filtered.html
   branches/release/libs/range/doc/reference/adaptors/filtered.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/filtered.qbk
   branches/release/libs/range/doc/reference/adaptors/indexed.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/indexed.html
   branches/release/libs/range/doc/reference/adaptors/indexed.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/indexed.qbk
   branches/release/libs/range/doc/reference/adaptors/indirected.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/indirected.html
   branches/release/libs/range/doc/reference/adaptors/indirected.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/indirected.qbk
   branches/release/libs/range/doc/reference/adaptors/map_keys.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/map_keys.html
   branches/release/libs/range/doc/reference/adaptors/map_keys.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/map_keys.qbk
   branches/release/libs/range/doc/reference/adaptors/map_values.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/map_values.html
   branches/release/libs/range/doc/reference/adaptors/map_values.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/map_values.qbk
   branches/release/libs/range/doc/reference/adaptors/replaced.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/replaced.html
   branches/release/libs/range/doc/reference/adaptors/replaced.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/replaced.qbk
   branches/release/libs/range/doc/reference/adaptors/replaced_if.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/replaced_if.html
   branches/release/libs/range/doc/reference/adaptors/replaced_if.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/replaced_if.qbk
   branches/release/libs/range/doc/reference/adaptors/reversed.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/reversed.html
   branches/release/libs/range/doc/reference/adaptors/reversed.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/reversed.qbk
   branches/release/libs/range/doc/reference/adaptors/sliced.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/sliced.html
   branches/release/libs/range/doc/reference/adaptors/sliced.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/sliced.qbk
   branches/release/libs/range/doc/reference/adaptors/strided.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/strided.html
   branches/release/libs/range/doc/reference/adaptors/strided.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/strided.qbk
   branches/release/libs/range/doc/reference/adaptors/tokenized.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/tokenized.html
   branches/release/libs/range/doc/reference/adaptors/tokenized.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/tokenized.qbk
   branches/release/libs/range/doc/reference/adaptors/transformed.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/transformed.html
   branches/release/libs/range/doc/reference/adaptors/transformed.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/transformed.qbk
   branches/release/libs/range/doc/reference/adaptors/uniqued.html
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/uniqued.html
   branches/release/libs/range/doc/reference/adaptors/uniqued.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/adaptors/uniqued.qbk
   branches/release/libs/range/doc/reference/algorithm/
      - copied from r60898, /trunk/libs/range/doc/reference/algorithm/
   branches/release/libs/range/doc/reference/algorithm/adjacent_find.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/adjacent_find.qbk
   branches/release/libs/range/doc/reference/algorithm/binary_search.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/binary_search.qbk
   branches/release/libs/range/doc/reference/algorithm/copy.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/copy.qbk
   branches/release/libs/range/doc/reference/algorithm/copy_backward.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/copy_backward.qbk
   branches/release/libs/range/doc/reference/algorithm/count.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/count.qbk
   branches/release/libs/range/doc/reference/algorithm/equal.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/equal.qbk
   branches/release/libs/range/doc/reference/algorithm/equal_range.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/equal_range.qbk
   branches/release/libs/range/doc/reference/algorithm/fill.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/fill.qbk
   branches/release/libs/range/doc/reference/algorithm/find.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/find.qbk
   branches/release/libs/range/doc/reference/algorithm/find_end.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/find_end.qbk
   branches/release/libs/range/doc/reference/algorithm/find_first_of.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/find_first_of.qbk
   branches/release/libs/range/doc/reference/algorithm/find_if.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/find_if.qbk
   branches/release/libs/range/doc/reference/algorithm/for_each.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/for_each.qbk
   branches/release/libs/range/doc/reference/algorithm/generate.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/generate.qbk
   branches/release/libs/range/doc/reference/algorithm/includes.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/includes.qbk
   branches/release/libs/range/doc/reference/algorithm/inplace_merge.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/inplace_merge.qbk
   branches/release/libs/range/doc/reference/algorithm/lexicographical_compare.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/lexicographical_compare.qbk
   branches/release/libs/range/doc/reference/algorithm/lower_bound.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/lower_bound.qbk
   branches/release/libs/range/doc/reference/algorithm/make_heap.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/make_heap.qbk
   branches/release/libs/range/doc/reference/algorithm/max_element.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/max_element.qbk
   branches/release/libs/range/doc/reference/algorithm/merge.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/merge.qbk
   branches/release/libs/range/doc/reference/algorithm/min_element.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/min_element.qbk
   branches/release/libs/range/doc/reference/algorithm/mismatch.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/mismatch.qbk
   branches/release/libs/range/doc/reference/algorithm/next_permutation.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/next_permutation.qbk
   branches/release/libs/range/doc/reference/algorithm/nth_element.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/nth_element.qbk
   branches/release/libs/range/doc/reference/algorithm/partial_sort.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/partial_sort.qbk
   branches/release/libs/range/doc/reference/algorithm/partition.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/partition.qbk
   branches/release/libs/range/doc/reference/algorithm/pop_heap.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/pop_heap.qbk
   branches/release/libs/range/doc/reference/algorithm/prev_permutation.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/prev_permutation.qbk
   branches/release/libs/range/doc/reference/algorithm/push_heap.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/push_heap.qbk
   branches/release/libs/range/doc/reference/algorithm/random_shuffle.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/random_shuffle.qbk
   branches/release/libs/range/doc/reference/algorithm/remove.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/remove.qbk
   branches/release/libs/range/doc/reference/algorithm/remove_if.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/remove_if.qbk
   branches/release/libs/range/doc/reference/algorithm/replace.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/replace.qbk
   branches/release/libs/range/doc/reference/algorithm/replace_if.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/replace_if.qbk
   branches/release/libs/range/doc/reference/algorithm/reverse.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/reverse.qbk
   branches/release/libs/range/doc/reference/algorithm/rotate.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/rotate.qbk
   branches/release/libs/range/doc/reference/algorithm/search.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/search.qbk
   branches/release/libs/range/doc/reference/algorithm/set_difference.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/set_difference.qbk
   branches/release/libs/range/doc/reference/algorithm/set_intersection.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/set_intersection.qbk
   branches/release/libs/range/doc/reference/algorithm/set_symmetric_difference.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/set_symmetric_difference.qbk
   branches/release/libs/range/doc/reference/algorithm/set_union.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/set_union.qbk
   branches/release/libs/range/doc/reference/algorithm/sort.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/sort.qbk
   branches/release/libs/range/doc/reference/algorithm/sort_heap.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/sort_heap.qbk
   branches/release/libs/range/doc/reference/algorithm/stable_partition.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/stable_partition.qbk
   branches/release/libs/range/doc/reference/algorithm/stable_sort.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/stable_sort.qbk
   branches/release/libs/range/doc/reference/algorithm/transform.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/transform.qbk
   branches/release/libs/range/doc/reference/algorithm/unique.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm/unique.qbk
   branches/release/libs/range/doc/reference/algorithm/upper_bound.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithm/upper_bound.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/
      - copied from r60898, /trunk/libs/range/doc/reference/algorithm_ext/
   branches/release/libs/range/doc/reference/algorithm_ext/erase.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/erase.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/for_each.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/for_each.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/insert.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/insert.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/iota.qbk
      - copied unchanged from r61043, /trunk/libs/range/doc/reference/algorithm_ext/iota.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/overwrite.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/overwrite.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/push_back.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/push_back.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/push_front.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/push_front.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/remove_erase.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/remove_erase.qbk
   branches/release/libs/range/doc/reference/algorithm_ext/remove_erase_if.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/algorithm_ext/remove_erase_if.qbk
   branches/release/libs/range/doc/reference/algorithms.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/algorithms.qbk
   branches/release/libs/range/doc/reference/extending.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/extending.qbk
   branches/release/libs/range/doc/reference/numeric/
      - copied from r60898, /trunk/libs/range/doc/reference/numeric/
   branches/release/libs/range/doc/reference/numeric/accumulate.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/numeric/accumulate.qbk
   branches/release/libs/range/doc/reference/numeric/adjacent_difference.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/numeric/adjacent_difference.qbk
   branches/release/libs/range/doc/reference/numeric/inner_product.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/numeric/inner_product.qbk
   branches/release/libs/range/doc/reference/numeric/partial_sum.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/numeric/partial_sum.qbk
   branches/release/libs/range/doc/reference/overview.qbk
      - copied, changed from r60898, /trunk/libs/range/doc/reference/overview.qbk
   branches/release/libs/range/doc/reference/ranges/
      - copied from r60898, /trunk/libs/range/doc/reference/ranges/
   branches/release/libs/range/doc/reference/ranges.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/ranges.qbk
   branches/release/libs/range/doc/reference/ranges/counting_range.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/ranges/counting_range.qbk
   branches/release/libs/range/doc/reference/ranges/irange.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/ranges/irange.qbk
   branches/release/libs/range/doc/reference/ranges/istream_range.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/ranges/istream_range.qbk
   branches/release/libs/range/doc/reference/semantics.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/semantics.qbk
   branches/release/libs/range/doc/reference/synopsis.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/reference/synopsis.qbk
   branches/release/libs/range/doc/style.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/style.qbk
   branches/release/libs/range/doc/upgrade.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/upgrade.qbk
   branches/release/libs/range/doc/utilities.qbk
      - copied unchanged from r60898, /trunk/libs/range/doc/utilities.qbk
   branches/release/libs/range/test/adaptor_test/
      - copied from r60898, /trunk/libs/range/test/adaptor_test/
   branches/release/libs/range/test/adaptor_test/adjacent_filtered.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/adjacent_filtered.cpp
   branches/release/libs/range/test/adaptor_test/adjacent_filtered_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/adjacent_filtered_example.cpp
   branches/release/libs/range/test/adaptor_test/copied.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/copied.cpp
   branches/release/libs/range/test/adaptor_test/copied_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/copied_example.cpp
   branches/release/libs/range/test/adaptor_test/filtered.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/filtered.cpp
   branches/release/libs/range/test/adaptor_test/filtered_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/filtered_example.cpp
   branches/release/libs/range/test/adaptor_test/indexed.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/indexed.cpp
   branches/release/libs/range/test/adaptor_test/indexed_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/indexed_example.cpp
   branches/release/libs/range/test/adaptor_test/indirected.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/indirected.cpp
   branches/release/libs/range/test/adaptor_test/indirected_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/indirected_example.cpp
   branches/release/libs/range/test/adaptor_test/map.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/map.cpp
   branches/release/libs/range/test/adaptor_test/map_keys_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/map_keys_example.cpp
   branches/release/libs/range/test/adaptor_test/map_values_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/map_values_example.cpp
   branches/release/libs/range/test/adaptor_test/replaced.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/replaced.cpp
   branches/release/libs/range/test/adaptor_test/replaced_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/replaced_example.cpp
   branches/release/libs/range/test/adaptor_test/replaced_if.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/replaced_if.cpp
   branches/release/libs/range/test/adaptor_test/replaced_if_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/replaced_if_example.cpp
   branches/release/libs/range/test/adaptor_test/reversed.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/reversed.cpp
   branches/release/libs/range/test/adaptor_test/reversed_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/reversed_example.cpp
   branches/release/libs/range/test/adaptor_test/sliced.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/sliced.cpp
   branches/release/libs/range/test/adaptor_test/sliced_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/sliced_example.cpp
   branches/release/libs/range/test/adaptor_test/strided.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/strided.cpp
   branches/release/libs/range/test/adaptor_test/strided_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/strided_example.cpp
   branches/release/libs/range/test/adaptor_test/tokenized.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/tokenized.cpp
   branches/release/libs/range/test/adaptor_test/transformed.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/transformed.cpp
   branches/release/libs/range/test/adaptor_test/transformed_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/transformed_example.cpp
   branches/release/libs/range/test/adaptor_test/uniqued.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/uniqued.cpp
   branches/release/libs/range/test/adaptor_test/uniqued_example.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptor_test/uniqued_example.cpp
   branches/release/libs/range/test/adaptors.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/adaptors.cpp
   branches/release/libs/range/test/algorithm.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm.cpp
   branches/release/libs/range/test/algorithm_ext_test/
      - copied from r61043, /trunk/libs/range/test/algorithm_ext_test/
   branches/release/libs/range/test/algorithm_ext_test/copy_n.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/copy_n.cpp
   branches/release/libs/range/test/algorithm_ext_test/erase.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/erase.cpp
   branches/release/libs/range/test/algorithm_ext_test/for_each_ext.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/for_each_ext.cpp
   branches/release/libs/range/test/algorithm_ext_test/insert.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/insert.cpp
   branches/release/libs/range/test/algorithm_ext_test/iota.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/iota.cpp
   branches/release/libs/range/test/algorithm_ext_test/is_sorted.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/is_sorted.cpp
   branches/release/libs/range/test/algorithm_ext_test/overwrite.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/overwrite.cpp
   branches/release/libs/range/test/algorithm_ext_test/push_back.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/push_back.cpp
   branches/release/libs/range/test/algorithm_ext_test/push_front.cpp
      - copied unchanged from r61043, /trunk/libs/range/test/algorithm_ext_test/push_front.cpp
   branches/release/libs/range/test/algorithm_test/
      - copied from r60898, /trunk/libs/range/test/algorithm_test/
   branches/release/libs/range/test/algorithm_test/adjacent_find.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/adjacent_find.cpp
   branches/release/libs/range/test/algorithm_test/binary_search.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/binary_search.cpp
   branches/release/libs/range/test/algorithm_test/copy.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/copy.cpp
   branches/release/libs/range/test/algorithm_test/copy_backward.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/copy_backward.cpp
   branches/release/libs/range/test/algorithm_test/count.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/count.cpp
   branches/release/libs/range/test/algorithm_test/count_if.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/count_if.cpp
   branches/release/libs/range/test/algorithm_test/equal.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/equal.cpp
   branches/release/libs/range/test/algorithm_test/equal_range.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/equal_range.cpp
   branches/release/libs/range/test/algorithm_test/fill.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/fill.cpp
   branches/release/libs/range/test/algorithm_test/find.cpp
      - copied, changed from r60898, /trunk/libs/range/test/algorithm_test/find.cpp
   branches/release/libs/range/test/algorithm_test/find_end.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/find_end.cpp
   branches/release/libs/range/test/algorithm_test/find_first_of.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/find_first_of.cpp
   branches/release/libs/range/test/algorithm_test/find_if.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/find_if.cpp
   branches/release/libs/range/test/algorithm_test/for_each.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/for_each.cpp
   branches/release/libs/range/test/algorithm_test/generate.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/generate.cpp
   branches/release/libs/range/test/algorithm_test/heap.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/heap.cpp
   branches/release/libs/range/test/algorithm_test/includes.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/includes.cpp
   branches/release/libs/range/test/algorithm_test/inplace_merge.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/inplace_merge.cpp
   branches/release/libs/range/test/algorithm_test/lexicographical_compare.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/lexicographical_compare.cpp
   branches/release/libs/range/test/algorithm_test/lower_bound.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/lower_bound.cpp
   branches/release/libs/range/test/algorithm_test/max_element.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/max_element.cpp
   branches/release/libs/range/test/algorithm_test/merge.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/merge.cpp
   branches/release/libs/range/test/algorithm_test/min_element.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/min_element.cpp
   branches/release/libs/range/test/algorithm_test/mismatch.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/mismatch.cpp
   branches/release/libs/range/test/algorithm_test/next_permutation.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/next_permutation.cpp
   branches/release/libs/range/test/algorithm_test/nth_element.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/nth_element.cpp
   branches/release/libs/range/test/algorithm_test/partial_sort.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/partial_sort.cpp
   branches/release/libs/range/test/algorithm_test/partition.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/partition.cpp
   branches/release/libs/range/test/algorithm_test/prev_permutation.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/prev_permutation.cpp
   branches/release/libs/range/test/algorithm_test/random_shuffle.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/random_shuffle.cpp
   branches/release/libs/range/test/algorithm_test/remove.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/remove.cpp
   branches/release/libs/range/test/algorithm_test/remove_if.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/remove_if.cpp
   branches/release/libs/range/test/algorithm_test/replace.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/replace.cpp
   branches/release/libs/range/test/algorithm_test/replace_if.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/replace_if.cpp
   branches/release/libs/range/test/algorithm_test/reverse.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/reverse.cpp
   branches/release/libs/range/test/algorithm_test/rotate.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/rotate.cpp
   branches/release/libs/range/test/algorithm_test/search.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/search.cpp
   branches/release/libs/range/test/algorithm_test/set_difference.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/set_difference.cpp
   branches/release/libs/range/test/algorithm_test/set_intersection.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/set_intersection.cpp
   branches/release/libs/range/test/algorithm_test/set_symmetric_difference.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/set_symmetric_difference.cpp
   branches/release/libs/range/test/algorithm_test/set_union.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/set_union.cpp
   branches/release/libs/range/test/algorithm_test/sort.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/sort.cpp
   branches/release/libs/range/test/algorithm_test/stable_partition.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/stable_partition.cpp
   branches/release/libs/range/test/algorithm_test/stable_sort.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/stable_sort.cpp
   branches/release/libs/range/test/algorithm_test/transform.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/transform.cpp
   branches/release/libs/range/test/algorithm_test/unique.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/unique.cpp
   branches/release/libs/range/test/algorithm_test/upper_bound.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/algorithm_test/upper_bound.cpp
   branches/release/libs/range/test/combine.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/combine.cpp
   branches/release/libs/range/test/counting_range.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/counting_range.cpp
   branches/release/libs/range/test/irange.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/irange.cpp
   branches/release/libs/range/test/join.cpp
      - copied unchanged from r60898, /trunk/libs/range/test/join.cpp
   branches/release/libs/range/test/test_driver/
      - copied from r60898, /trunk/libs/range/test/test_driver/
   branches/release/libs/range/test/test_driver/range_return_test_driver.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_driver/range_return_test_driver.hpp
   branches/release/libs/range/test/test_function/
      - copied from r60898, /trunk/libs/range/test/test_function/
   branches/release/libs/range/test/test_function/check_equal_fn.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_function/check_equal_fn.hpp
   branches/release/libs/range/test/test_function/counted_function.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_function/counted_function.hpp
   branches/release/libs/range/test/test_function/equal_to_x.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_function/equal_to_x.hpp
   branches/release/libs/range/test/test_function/false_predicate.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_function/false_predicate.hpp
   branches/release/libs/range/test/test_function/greater_than_x.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_function/greater_than_x.hpp
   branches/release/libs/range/test/test_function/multiply_by_x.hpp
      - copied unchanged from r60898, /trunk/libs/range/test/test_function/multiply_by_x.hpp
Properties modified:
   branches/release/boost/range/ (props changed)
   branches/release/libs/range/ (props changed)
Text files modified:
   branches/release/boost/range/adaptor/adjacent_filtered.hpp | 20
   branches/release/boost/range/adaptor/copied.hpp | 46
   branches/release/boost/range/adaptor/filtered.hpp | 53
   branches/release/boost/range/adaptor/indexed.hpp | 123 +--
   branches/release/boost/range/adaptor/indirected.hpp | 20
   branches/release/boost/range/adaptor/replaced.hpp | 14
   branches/release/boost/range/adaptor/sliced.hpp | 75 -
   branches/release/boost/range/algorithm/adjacent_find.hpp | 188 +++--
   branches/release/boost/range/algorithm/binary_search.hpp | 44
   branches/release/boost/range/algorithm/copy.hpp | 28
   branches/release/boost/range/algorithm/copy_backward.hpp | 34
   branches/release/boost/range/algorithm/count.hpp | 44
   branches/release/boost/range/algorithm/count_if.hpp | 46
   branches/release/boost/range/algorithm/equal.hpp | 68 +
   branches/release/boost/range/algorithm/equal_range.hpp | 108 +-
   branches/release/boost/range/algorithm/fill.hpp | 28
   branches/release/boost/range/algorithm/fill_n.hpp | 30
   branches/release/boost/range/algorithm/find.hpp | 66 -
   branches/release/boost/range/algorithm/find_end.hpp | 159 +---
   branches/release/boost/range/algorithm/find_first_of.hpp | 162 +---
   branches/release/boost/range/algorithm/find_if.hpp | 70 -
   branches/release/boost/range/algorithm/for_each.hpp | 42
   branches/release/boost/range/algorithm/generate.hpp | 45
   branches/release/boost/range/algorithm/heap_algorithm.hpp | 301 ++++----
   branches/release/boost/range/algorithm/inplace_merge.hpp | 96 +-
   branches/release/boost/range/algorithm/lexicographical_compare.hpp | 62 +
   branches/release/boost/range/algorithm/lower_bound.hpp | 120 +--
   branches/release/boost/range/algorithm/max_element.hpp | 170 ++--
   branches/release/boost/range/algorithm/merge.hpp | 68 +
   branches/release/boost/range/algorithm/min_element.hpp | 170 ++--
   branches/release/boost/range/algorithm/mismatch.hpp | 233 +++---
   branches/release/boost/range/algorithm/nth_element.hpp | 88 +-
   branches/release/boost/range/algorithm/partial_sort.hpp | 90 +-
   branches/release/boost/range/algorithm/partial_sort_copy.hpp | 74 +-
   branches/release/boost/range/algorithm/partition.hpp | 88 +-
   branches/release/boost/range/algorithm/permutation.hpp | 163 ++--
   branches/release/boost/range/algorithm/random_shuffle.hpp | 84 +-
   branches/release/boost/range/algorithm/remove.hpp | 90 +-
   branches/release/boost/range/algorithm/remove_copy.hpp | 36
   branches/release/boost/range/algorithm/remove_if.hpp | 89 +-
   branches/release/boost/range/algorithm/replace.hpp | 52
   branches/release/boost/range/algorithm/replace_copy.hpp | 32
   branches/release/boost/range/algorithm/replace_copy_if.hpp | 40
   branches/release/boost/range/algorithm/replace_if.hpp | 53
   branches/release/boost/range/algorithm/reverse.hpp | 44
   branches/release/boost/range/algorithm/reverse_copy.hpp | 40
   branches/release/boost/range/algorithm/rotate.hpp | 50
   branches/release/boost/range/algorithm/rotate_copy.hpp | 10
   branches/release/boost/range/algorithm/search.hpp | 211 +++---
   branches/release/boost/range/algorithm/search_n.hpp | 227 +++---
   branches/release/boost/range/algorithm/set_algorithm.hpp | 336 +++++-----
   branches/release/boost/range/algorithm/sort.hpp | 81 +-
   branches/release/boost/range/algorithm/stable_partition.hpp | 87 +-
   branches/release/boost/range/algorithm/stable_sort.hpp | 84 +-
   branches/release/boost/range/algorithm/swap_ranges.hpp | 38
   branches/release/boost/range/algorithm/transform.hpp | 84 +-
   branches/release/boost/range/algorithm/unique.hpp | 160 ++--
   branches/release/boost/range/algorithm/unique_copy.hpp | 50
   branches/release/boost/range/algorithm/upper_bound.hpp | 124 +--
   branches/release/boost/range/algorithm_ext.hpp | 1
   branches/release/boost/range/algorithm_ext/copy_n.hpp | 40
   branches/release/boost/range/algorithm_ext/erase.hpp | 57 +
   branches/release/boost/range/algorithm_ext/for_each.hpp | 75 +
   branches/release/boost/range/algorithm_ext/insert.hpp | 27
   branches/release/boost/range/algorithm_ext/is_sorted.hpp | 48
   branches/release/boost/range/algorithm_ext/overwrite.hpp | 47
   branches/release/boost/range/algorithm_ext/push_back.hpp | 22
   branches/release/boost/range/algorithm_ext/push_front.hpp | 23
   branches/release/boost/range/as_literal.hpp | 30
   branches/release/boost/range/concepts.hpp | 327 ++++++++--
   branches/release/boost/range/const_iterator.hpp | 11
   branches/release/boost/range/detail/implementation_help.hpp | 14
   branches/release/boost/range/irange.hpp | 6
   branches/release/boost/range/iterator.hpp | 60
   branches/release/boost/range/iterator_range.hpp | 659 --------------------
   branches/release/boost/range/iterator_range_core.hpp | 212 +++---
   branches/release/boost/range/join.hpp | 8
   branches/release/boost/range/mutable_iterator.hpp | 11
   branches/release/boost/range/size.hpp | 2
   branches/release/boost/range/sub_range.hpp | 54
   branches/release/libs/range/doc/Jamfile.v2 | 29
   branches/release/libs/range/doc/boost_range.qbk | 1276 ++-------------------------------------
   branches/release/libs/range/doc/concepts.qbk | 12
   branches/release/libs/range/doc/html/index.html | 4
   branches/release/libs/range/doc/html/range/concepts/bidirectional_range.html | 26
   branches/release/libs/range/doc/html/range/concepts/concept_checking.html | 2
   branches/release/libs/range/doc/html/range/concepts/forward_range.html | 10
   branches/release/libs/range/doc/html/range/concepts/random_access_range.html | 14
   branches/release/libs/range/doc/html/range/concepts/single_pass_range.html | 16
   branches/release/libs/range/doc/html/range/introduction.html | 18
   branches/release/libs/range/doc/html/range/mfc_atl.html | 4
   branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html | 6
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html | 16
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html | 22
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html | 10
   branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html | 14
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html | 16
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/inner_product.html | 20
   branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/partial_sum.html | 16
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/includes.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_difference.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html | 12
   branches/release/libs/range/doc/html/range/reference/algorithms/set_algorithms/set_union.html | 12
   branches/release/libs/range/doc/html/range/reference/extending/method_2.html | 24
   branches/release/libs/range/doc/html/range/reference/extending/method_3/method_3_1.html | 12
   branches/release/libs/range/doc/html/range/reference/extending/method_3/method_3_2.html | 6
   branches/release/libs/range/doc/html/range/reference/overview.html | 2
   branches/release/libs/range/doc/html/range/reference/ranges/counting_range.html | 8
   branches/release/libs/range/doc/html/range/reference/ranges/irange.html | 10
   branches/release/libs/range/doc/html/range/reference/ranges/istream_range.html | 6
   branches/release/libs/range/doc/html/range/reference/semantics.html | 2
   branches/release/libs/range/doc/html/range/utilities/iterator_range.html | 6
   branches/release/libs/range/doc/html/range/utilities/join.html | 4
   branches/release/libs/range/doc/html/range/utilities/sub_range.html | 2
   branches/release/libs/range/doc/introduction.qbk | 6
   branches/release/libs/range/doc/reference/algorithm/find.qbk | 14
   branches/release/libs/range/doc/reference/algorithm/find_end.qbk | 32
   branches/release/libs/range/doc/reference/algorithm/find_first_of.qbk | 30
   branches/release/libs/range/doc/reference/algorithm/find_if.qbk | 12
   branches/release/libs/range/doc/reference/algorithm/lower_bound.qbk | 12
   branches/release/libs/range/doc/reference/algorithm/merge.qbk | 6
   branches/release/libs/range/doc/reference/algorithm/stable_partition.qbk | 2
   branches/release/libs/range/doc/reference/algorithm/upper_bound.qbk | 14
   branches/release/libs/range/doc/reference/algorithms.qbk | 1
   branches/release/libs/range/doc/reference/extending.qbk | 44
   branches/release/libs/range/doc/reference/numeric/inner_product.qbk | 4
   branches/release/libs/range/doc/reference/overview.qbk | 2
   branches/release/libs/range/index.html | 83 --
   branches/release/libs/range/test/Jamfile.v2 | 134 +++
   branches/release/libs/range/test/adl_conformance.cpp | 67 +-
   branches/release/libs/range/test/algorithm_test/find.cpp | 4
   branches/release/libs/range/test/compat2.cpp | 2
   branches/release/libs/range/test/const_ranges.cpp | 33
   branches/release/libs/range/test/iterator_pair.cpp | 79 +-
   branches/release/libs/range/test/iterator_range.cpp | 97 +-
   branches/release/libs/range/test/reversible_range.cpp | 51
   branches/release/libs/range/test/std_container.cpp | 51
   branches/release/libs/range/test/sub_range.cpp | 94 +-
   186 files changed, 4296 insertions(+), 5823 deletions(-)

Copied: branches/release/boost/range/adaptor/adjacent_filtered.hpp (from r60898, /trunk/boost/range/adaptor/adjacent_filtered.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/adjacent_filtered.hpp (original)
+++ branches/release/boost/range/adaptor/adjacent_filtered.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -104,7 +104,7 @@
 
                         typedef BOOST_DEDUCED_TYPENAME range_iterator<R>::type raw_iterator;
 
- P bi_pred;
+ P m_bi_pred;
 
                         // Get the first element in the half-open range that
                         // passes the filter predicate.
@@ -116,7 +116,7 @@
                                 {
                                         if (default_pass)
                                         {
- raw_iterator nxt = next(it);
+ raw_iterator nxt = ::boost::next(it);
                                                 while (nxt != last && !bi_pred(*it, *nxt))
                                                 {
                                                         ++it;
@@ -125,7 +125,7 @@
                                         }
                                         else
                                         {
- raw_iterator nxt = next(it);
+ raw_iterator nxt = ::boost::next(it);
                                                 for(; nxt != last; ++it, ++nxt)
                                                 {
                                                         if (bi_pred(*it, *nxt))
@@ -146,8 +146,8 @@
                         adjacent_filter_range( const P& p, R& r, bool default_pass )
                         : base_range( skip_iter( this, to_valid(boost::begin(r), boost::end(r), p, default_pass)),
                                                   skip_iter( this, boost::end(r) ) ),
- bi_pred( p ),
- _default_pass(default_pass)
+ m_bi_pred( p ),
+ m_default_pass(default_pass)
                         {
                         }
 
@@ -155,11 +155,11 @@
                         {
                                 BOOST_ASSERT( current != this->end().base() );
 
- current = to_valid(next(current), this->end().base(), bi_pred, _default_pass);
+ current = to_valid(::boost::next(current), this->end().base(), m_bi_pred, m_default_pass);
                         }
 
                 private:
- bool _default_pass;
+ bool m_default_pass;
                 };
 
                 template< class T >
@@ -214,7 +214,7 @@
 
         // Bring adjacent_filter_range into the boost namespace so that users of
         // this library may specify the return type of the '|' operator and
- // make_adjacent_filtered_range()
+ // adjacent_filter()
         using range_detail::adjacent_filter_range;
 
         namespace adaptors
@@ -222,8 +222,8 @@
                 namespace
                 {
                         const range_detail::forwarder<range_detail::adjacent_holder>
- adjacent_filtered =
- range_detail::forwarder<range_detail::adjacent_holder>();
+ adjacent_filtered =
+ range_detail::forwarder<range_detail::adjacent_holder>();
 
                         const range_detail::forwarder<range_detail::adjacent_excl_holder>
                                 adjacent_filtered_excl =

Copied: branches/release/boost/range/adaptor/copied.hpp (from r60898, /trunk/boost/range/adaptor/copied.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/copied.hpp (original)
+++ branches/release/boost/range/adaptor/copied.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,38 +18,28 @@
 
 namespace boost
 {
- namespace range_detail
+ namespace adaptors
         {
- template< class T >
- struct copy_holder
- : holder2<std::size_t>
- {
- copy_holder( std::size_t t, std::size_t u )
- : holder2<std::size_t>(t,u)
- { }
- };
-
- template< class CopyableRandomAccessRng, class Int >
- inline CopyableRandomAccessRng
- operator|( const CopyableRandomAccessRng& r, const copy_holder<Int>& f )
+ struct copied
+ {
+ copied(std::size_t t_, std::size_t u_)
+ : t(t_), u(u_) {}
+
+ std::size_t t;
+ std::size_t u;
+ };
+
+ template< class CopyableRandomAccessRng >
+ inline CopyableRandomAccessRng
+ operator|( const CopyableRandomAccessRng& r, const copied& f )
                 {
- iterator_range<
- BOOST_DEDUCED_TYPENAME range_iterator<const
+ iterator_range<
+ BOOST_DEDUCED_TYPENAME range_iterator<const
                                                                CopyableRandomAccessRng>::type >
- temp( sliced_impl( r, f ) );
+ temp( adaptors::slice( r, f.t, f.u ) );
                         return CopyableRandomAccessRng( temp.begin(), temp.end() );
                 }
-
- } // 'range_detail'
 
- namespace adaptors
- {
- namespace
- {
- const range_detail::forwarder2<range_detail::copy_holder>
- copied = range_detail::forwarder2<range_detail::copy_holder>();
- }
-
                 template<class CopyableRandomAccessRange>
                 inline CopyableRandomAccessRange
                 copy(const CopyableRandomAccessRange& rng, std::size_t t, std::size_t u)
@@ -58,11 +48,11 @@
                         BOOST_DEDUCED_TYPENAME range_iterator<const
                             CopyableRandomAccessRange>::type> temp(
                                 adaptors::slice(rng, t, u));
-
+
             return CopyableRandomAccessRange( temp.begin(), temp.end() );
                 }
         } // 'adaptors'
-
+
 }
 
 #endif

Copied: branches/release/boost/range/adaptor/filtered.hpp (from r60898, /trunk/boost/range/adaptor/filtered.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/filtered.hpp (original)
+++ branches/release/boost/range/adaptor/filtered.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -20,22 +20,21 @@
         namespace range_detail
         {
                 template< class P, class R >
- struct filter_range :
- boost::iterator_range<
- boost::filter_iterator< P,
- BOOST_DEDUCED_TYPENAME range_iterator<R>::type
- >
- >
+ struct filter_range :
+ boost::iterator_range<
+ boost::filter_iterator< P,
+ BOOST_DEDUCED_TYPENAME range_iterator<R>::type
+ >
+ >
                 {
                 private:
                         typedef boost::iterator_range<
- boost::filter_iterator< P,
- BOOST_DEDUCED_TYPENAME range_iterator<R>::type
- >
- >
- base;
+ boost::filter_iterator< P,
+ BOOST_DEDUCED_TYPENAME range_iterator<R>::type
+ >
+ > base;
                 public:
- filter_range( P p, R& r )
+ filter_range( P p, R& r )
                         : base( make_filter_iterator( p, boost::begin(r), boost::end(r) ),
                                         make_filter_iterator( p, boost::end(r), boost::end(r) ) )
                         { }
@@ -47,48 +46,48 @@
                         filter_holder( T r ) : holder<T>(r)
                         { }
                 };
-
+
                 template< class InputRng, class Predicate >
- inline filter_range<Predicate, InputRng>
- operator|( InputRng& r,
+ inline filter_range<Predicate, InputRng>
+ operator|( InputRng& r,
                                    const filter_holder<Predicate>& f )
                 {
- return filter_range<Predicate, InputRng>( f.val, r );
+ return filter_range<Predicate, InputRng>( f.val, r );
                 }
-
+
                 template< class InputRng, class Predicate >
- inline filter_range<Predicate, const InputRng>
- operator|( const InputRng& r,
+ inline filter_range<Predicate, const InputRng>
+ operator|( const InputRng& r,
                                    const filter_holder<Predicate>& f )
                 {
- return filter_range<Predicate, const InputRng>( f.val, r );
+ return filter_range<Predicate, const InputRng>( f.val, r );
                 }
-
+
         } // 'range_detail'
 
         // Unusual use of 'using' is intended to bring filter_range into the boost namespace
         // while leaving the mechanics of the '|' operator in range_detail and maintain
         // argument dependent lookup.
         // filter_range logically needs to be in the boost namespace to allow user of
- // the library to define the return type for make_filtered_range()
+ // the library to define the return type for filter()
         using range_detail::filter_range;
 
         namespace adaptors
- {
+ {
                 namespace
                 {
- const range_detail::forwarder<range_detail::filter_holder>
- filtered =
+ const range_detail::forwarder<range_detail::filter_holder>
+ filtered =
                                        range_detail::forwarder<range_detail::filter_holder>();
                 }
-
+
                 template<class InputRange, class Predicate>
                 inline filter_range<Predicate, InputRange>
                 filter(InputRange& rng, Predicate filter_pred)
                 {
                     return range_detail::filter_range<Predicate, InputRange>( filter_pred, rng );
             }
-
+
             template<class InputRange, class Predicate>
             inline filter_range<Predicate, const InputRange>
             filter(const InputRange& rng, Predicate filter_pred)

Copied: branches/release/boost/range/adaptor/indexed.hpp (from r60898, /trunk/boost/range/adaptor/indexed.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/indexed.hpp (original)
+++ branches/release/boost/range/adaptor/indexed.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -27,7 +27,19 @@
 
 namespace boost
 {
-
+ namespace adaptors
+ {
+ // This structure exists to carry the parameters from the '|' operator
+ // to the index adapter. The expression rng | indexed(1) instantiates
+ // this structure and passes it as the right-hand operand to the
+ // '|' operator.
+ struct indexed
+ {
+ explicit indexed(std::size_t x) : val(x) {}
+ std::size_t val;
+ };
+ }
+
         namespace range_detail
         {
                 template< class Iter >
@@ -35,52 +47,52 @@
                         : public boost::iterator_adaptor< indexed_iterator<Iter>, Iter >
                 {
                 private:
- typedef boost::iterator_adaptor< indexed_iterator<Iter>, Iter >
- base;
+ typedef boost::iterator_adaptor< indexed_iterator<Iter>, Iter >
+ base;
 
                         typedef BOOST_DEDUCED_TYPENAME base::difference_type index_type;
 
- index_type index_;
-
+ index_type m_index;
+
                 public:
                         explicit indexed_iterator( Iter i, index_type index )
- : base(i), index_(index)
+ : base(i), m_index(index)
                         {
- BOOST_ASSERT( index_ >= 0 && "Indexed Iterator out of bounds" );
+ BOOST_ASSERT( m_index >= 0 && "Indexed Iterator out of bounds" );
                         }
 
                         index_type index() const
                         {
- return index_;
+ return m_index;
                         }
-
+
                  private:
                         friend class boost::iterator_core_access;
-
- void increment()
- {
- ++index_;
+
+ void increment()
+ {
+ ++m_index;
                 ++(this->base_reference());
                         }
 
 
                         void decrement()
             {
- BOOST_ASSERT( index_ > 0 && "Indexed Iterator out of bounds" );
- --index_;
+ BOOST_ASSERT( m_index > 0 && "Indexed Iterator out of bounds" );
+ --m_index;
                 --(this->base_reference());
             }
 
                         void advance( index_type n )
             {
- index_ += n;
- BOOST_ASSERT( index_ >= 0 && "Indexed Iterator out of bounds" );
+ m_index += n;
+ BOOST_ASSERT( m_index >= 0 && "Indexed Iterator out of bounds" );
                 this->base_reference() += n;
             }
                 };
 
         template< class Rng >
- struct indexed_range :
+ struct indexed_range :
             iterator_range< indexed_iterator<BOOST_DEDUCED_TYPENAME range_iterator<Rng>::type> >
         {
         private:
@@ -90,80 +102,51 @@
                 base;
         public:
             template< class Index >
- indexed_range( Index i, Rng& r )
+ indexed_range( Index i, Rng& r )
               : base( iter_type(boost::begin(r), i), iter_type(boost::end(r),i) )
             { }
         };
 
-
- template< class T >
- struct index_holder : holder<T>
- {
- index_holder( T r ) : holder<T>(r)
- { }
- };
-
- struct index_forwarder
- {
- template< class T >
- index_holder<T> operator()( T r ) const
- {
- return r;
- }
-
- index_holder<int> operator()( int r = 0 ) const
- {
- return r;
- }
- };
-
- template< class SinglePassRange >
- inline indexed_range<SinglePassRange>
- operator|( SinglePassRange& r,
- const index_holder<typename range_difference<SinglePassRange>::type>& f )
- {
- return indexed_range<SinglePassRange>( f.val, r );
- }
-
- template< class SinglePassRange >
- inline indexed_range<const SinglePassRange>
- operator|( const SinglePassRange& r,
- const index_holder<typename range_difference<SinglePassRange>::type>& f )
- {
- return indexed_range<const SinglePassRange>( f.val, r );
- }
-
         } // 'range_detail'
 
         // Make this available to users of this library. It will sometimes be
         // required since it is the return type of operator '|' and
- // make_indexed_range().
+ // index().
         using range_detail::indexed_range;
 
         namespace adaptors
- {
- namespace
+ {
+ template< class SinglePassRange >
+ inline indexed_range<SinglePassRange>
+ operator|( SinglePassRange& r,
+ const indexed& f )
+ {
+ return indexed_range<SinglePassRange>( f.val, r );
+ }
+
+ template< class SinglePassRange >
+ inline indexed_range<const SinglePassRange>
+ operator|( const SinglePassRange& r,
+ const indexed& f )
                 {
- const range_detail::forwarder<range_detail::index_holder>
- indexed =
- range_detail::forwarder<range_detail::index_holder>();
+ return indexed_range<const SinglePassRange>( f.val, r );
                 }
-
+
                 template<class SinglePassRange, class Index>
                 inline indexed_range<SinglePassRange>
- index(SinglePassRange& rng, Index index)
+ index(SinglePassRange& rng, Index index_value)
                 {
- return indexed_range<SinglePassRange>(index, rng);
+ return indexed_range<SinglePassRange>(index_value, rng);
             }
-
+
             template<class SinglePassRange, class Index>
             inline indexed_range<const SinglePassRange>
- index(const SinglePassRange& rng, Index index)
+ index(const SinglePassRange& rng, Index index_value)
             {
- return indexed_range<const SinglePassRange>(index, rng);
+ return indexed_range<const SinglePassRange>(index_value, rng);
         }
         } // 'adaptors'
-
+
 }
 
 #ifdef BOOST_MSVC

Copied: branches/release/boost/range/adaptor/indirected.hpp (from r60898, /trunk/boost/range/adaptor/indirected.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/indirected.hpp (original)
+++ branches/release/boost/range/adaptor/indirected.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -21,22 +21,22 @@
                 template< class R >
                 struct indirect_range :
                         public boost::iterator_range<
- boost::indirect_iterator<
- BOOST_DEDUCED_TYPENAME range_iterator<R>::type
- >
- >
+ boost::indirect_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<R>::type
+ >
+ >
                 {
                 private:
                         typedef boost::iterator_range<
- boost::indirect_iterator<
- BOOST_DEDUCED_TYPENAME range_iterator<R>::type
- >
- >
+ boost::indirect_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<R>::type
+ >
+ >
                                 base;
 
                 public:
- indirect_range( R& r )
- : base( r )
+ explicit indirect_range( R& r )
+ : base( r )
                         { }
                 };
 

Copied: branches/release/boost/range/adaptor/replaced.hpp (from r60898, /trunk/boost/range/adaptor/replaced.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/replaced.hpp (original)
+++ branches/release/boost/range/adaptor/replaced.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -32,18 +32,18 @@
                         typedef const Value& first_argument_type;
 
                         replace_value(const Value& from, const Value& to)
- : _from(from), _to(to)
+ : m_from(from), m_to(to)
                         {
                         }
 
                         const Value& operator()(const Value& x) const
                         {
- return (x == _from) ? _to : x;
+ return (x == m_from) ? m_to : x;
                         }
 
                 private:
- Value _from;
- Value _to;
+ Value m_from;
+ Value m_to;
                 };
 
                 template< class R >
@@ -109,7 +109,7 @@
                                 replaced =
                                         range_detail::forwarder2<range_detail::replace_holder>();
                 }
-
+
                 template<class InputRange>
                 inline replace_range<InputRange>
                 replace(InputRange& rng,
@@ -118,7 +118,7 @@
         {
             return replace_range<InputRange>(rng, from, to);
         }
-
+
         template<class InputRange>
         inline replace_range<const InputRange>
         replace(const InputRange& rng,
@@ -127,7 +127,7 @@
         {
             return replace_range<const InputRange>(rng, from ,to);
         }
-
+
         } // 'adaptors'
 } // 'boost'
 

Copied: branches/release/boost/range/adaptor/sliced.hpp (from r60898, /trunk/boost/range/adaptor/sliced.hpp)
==============================================================================
--- /trunk/boost/range/adaptor/sliced.hpp (original)
+++ branches/release/boost/range/adaptor/sliced.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -19,17 +19,25 @@
 {
     namespace adaptors
     {
+ struct sliced
+ {
+ sliced(std::size_t t_, std::size_t u_)
+ : t(t_), u(u_) {}
+ std::size_t t;
+ std::size_t u;
+ };
+
                 template< class RandomAccessRange >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type >
                 slice( RandomAccessRange& rng, std::size_t t, std::size_t u )
                 {
                         BOOST_ASSERT( t <= u && "error in slice indices" );
- BOOST_ASSERT( static_cast<std::size_t>(boost::size(rng)) >= u &&
+ BOOST_ASSERT( static_cast<std::size_t>(boost::size(rng)) >= u &&
                                                   "second slice index out of bounds" );
 
- return make_iterator_range( rng, t, u - boost::size(rng) );
+ return boost::make_iterator_range( rng, t, u - boost::size(rng) );
                 }
-
+
                 template< class RandomAccessRange >
                 inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type >
                 slice( const RandomAccessRange& rng, std::size_t t, std::size_t u )
@@ -37,56 +45,27 @@
                     BOOST_ASSERT( t <= u && "error in slice indices" );
                     BOOST_ASSERT( static_cast<std::size_t>(boost::size(rng)) >= u &&
                                   "second slice index out of bounds" );
-
- return make_iterator_range( rng, t, u - boost::size(rng) );
- }
- } // 'adaptors'
-
- namespace range_detail
- {
- template< class T >
- struct slice_holder
- : holder2<std::size_t>
- {
- slice_holder( std::size_t t, std::size_t u )
- : holder2<std::size_t>(t,u)
- { }
- };
-
- template<class R, class H>
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<R>::type >
- sliced_impl( R& r, const H& f)
- {
- return adaptors::slice(r, f.val1, f.val2);
- }
-
- template< class RandomAccessRange, class Int >
- inline iterator_range<
- BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type >
- operator|( RandomAccessRange& r, const slice_holder<Int>& f )
- {
- return sliced_impl( r, f );
+
+ return boost::make_iterator_range( rng, t, u - boost::size(rng) );
                 }
 
- template< class RandomAccessRange, class Int >
- inline iterator_range<
- BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type >
- operator|( const RandomAccessRange& r, const slice_holder<Int>& f )
+ template< class RandomAccessRange >
+ inline iterator_range<
+ BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type >
+ operator|( RandomAccessRange& r, const sliced& f )
                 {
- return sliced_impl( r, f );
+ return adaptors::slice( r, f.t, f.u );
                 }
 
- } // 'range_detail'
-
- namespace adaptors
- {
- namespace
+ template< class RandomAccessRange >
+ inline iterator_range<
+ BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type >
+ operator|( const RandomAccessRange& r, const sliced& f )
                 {
- const range_detail::forwarder2<range_detail::slice_holder>
- sliced = range_detail::forwarder2<range_detail::slice_holder>();
+ return adaptors::slice( r, f.t, f.u );
                 }
- }
-
-}
+
+ } // namespace adaptors
+} // namespace boost
 
 #endif

Copied: branches/release/boost/range/algorithm/adjacent_find.hpp (from r60898, /trunk/boost/range/algorithm/adjacent_find.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/adjacent_find.hpp (original)
+++ branches/release/boost/range/algorithm/adjacent_find.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -19,101 +19,107 @@
 
 namespace boost
 {
- /// \brief template function adjacent_find
- ///
- /// range-based version of the adjacent_find std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< typename ForwardRange >
- inline typename range_iterator<ForwardRange>::type
- adjacent_find(ForwardRange & rng)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return std::adjacent_find(boost::begin(rng),boost::end(rng));
- }
-
- /// \overload
- template< typename ForwardRange >
- inline typename range_iterator<const ForwardRange>::type
- adjacent_find(const ForwardRange& rng)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return std::adjacent_find(boost::begin(rng),boost::end(rng));
- }
-
- /// \overload
- template< typename ForwardRange, typename BinaryPredicate >
- inline typename range_iterator<ForwardRange>::type
- adjacent_find(ForwardRange & rng, BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<ForwardRange>::type,
- typename range_value<ForwardRange>::type>));
- return std::adjacent_find(boost::begin(rng),boost::end(rng),pred);
- }
-
- /// \overload
- template< typename ForwardRange, typename BinaryPredicate >
- inline typename range_iterator<const ForwardRange>::type
- adjacent_find(const ForwardRange& rng, BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<const ForwardRange>::type,
- typename range_value<const ForwardRange>::type>));
- return std::adjacent_find(boost::begin(rng),boost::end(rng),pred);
- }
+
+/// \brief template function adjacent_find
+///
+/// range-based version of the adjacent_find std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template< typename ForwardRange >
+inline typename range_iterator<ForwardRange>::type
+adjacent_find(ForwardRange & rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return std::adjacent_find(boost::begin(rng),boost::end(rng));
+}
+
+/// \overload
+template< typename ForwardRange >
+inline typename range_iterator<const ForwardRange>::type
+adjacent_find(const ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return std::adjacent_find(boost::begin(rng),boost::end(rng));
+}
+
+/// \overload
+template< typename ForwardRange, typename BinaryPredicate >
+inline typename range_iterator<ForwardRange>::type
+adjacent_find(ForwardRange & rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<ForwardRange>::type,
+ typename range_value<ForwardRange>::type>));
+ return std::adjacent_find(boost::begin(rng),boost::end(rng),pred);
+}
+
+/// \overload
+template< typename ForwardRange, typename BinaryPredicate >
+inline typename range_iterator<const ForwardRange>::type
+adjacent_find(const ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<const ForwardRange>::type,
+ typename range_value<const ForwardRange>::type>));
+ return std::adjacent_find(boost::begin(rng),boost::end(rng),pred);
+}
 
 // range_return overloads
 
- /// \overload
- template< range_return_value re, typename ForwardRange >
- inline typename range_return<ForwardRange,re>::type
- adjacent_find(ForwardRange & rng)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return range_return<ForwardRange,re>::
- pack(std::adjacent_find(boost::begin(rng),boost::end(rng)),
- rng);
- }
-
- /// \overload
- template< range_return_value re, typename ForwardRange >
- inline typename range_return<const ForwardRange,re>::type
- adjacent_find(const ForwardRange& rng)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return range_return<const ForwardRange,re>::
- pack(std::adjacent_find(boost::begin(rng),boost::end(rng)),
- rng);
- }
-
- /// \overload
- template< range_return_value re, typename ForwardRange, typename BinaryPredicate >
- inline typename range_return<ForwardRange,re>::type
- adjacent_find(ForwardRange& rng, BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<ForwardRange>::type,
- typename range_value<ForwardRange>::type>));
- return range_return<ForwardRange,re>::
- pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred),
- rng);
- }
-
- /// \overload
- template< range_return_value re, typename ForwardRange, typename BinaryPredicate >
- inline typename range_return<const ForwardRange,re>::type
- adjacent_find(const ForwardRange& rng, BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return range_return<const ForwardRange,re>::
- pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred),
- rng);
- }
+/// \overload
+template< range_return_value re, typename ForwardRange >
+inline typename range_return<ForwardRange,re>::type
+adjacent_find(ForwardRange & rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return range_return<ForwardRange,re>::
+ pack(std::adjacent_find(boost::begin(rng),boost::end(rng)),
+ rng);
+}
+
+/// \overload
+template< range_return_value re, typename ForwardRange >
+inline typename range_return<const ForwardRange,re>::type
+adjacent_find(const ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return range_return<const ForwardRange,re>::
+ pack(std::adjacent_find(boost::begin(rng),boost::end(rng)),
+ rng);
 }
 
+/// \overload
+template< range_return_value re, typename ForwardRange, typename BinaryPredicate >
+inline typename range_return<ForwardRange,re>::type
+adjacent_find(ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<ForwardRange>::type,
+ typename range_value<ForwardRange>::type>));
+ return range_return<ForwardRange,re>::
+ pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred),
+ rng);
+}
+
+/// \overload
+template< range_return_value re, typename ForwardRange, typename BinaryPredicate >
+inline typename range_return<const ForwardRange,re>::type
+adjacent_find(const ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return range_return<const ForwardRange,re>::
+ pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred),
+ rng);
+}
+
+ } // namespace range
+ using range::adjacent_find;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/binary_search.hpp (from r60898, /trunk/boost/range/algorithm/binary_search.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/binary_search.hpp (original)
+++ branches/release/boost/range/algorithm/binary_search.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,27 +17,33 @@
 
 namespace boost
 {
- /// \brief template function binary_search
- ///
- /// range-based version of the binary_search std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class ForwardRange, class Value>
- inline bool binary_search(const ForwardRange& rng, const Value& val)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::binary_search(boost::begin(rng), boost::end(rng), val);
- }
 
- /// \overload
- template<class ForwardRange, class Value, class BinaryPredicate>
- inline bool binary_search(const ForwardRange& rng, const Value& val,
- BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::binary_search(boost::begin(rng), boost::end(rng), val, pred);
- }
+/// \brief template function binary_search
+///
+/// range-based version of the binary_search std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class ForwardRange, class Value>
+inline bool binary_search(const ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::binary_search(boost::begin(rng), boost::end(rng), val);
+}
+
+/// \overload
+template<class ForwardRange, class Value, class BinaryPredicate>
+inline bool binary_search(const ForwardRange& rng, const Value& val,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::binary_search(boost::begin(rng), boost::end(rng), val, pred);
 }
 
+ } // namespace range
+ using range::binary_search;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/copy.hpp (from r60898, /trunk/boost/range/algorithm/copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/copy.hpp (original)
+++ branches/release/boost/range/algorithm/copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,18 +18,24 @@
 
 namespace boost
 {
- /// \brief template function copy
- ///
- /// range-based version of the copy std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre OutputIterator is a model of the OutputIteratorConcept
- template< class SinglePassRange, class OutputIterator >
- inline OutputIterator copy(const SinglePassRange& rng, OutputIterator out)
+ namespace range
     {
- //BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
- return std::copy(boost::begin(rng),boost::end(rng),out);
- }
+
+/// \brief template function copy
+///
+/// range-based version of the copy std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre OutputIterator is a model of the OutputIteratorConcept
+template< class SinglePassRange, class OutputIterator >
+inline OutputIterator copy(const SinglePassRange& rng, OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::copy(boost::begin(rng),boost::end(rng),out);
 }
 
+ } // namespace range
+ using range::copy;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/copy_backward.hpp (from r60898, /trunk/boost/range/algorithm/copy_backward.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/copy_backward.hpp (original)
+++ branches/release/boost/range/algorithm/copy_backward.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,21 +17,27 @@
 
 namespace boost
 {
- /// \brief template function copy_backward
- ///
- /// range-based version of the copy_backwards std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- /// \pre BidirectionalTraversalWriteableIterator is a model of the BidirectionalIteratorConcept
- /// \pre BidirectionalTraversalWriteableIterator is a model of the WriteableIteratorConcept
- template< class BidirectionalRange, class BidirectionalTraversalWriteableIterator >
- inline BidirectionalTraversalWriteableIterator
- copy_backward(const BidirectionalRange& rng,
- BidirectionalTraversalWriteableIterator out)
+ namespace range
     {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- return std::copy_backward(boost::begin(rng), boost::end(rng), out);
- }
+
+/// \brief template function copy_backward
+///
+/// range-based version of the copy_backwards std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+/// \pre BidirectionalTraversalWriteableIterator is a model of the BidirectionalIteratorConcept
+/// \pre BidirectionalTraversalWriteableIterator is a model of the WriteableIteratorConcept
+template< class BidirectionalRange, class BidirectionalTraversalWriteableIterator >
+inline BidirectionalTraversalWriteableIterator
+copy_backward(const BidirectionalRange& rng,
+ BidirectionalTraversalWriteableIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::copy_backward(boost::begin(rng), boost::end(rng), out);
 }
 
+ } // namespace range
+ using range::copy_backward;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/count.hpp (from r60898, /trunk/boost/range/algorithm/count.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/count.hpp (original)
+++ branches/release/boost/range/algorithm/count.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,27 +18,33 @@
 
 namespace boost
 {
- /// \brief template function count
- ///
- /// range-based version of the count std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- template< class SinglePassRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange>::type
- count(SinglePassRange& rng, const Value& val)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::count(boost::begin(rng), boost::end(rng), val);
- }
 
- /// \overload
- template< class SinglePassRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange const>::type
- count(const SinglePassRange& rng, const Value& val)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::count(boost::begin(rng), boost::end(rng), val);
- }
+/// \brief template function count
+///
+/// range-based version of the count std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+template< class SinglePassRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange>::type
+count(SinglePassRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::count(boost::begin(rng), boost::end(rng), val);
+}
+
+/// \overload
+template< class SinglePassRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange const>::type
+count(const SinglePassRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
+ return std::count(boost::begin(rng), boost::end(rng), val);
 }
 
+ } // namespace range
+ using range::count;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/count_if.hpp (from r60898, /trunk/boost/range/algorithm/count_if.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/count_if.hpp (original)
+++ branches/release/boost/range/algorithm/count_if.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,28 +18,34 @@
 
 namespace boost
 {
- /// \brief template function count_if
- ///
- /// range-based version of the count_if std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre UnaryPredicate is a model of the UnaryPredicateConcept
- template< class SinglePassRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME boost::range_difference<SinglePassRange>::type
- count_if(SinglePassRange& rng, UnaryPredicate pred)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::count_if(boost::begin(rng), boost::end(rng), pred);
- }
 
- /// \overload
- template< class SinglePassRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME boost::range_difference<const SinglePassRange>::type
- count_if(const SinglePassRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::count_if(boost::begin(rng), boost::end(rng), pred);
- }
+/// \brief template function count_if
+///
+/// range-based version of the count_if std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre UnaryPredicate is a model of the UnaryPredicateConcept
+template< class SinglePassRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME boost::range_difference<SinglePassRange>::type
+count_if(SinglePassRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::count_if(boost::begin(rng), boost::end(rng), pred);
+}
+
+/// \overload
+template< class SinglePassRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME boost::range_difference<const SinglePassRange>::type
+count_if(const SinglePassRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
+ return std::count_if(boost::begin(rng), boost::end(rng), pred);
 }
 
+ } // namespace range
+ using range::count_if;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/equal.hpp (from r60898, /trunk/boost/range/algorithm/equal.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/equal.hpp (original)
+++ branches/release/boost/range/algorithm/equal.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -143,40 +143,46 @@
 
             return equal_impl(first1, last1, first2, last2, pred, tag1, tag2);
         }
-
- }
 
- /// \brief template function equal
- ///
- /// range-based version of the equal std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< class SinglePassRange1, class SinglePassRange2 >
- inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2 )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+ } // namespace range_detail
 
- return range_detail::equal(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2) );
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
- inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2,
- BinaryPredicate pred )
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
 
- return range_detail::equal(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2),
- pred);
- }
-}
+ /// \brief template function equal
+ ///
+ /// range-based version of the equal std algorithm
+ ///
+ /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+ /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+ /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+ template< class SinglePassRange1, class SinglePassRange2 >
+ inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2 )
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::equal(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2) );
+ }
+
+ /// \overload
+ template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
+ inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2,
+ BinaryPredicate pred )
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::equal(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2),
+ pred);
+ }
+
+ } // namespace range
+ using range::equal;
+} // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/equal_range.hpp (from r60898, /trunk/boost/range/algorithm/equal_range.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/equal_range.hpp (original)
+++ branches/release/boost/range/algorithm/equal_range.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,58 +17,64 @@
 
 namespace boost
 {
- /// \brief template function equal_range
- ///
- /// range-based version of the equal_range std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre SortPredicate is a model of the BinaryPredicateConcept
- template<class ForwardRange, class Value>
- inline std::pair<
- BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
- >
- equal_range(ForwardRange& rng, const Value& val)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::equal_range(boost::begin(rng), boost::end(rng), val);
- }
-
- /// \overload
- template<class ForwardRange, class Value>
- inline std::pair<
- BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
- >
- equal_range(const ForwardRange& rng, const Value& val)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::equal_range(boost::begin(rng), boost::end(rng), val);
- }
-
- /// \overload
- template<class ForwardRange, class Value, class SortPredicate>
- inline std::pair<
- BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
- >
- equal_range(ForwardRange& rng, const Value& val, SortPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
- }
-
- /// \overload
- template<class ForwardRange, class Value, class SortPredicate>
- inline std::pair<
- BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
- >
- equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
- }
+
+/// \brief template function equal_range
+///
+/// range-based version of the equal_range std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre SortPredicate is a model of the BinaryPredicateConcept
+template<class ForwardRange, class Value>
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
+ >
+equal_range(ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::equal_range(boost::begin(rng), boost::end(rng), val);
+}
+
+/// \overload
+template<class ForwardRange, class Value>
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
+ >
+equal_range(const ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::equal_range(boost::begin(rng), boost::end(rng), val);
 }
 
+/// \overload
+template<class ForwardRange, class Value, class SortPredicate>
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
+ >
+equal_range(ForwardRange& rng, const Value& val, SortPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
+}
+
+/// \overload
+template<class ForwardRange, class Value, class SortPredicate>
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
+ >
+equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
+}
+
+ } // namespace range
+ using range::equal_range;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/fill.hpp (from r60898, /trunk/boost/range/algorithm/fill.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/fill.hpp (original)
+++ branches/release/boost/range/algorithm/fill.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,18 +17,24 @@
 
 namespace boost
 {
- /// \brief template function fill
- ///
- /// range-based version of the fill std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class Value >
- inline ForwardRange& fill(ForwardRange& rng, const Value& val)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::fill(boost::begin(rng), boost::end(rng), val);
- return rng;
- }
+
+/// \brief template function fill
+///
+/// range-based version of the fill std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class Value >
+inline ForwardRange& fill(ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ std::fill(boost::begin(rng), boost::end(rng), val);
+ return rng;
+}
+
+ } // namespace range
+ using range::fill;
 }
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/fill_n.hpp (from r60898, /trunk/boost/range/algorithm/fill_n.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/fill_n.hpp (original)
+++ branches/release/boost/range/algorithm/fill_n.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,19 +18,25 @@
 
 namespace boost
 {
- /// \brief template function fill_n
- ///
- /// range-based version of the fill_n std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class Size, class Value >
- inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- BOOST_ASSERT( static_cast<Size>(std::distance(boost::begin(rng), boost::end(rng))) >= n );
- std::fill_n(boost::begin(rng), n, val);
- return rng;
- }
+
+/// \brief template function fill_n
+///
+/// range-based version of the fill_n std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class Size, class Value >
+inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ BOOST_ASSERT( static_cast<Size>(std::distance(boost::begin(rng), boost::end(rng))) >= n );
+ std::fill_n(boost::begin(rng), n, val);
+ return rng;
 }
 
+ } // namespace range
+ using range::fill_n;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/find.hpp (from r60898, /trunk/boost/range/algorithm/find.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/find.hpp (original)
+++ branches/release/boost/range/algorithm/find.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,49 +18,37 @@
 
 namespace boost
 {
- /// \brief template function find
- ///
- /// range-based version of the find std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- template< class SinglePassRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
- find( SinglePassRange& rng, const Value& val )
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::find(boost::begin(rng), boost::end(rng), val);
- }
- /// \overload
- template< class SinglePassRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type
- find( const SinglePassRange& rng, const Value& val )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::find(boost::begin(rng), boost::end(rng), val);
- }
+
+/// \brief template function find
+///
+/// range-based version of the find std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+template< class SinglePassRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
+find( SinglePassRange& rng, const Value& val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::find(boost::begin(rng), boost::end(rng), val);
+}
 
 // range_return overloads
 
- /// \overload
- template< range_return_value re, class SinglePassRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange,re>::type
- find( SinglePassRange& rng, const Value& val )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return range_return<SinglePassRange,re>::
- pack(std::find(boost::begin(rng), boost::end(rng), val),
- rng);
- }
- /// \overload
- template< range_return_value re, class SinglePassRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<const SinglePassRange,re>::type
- find( const SinglePassRange& rng, const Value& val )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return range_return<const SinglePassRange,re>::
- pack(std::find(boost::begin(rng), boost::end(rng), val),
- rng);
- }
+/// \overload
+template< range_return_value re, class SinglePassRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange,re>::type
+find( SinglePassRange& rng, const Value& val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return range_return<SinglePassRange,re>::
+ pack(std::find(boost::begin(rng), boost::end(rng), val),
+ rng);
+}
+
+ } // namespace range
+ using range::find;
 }
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/find_end.hpp (from r60898, /trunk/boost/range/algorithm/find_end.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/find_end.hpp (original)
+++ branches/release/boost/range/algorithm/find_end.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,119 +18,70 @@
 
 namespace boost
 {
- /// \brief template function find_end
- ///
- /// range-based version of the find_end std algorithm
- ///
- /// \pre ForwardRange1 is a model of the ForwardRangeConcept
- /// \pre ForwardRange2 is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_iterator< ForwardRange1 >::type
- find_end(ForwardRange1 & rng1, ForwardRange2 const & rng2)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
 
- return std::find_end(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template< class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange1>::type
- find_end(ForwardRange1 const & rng1, ForwardRange2 const & rng2)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
-
- return std::find_end(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange1>::type
- find_end(ForwardRange1 & rng1, ForwardRange2 const & rng2, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+/// \brief template function find_end
+///
+/// range-based version of the find_end std algorithm
+///
+/// \pre ForwardRange1 is a model of the ForwardRangeConcept
+/// \pre ForwardRange2 is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template< class ForwardRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_iterator< ForwardRange1 >::type
+find_end(ForwardRange1 & rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
- return std::find_end(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred);
- }
-
- /// \overload
- template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange1>::type
- find_end(ForwardRange1 const & rng1, ForwardRange2 const & rng2, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+ return std::find_end(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2));
+}
 
- return std::find_end(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
- find_end(ForwardRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+/// \overload
+template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange1>::type
+find_end(ForwardRange1 & rng1, const ForwardRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
- return range_return<ForwardRange1,re>::
- pack(std::find_end(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2)),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange1,re>::type
- find_end(const ForwardRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+ return std::find_end(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2),pred);
+}
 
- return range_return<const ForwardRange1,re>::
- pack(std::find_end(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2)),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2,
- class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
- find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+/// \overload
+template< range_return_value re, class ForwardRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
+find_end(ForwardRange1& rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
- return range_return<ForwardRange1,re>::
- pack(std::find_end(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2,
- class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange1,re>::type
- find_end(const ForwardRange1& rng1, const ForwardRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+ return range_return<ForwardRange1,re>::
+ pack(std::find_end(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2)),
+ rng1);
+}
 
- return range_return<const ForwardRange1,re>::
- pack(std::find_end(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred),
- rng1);
- }
+/// \overload
+template< range_return_value re, class ForwardRange1, class ForwardRange2,
+ class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
+find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
+ return range_return<ForwardRange1,re>::
+ pack(std::find_end(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), pred),
+ rng1);
 }
 
+ } // namespace range
+ using range::find_end;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/find_first_of.hpp (from r60898, /trunk/boost/range/algorithm/find_first_of.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/find_first_of.hpp (original)
+++ branches/release/boost/range/algorithm/find_first_of.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,122 +18,72 @@
 
 namespace boost
 {
- /// \brief template function find_first_of
- ///
- /// range-based version of the find_first_of std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre ForwardRange2 is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< class SinglePassRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type
- find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
 
- return std::find_first_of(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template< class SinglePassRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type
- find_first_of(SinglePassRange1 const & rng1, ForwardRange2 const & rng2)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+/// \brief template function find_first_of
+///
+/// range-based version of the find_first_of std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre ForwardRange2 is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template< class SinglePassRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type
+find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
- return std::find_first_of(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type
- find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2, BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+ return std::find_first_of(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2));
+}
 
- return std::find_first_of(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred);
- }
-
- /// \overload
- template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type
- find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+/// \overload
+template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type
+find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
- return std::find_first_of(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred);
- }
+ return std::find_first_of(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2),pred);
+}
 
 // range return overloads
- /// \overload
- template< range_return_value re, class SinglePassRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange1,re>::type
- find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
-
- return range_return<SinglePassRange1,re>::
- pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2)),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class SinglePassRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_return<const SinglePassRange1,re>::type
- find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
-
- return range_return<const SinglePassRange1,re>::
- pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2)),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class SinglePassRange1, class ForwardRange2,
- class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange1,re>::type
- find_first_of(SinglePassRange1 & rng1, const ForwardRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+/// \overload
+template< range_return_value re, class SinglePassRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange1,re>::type
+find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
- return range_return<SinglePassRange1,re>::
- pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class SinglePassRange1, class ForwardRange2,
- class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const SinglePassRange1,re>::type
- find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
+ return range_return<SinglePassRange1,re>::
+ pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2)),
+ rng1);
+}
 
- return range_return<const SinglePassRange1,re>::
- pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2),pred),
- rng1);
- }
+/// \overload
+template< range_return_value re, class SinglePassRange1, class ForwardRange2,
+ class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange1,re>::type
+find_first_of(SinglePassRange1 & rng1, const ForwardRange2& rng2,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
 
+ return range_return<SinglePassRange1,re>::
+ pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), pred),
+ rng1);
 }
 
+ } // namespace range
+ using range::find_first_of;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/find_if.hpp (from r60898, /trunk/boost/range/algorithm/find_if.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/find_if.hpp (original)
+++ branches/release/boost/range/algorithm/find_if.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,52 +18,38 @@
 
 namespace boost
 {
- /// \brief template function find_if
- ///
- /// range-based version of the find_if std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre UnaryPredicate is a model of the UnaryPredicateConcept
- template< class SinglePassRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
- find_if( SinglePassRange& rng, UnaryPredicate pred )
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::find_if(boost::begin(rng), boost::end(rng), pred);
- }
- /// \overload
- template< class SinglePassRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type
- find_if( const SinglePassRange& rng, UnaryPredicate pred )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::find_if(boost::begin(rng), boost::end(rng), pred);
- }
-
-// range_return overloads
 
- /// \overload
- template< range_return_value re, class SinglePassRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange,re>::type
- find_if( SinglePassRange& rng, UnaryPredicate pred )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return range_return<SinglePassRange,re>::
- pack(std::find_if(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
- /// \overload
- template< range_return_value re, class SinglePassRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const SinglePassRange,re>::type
- find_if( const SinglePassRange& rng, UnaryPredicate pred )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return range_return<const SinglePassRange,re>::
- pack(std::find_if(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
+/// \brief template function find_if
+///
+/// range-based version of the find_if std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre UnaryPredicate is a model of the UnaryPredicateConcept
+template< class SinglePassRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
+find_if( SinglePassRange& rng, UnaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::find_if(boost::begin(rng), boost::end(rng), pred);
+}
 
+// range_return overloads
 
+/// \overload
+template< range_return_value re, class SinglePassRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<SinglePassRange,re>::type
+find_if( SinglePassRange& rng, UnaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return range_return<SinglePassRange,re>::
+ pack(std::find_if(boost::begin(rng), boost::end(rng), pred),
+ rng);
 }
 
+ } // namespace range
+ using range::find_if;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/for_each.hpp (from r60898, /trunk/boost/range/algorithm/for_each.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/for_each.hpp (original)
+++ branches/release/boost/range/algorithm/for_each.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,26 +17,32 @@
 
 namespace boost
 {
- /// \brief template function for_each
- ///
- /// range-based version of the for_each std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre UnaryFunction is a model of the UnaryFunctionConcept
- template< class SinglePassRange, class UnaryFunction >
- inline UnaryFunction for_each(SinglePassRange & rng, UnaryFunction fun)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept< SinglePassRange > >();
- return std::for_each(boost::begin(rng),boost::end(rng),fun);
- }
 
- /// \overload
- template< class SinglePassRange, class UnaryFunction >
- inline UnaryFunction for_each(SinglePassRange const & rng, UnaryFunction fun)
- {
- boost::function_requires< SinglePassRangeConcept< SinglePassRange > >();
- return std::for_each(boost::begin(rng),boost::end(rng),fun);
- }
+/// \brief template function for_each
+///
+/// range-based version of the for_each std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre UnaryFunction is a model of the UnaryFunctionConcept
+template< class SinglePassRange, class UnaryFunction >
+inline UnaryFunction for_each(SinglePassRange & rng, UnaryFunction fun)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::for_each(boost::begin(rng),boost::end(rng),fun);
+}
+
+/// \overload
+template< class SinglePassRange, class UnaryFunction >
+inline UnaryFunction for_each(const SinglePassRange& rng, UnaryFunction fun)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
+ return std::for_each(boost::begin(rng), boost::end(rng), fun);
+}
+
+ } // namespace range
+ using range::for_each;
 } // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/generate.hpp (from r60898, /trunk/boost/range/algorithm/generate.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/generate.hpp (original)
+++ branches/release/boost/range/algorithm/generate.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,28 +17,33 @@
 
 namespace boost
 {
- /// \brief template function generate
- ///
- /// range-based version of the generate std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre Generator is a model of the UnaryFunctionConcept
- template< class ForwardRange, class Generator >
- inline ForwardRange& generate( ForwardRange& rng, Generator gen )
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::generate(boost::begin(rng), boost::end(rng), gen);
- return rng;
- }
+/// \brief template function generate
+///
+/// range-based version of the generate std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre Generator is a model of the UnaryFunctionConcept
+template< class ForwardRange, class Generator >
+inline ForwardRange& generate( ForwardRange& rng, Generator gen )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ std::generate(boost::begin(rng), boost::end(rng), gen);
+ return rng;
+}
 
- /// \overload
- template< class ForwardRange, class Generator >
- inline const ForwardRange& generate(const ForwardRange& rng, Generator gen)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::generate(boost::begin(rng), boost::end(rng), gen);
- return rng;
- }
+/// \overload
+template< class ForwardRange, class Generator >
+inline const ForwardRange& generate(const ForwardRange& rng, Generator gen)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ std::generate(boost::begin(rng), boost::end(rng), gen);
+ return rng;
 }
 
+ } // namespace range
+ using range::generate;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/heap_algorithm.hpp (from r60898, /trunk/boost/range/algorithm/heap_algorithm.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/heap_algorithm.hpp (original)
+++ branches/release/boost/range/algorithm/heap_algorithm.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,153 +17,162 @@
 
 namespace boost
 {
- /// \brief template function push_heap
- ///
- /// range-based version of the push_heap std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre Compare is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline void push_heap(RandomAccessRange& rng)
+ namespace range
     {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::push_heap(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline void push_heap(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::push_heap(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void push_heap(RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::push_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void push_heap(const RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::push_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \brief template function pop_heap
- ///
- /// range-based version of the pop_heap std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre Compare is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline void pop_heap(RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::pop_heap(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline void pop_heap(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::pop_heap(boost::begin(rng),boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void pop_heap(RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void pop_heap(const RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \brief template function make_heap
- ///
- /// range-based version of the make_heap std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre Compare is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline void make_heap(RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::make_heap(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline void make_heap(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::make_heap(boost::begin(rng),boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void make_heap(RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::make_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void make_heap(const RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::make_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \brief template function sort_heap
- ///
- /// range-based version of the sort_heap std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre Compare is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline void sort_heap(RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort_heap(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline void sort_heap(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort_heap(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void sort_heap(RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
-
- /// \overload
- template<class RandomAccessRange, class Compare>
- inline void sort_heap(const RandomAccessRange& rng, Compare comp_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred);
- }
+
+/// \brief template function push_heap
+///
+/// range-based version of the push_heap std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre Compare is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline void push_heap(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::push_heap(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline void push_heap(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::push_heap(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void push_heap(RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::push_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void push_heap(const RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::push_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \brief template function pop_heap
+///
+/// range-based version of the pop_heap std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre Compare is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline void pop_heap(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::pop_heap(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline void pop_heap(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::pop_heap(boost::begin(rng),boost::end(rng));
 }
 
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void pop_heap(RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void pop_heap(const RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \brief template function make_heap
+///
+/// range-based version of the make_heap std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre Compare is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline void make_heap(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::make_heap(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline void make_heap(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::make_heap(boost::begin(rng),boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void make_heap(RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::make_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void make_heap(const RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::make_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \brief template function sort_heap
+///
+/// range-based version of the sort_heap std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre Compare is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline void sort_heap(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::sort_heap(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline void sort_heap(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::sort_heap(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void sort_heap(RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+/// \overload
+template<class RandomAccessRange, class Compare>
+inline void sort_heap(const RandomAccessRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred);
+}
+
+ } // namespace range
+ using range::push_heap;
+ using range::pop_heap;
+ using range::make_heap;
+ using range::sort_heap;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/inplace_merge.hpp (from r60898, /trunk/boost/range/algorithm/inplace_merge.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/inplace_merge.hpp (original)
+++ branches/release/boost/range/algorithm/inplace_merge.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,52 +17,58 @@
 
 namespace boost
 {
- /// \brief template function inplace_merge
- ///
- /// range-based version of the inplace_merge std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class BidirectionalRange>
- inline BidirectionalRange& inplace_merge(BidirectionalRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<BidirectionalRange>::type middle)
+ namespace range
     {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- std::inplace_merge(boost::begin(rng), middle, boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class BidirectionalRange>
- inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<const BidirectionalRange>::type middle)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- std::inplace_merge(boost::begin(rng), middle, boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class BidirectionalRange, class BinaryPredicate>
- inline BidirectionalRange& inplace_merge(BidirectionalRange& rng,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<BidirectionalRange>::type middle,
- BinaryPredicate pred)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred);
- return rng;
- }
-
- /// \overload
- template<class BidirectionalRange, class BinaryPredicate>
- inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng,
- BOOST_DEDUCED_TYPENAME boost::range_iterator<const BidirectionalRange>::type middle,
- BinaryPredicate pred)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred);
- return rng;
- }
+
+/// \brief template function inplace_merge
+///
+/// range-based version of the inplace_merge std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class BidirectionalRange>
+inline BidirectionalRange& inplace_merge(BidirectionalRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<BidirectionalRange>::type middle)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ std::inplace_merge(boost::begin(rng), middle, boost::end(rng));
+ return rng;
+}
+
+/// \overload
+template<class BidirectionalRange>
+inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<const BidirectionalRange>::type middle)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ std::inplace_merge(boost::begin(rng), middle, boost::end(rng));
+ return rng;
 }
 
+/// \overload
+template<class BidirectionalRange, class BinaryPredicate>
+inline BidirectionalRange& inplace_merge(BidirectionalRange& rng,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<BidirectionalRange>::type middle,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred);
+ return rng;
+}
+
+/// \overload
+template<class BidirectionalRange, class BinaryPredicate>
+inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng,
+ BOOST_DEDUCED_TYPENAME boost::range_iterator<const BidirectionalRange>::type middle,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred);
+ return rng;
+}
+
+ } // namespace range
+ using range::inplace_merge;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/lexicographical_compare.hpp (from r60898, /trunk/boost/range/algorithm/lexicographical_compare.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/lexicographical_compare.hpp (original)
+++ branches/release/boost/range/algorithm/lexicographical_compare.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,36 +17,42 @@
 
 namespace boost
 {
- /// \brief template function lexicographic_compare
- ///
- /// range-based version of the lexicographic_compare std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- template<class SinglePassRange1, class SinglePassRange2>
- inline bool lexicographical_compare(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::lexicographical_compare(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2));
- }
 
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class BinaryPredicate>
- inline bool lexicographical_compare(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::lexicographical_compare(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
+/// \brief template function lexicographic_compare
+///
+/// range-based version of the lexicographic_compare std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+template<class SinglePassRange1, class SinglePassRange2>
+inline bool lexicographical_compare(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::lexicographical_compare(
+ boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2));
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class BinaryPredicate>
+inline bool lexicographical_compare(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::lexicographical_compare(
+ boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), pred);
 }
 
+ } // namespace range
+ using range::lexicographical_compare;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/lower_bound.hpp (from r60898, /trunk/boost/range/algorithm/lower_bound.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/lower_bound.hpp (original)
+++ branches/release/boost/range/algorithm/lower_bound.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,82 +18,52 @@
 
 namespace boost
 {
- /// \brief template function lower_bound
- ///
- /// range-based version of the lower_bound std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- lower_bound( ForwardRange& rng, Value val )
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::lower_bound(boost::begin(rng), boost::end(rng), val);
- }
- /// \overload
- template< class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- lower_bound( const ForwardRange& rng, Value val )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::lower_bound(boost::begin(rng), boost::end(rng), val);
- }
- /// \overload
- template< class ForwardRange, class Value, class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
- }
- /// \overload
- template< class ForwardRange, class Value, class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- lower_bound( const ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- lower_bound( ForwardRange& rng, Value val )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::
- pack(std::lower_bound(boost::begin(rng), boost::end(rng), val),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- lower_bound( const ForwardRange& rng, Value val )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::
- pack(std::lower_bound(boost::begin(rng), boost::end(rng), val),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::
- pack(std::lower_bound(boost::begin(rng), boost::end(rng), val, pred),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- lower_bound( const ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::
- pack(std::lower_bound(boost::begin(rng), boost::end(rng), val, pred),
- rng);
- }
+
+/// \brief template function lower_bound
+///
+/// range-based version of the lower_bound std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+lower_bound( ForwardRange& rng, Value val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::lower_bound(boost::begin(rng), boost::end(rng), val);
+}
+/// \overload
+template< class ForwardRange, class Value, class SortPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
+}
+/// \overload
+template< range_return_value re, class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+lower_bound( ForwardRange& rng, Value val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::
+ pack(std::lower_bound(boost::begin(rng), boost::end(rng), val),
+ rng);
+}
+/// \overload
+template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::
+ pack(std::lower_bound(boost::begin(rng), boost::end(rng), val, pred),
+ rng);
 }
 
+ } // namespace range
+ using range::lower_bound;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/max_element.hpp (from r60898, /trunk/boost/range/algorithm/max_element.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/max_element.hpp (original)
+++ branches/release/boost/range/algorithm/max_element.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,92 +18,98 @@
 
 namespace boost
 {
- /// \brief template function max_element
- ///
- /// range-based version of the max_element std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- max_element(ForwardRange& rng)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::max_element(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- max_element(const ForwardRange& rng)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::max_element(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- max_element(ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::max_element(boost::begin(rng), boost::end(rng), pred);
- }
-
- /// \overload
- template<class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- max_element(const ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::max_element(boost::begin(rng), boost::end(rng), pred);
- }
+
+/// \brief template function max_element
+///
+/// range-based version of the max_element std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+max_element(ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::max_element(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+max_element(const ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::max_element(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+max_element(ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::max_element(boost::begin(rng), boost::end(rng), pred);
+}
+
+/// \overload
+template<class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+max_element(const ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::max_element(boost::begin(rng), boost::end(rng), pred);
+}
 
 // range_return overloads
 
- /// \overload
- template<range_return_value re, class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- max_element(ForwardRange& rng)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::pack(
- std::max_element(boost::begin(rng), boost::end(rng)),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- max_element(const ForwardRange& rng)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::pack(
- std::max_element(boost::begin(rng), boost::end(rng)),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- max_element(ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::pack(
- std::max_element(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- max_element(const ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::pack(
- std::max_element(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
+/// \overload
+template<range_return_value re, class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+max_element(ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::pack(
+ std::max_element(boost::begin(rng), boost::end(rng)),
+ rng);
+}
+
+/// \overload
+template<range_return_value re, class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+max_element(const ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::pack(
+ std::max_element(boost::begin(rng), boost::end(rng)),
+ rng);
 }
 
+/// \overload
+template<range_return_value re, class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+max_element(ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::pack(
+ std::max_element(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
+
+/// \overload
+template<range_return_value re, class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+max_element(const ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::pack(
+ std::max_element(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
+
+ } // namespace range
+ using range::max_element;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/merge.hpp (from r60898, /trunk/boost/range/algorithm/merge.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/merge.hpp (original)
+++ branches/release/boost/range/algorithm/merge.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,39 +17,45 @@
 
 namespace boost
 {
- /// \brief template function merge
- ///
- /// range-based version of the merge std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- ///
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator>
- inline OutputIterator merge(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::merge(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out);
- }
 
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator, class BinaryPredicate>
- inline OutputIterator merge(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::merge(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out, pred);
- }
+/// \brief template function merge
+///
+/// range-based version of the merge std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+///
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator>
+inline OutputIterator merge(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::merge(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out);
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator, class BinaryPredicate>
+inline OutputIterator merge(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::merge(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out, pred);
 }
 
+ } // namespace range
+ using range::merge;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/min_element.hpp (from r60898, /trunk/boost/range/algorithm/min_element.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/min_element.hpp (original)
+++ branches/release/boost/range/algorithm/min_element.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,92 +18,98 @@
 
 namespace boost
 {
- /// \brief template function min_element
- ///
- /// range-based version of the min_element std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- min_element(ForwardRange& rng)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::min_element(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- min_element(const ForwardRange& rng)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::min_element(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- min_element(ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::min_element(boost::begin(rng), boost::end(rng), pred);
- }
-
- /// \overload
- template<class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- min_element(const ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::min_element(boost::begin(rng), boost::end(rng), pred);
- }
+
+/// \brief template function min_element
+///
+/// range-based version of the min_element std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+min_element(ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::min_element(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+min_element(const ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::min_element(boost::begin(rng), boost::end(rng));
+}
+
+/// \overload
+template<class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+min_element(ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::min_element(boost::begin(rng), boost::end(rng), pred);
+}
+
+/// \overload
+template<class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+min_element(const ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::min_element(boost::begin(rng), boost::end(rng), pred);
+}
 
 // range_return overloads
 
- /// \overload
- template<range_return_value re, class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- min_element(ForwardRange& rng)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::pack(
- std::min_element(boost::begin(rng), boost::end(rng)),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class ForwardRange>
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- min_element(const ForwardRange& rng)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::pack(
- std::min_element(boost::begin(rng), boost::end(rng)),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- min_element(ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::pack(
- std::min_element(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class ForwardRange, class BinaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- min_element(const ForwardRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::pack(
- std::min_element(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
+/// \overload
+template<range_return_value re, class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+min_element(ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::pack(
+ std::min_element(boost::begin(rng), boost::end(rng)),
+ rng);
+}
+
+/// \overload
+template<range_return_value re, class ForwardRange>
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+min_element(const ForwardRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::pack(
+ std::min_element(boost::begin(rng), boost::end(rng)),
+ rng);
 }
 
+/// \overload
+template<range_return_value re, class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+min_element(ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::pack(
+ std::min_element(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
+
+/// \overload
+template<range_return_value re, class ForwardRange, class BinaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+min_element(const ForwardRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::pack(
+ std::min_element(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
+
+ } // namespace range
+ using range::min_element;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/mismatch.hpp (from r60898, /trunk/boost/range/algorithm/mismatch.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/mismatch.hpp (original)
+++ branches/release/boost/range/algorithm/mismatch.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -57,126 +57,139 @@
             return std::pair<SinglePassTraversalReadableIterator1,
                              SinglePassTraversalReadableIterator2>(first1, first2);
         }
- }
+ } // namespace range_detail
 
- /// \brief template function mismatch
- ///
- /// range-based version of the mismatch std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< class SinglePassRange1, class SinglePassRange2 >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
- mismatch(SinglePassRange1& rng1, const SinglePassRange2 & rng2)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
-
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2));
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2 >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
- mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+/// \brief template function mismatch
+///
+/// range-based version of the mismatch std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template< class SinglePassRange1, class SinglePassRange2 >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
+mismatch(SinglePassRange1& rng1, const SinglePassRange2 & rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2));
+}
 
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2));
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2 >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
- mismatch(SinglePassRange1& rng1, SinglePassRange2 & rng2)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2 >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
+mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2));
+}
 
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2));
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2 >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
- mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2 >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
+mismatch(SinglePassRange1& rng1, SinglePassRange2 & rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2));
+}
 
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2));
- }
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2 >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
+mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2));
+}
 
 
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
- mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
-
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
- mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
+mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), pred);
+}
 
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
- mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange2>::type >
+mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), pred);
+}
 
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
-
- /// \overload
- template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
- inline std::pair<
- BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
- mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
+mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), pred);
+}
 
- return range_detail::mismatch_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
+/// \overload
+template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
+inline std::pair<
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type >
+mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::mismatch_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), pred);
 }
 
+ } // namespace range
+ using range::mismatch;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/nth_element.hpp (from r60898, /trunk/boost/range/algorithm/nth_element.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/nth_element.hpp (original)
+++ branches/release/boost/range/algorithm/nth_element.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,48 +17,54 @@
 
 namespace boost
 {
- /// \brief template function nth_element
- ///
- /// range-based version of the nth_element std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline void nth_element(RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type nth)
+ namespace range
     {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::nth_element(boost::begin(rng), nth, boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline void nth_element(const RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type nth)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::nth_element(boost::begin(rng),nth,boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline void nth_element(RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type nth,
- BinaryPredicate sort_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::nth_element(boost::begin(rng), nth, boost::end(rng), sort_pred);
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline void nth_element(const RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type nth,
- BinaryPredicate sort_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::nth_element(boost::begin(rng),nth,boost::end(rng), sort_pred);
- }
+
+/// \brief template function nth_element
+///
+/// range-based version of the nth_element std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline void nth_element(RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type nth)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::nth_element(boost::begin(rng), nth, boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline void nth_element(const RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type nth)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::nth_element(boost::begin(rng),nth,boost::end(rng));
 }
 
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline void nth_element(RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type nth,
+ BinaryPredicate sort_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::nth_element(boost::begin(rng), nth, boost::end(rng), sort_pred);
+}
+
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline void nth_element(const RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type nth,
+ BinaryPredicate sort_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::nth_element(boost::begin(rng),nth,boost::end(rng), sort_pred);
+}
+
+ } // namespace range
+ using range::nth_element;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/partial_sort.hpp (from r60898, /trunk/boost/range/algorithm/partial_sort.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/partial_sort.hpp (original)
+++ branches/release/boost/range/algorithm/partial_sort.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,49 +17,55 @@
 
 namespace boost
 {
- /// \brief template function partial_sort
- ///
- /// range-based version of the partial_sort std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline void partial_sort(RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type middle)
+ namespace range
     {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::partial_sort(boost::begin(rng), middle, boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline void partial_sort(const RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type middle)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::partial_sort(boost::begin(rng), middle, boost::end(rng));
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline void partial_sort(RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type middle,
- BinaryPredicate sort_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::partial_sort(boost::begin(rng), middle, boost::end(rng),
- sort_pred);
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline void partial_sort(const RandomAccessRange& rng,
- BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type middle,
- BinaryPredicate sort_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::partial_sort(boost::begin(rng), middle, boost::end(rng), sort_pred);
- }
+
+/// \brief template function partial_sort
+///
+/// range-based version of the partial_sort std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline void partial_sort(RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type middle)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::partial_sort(boost::begin(rng), middle, boost::end(rng));
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline void partial_sort(const RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type middle)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::partial_sort(boost::begin(rng), middle, boost::end(rng));
 }
 
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline void partial_sort(RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<RandomAccessRange>::type middle,
+ BinaryPredicate sort_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::partial_sort(boost::begin(rng), middle, boost::end(rng),
+ sort_pred);
+}
+
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline void partial_sort(const RandomAccessRange& rng,
+ BOOST_DEDUCED_TYPENAME range_iterator<const RandomAccessRange>::type middle,
+ BinaryPredicate sort_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::partial_sort(boost::begin(rng), middle, boost::end(rng), sort_pred);
+}
+
+ } // namespace range
+ using range::partial_sort;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/partial_sort_copy.hpp (from r60898, /trunk/boost/range/algorithm/partial_sort_copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/partial_sort_copy.hpp (original)
+++ branches/release/boost/range/algorithm/partial_sort_copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,41 +18,47 @@
 
 namespace boost
 {
- /// \brief template function partial_sort_copy
- ///
- /// range-based version of the partial_sort_copy std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre RandomAccessRange is a model of the Mutable_RandomAccessRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<typename SinglePassRange, typename RandomAccessRange>
- inline typename range_iterator<RandomAccessRange>::type
- partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
- BOOST_CONCEPT_ASSERT((WriteableRandomAccessRangeConcept<RandomAccessRange>));
- BOOST_CONCEPT_ASSERT((range_detail::SameTypeConcept<typename range_value<SinglePassRange>::type, typename range_value<RandomAccessRange>::type>));
- BOOST_CONCEPT_ASSERT((LessThanComparableConcept<typename range_value<SinglePassRange>::type>));
-
- return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2));
- }
-
- /// \overload
- template<typename SinglePassRange, typename RandomAccessRange,
- typename BinaryPredicate>
- inline typename range_iterator<RandomAccessRange>::type
- partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2,
- BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
- BOOST_CONCEPT_ASSERT((WriteableRandomAccessRangeConcept<RandomAccessRange>));
- BOOST_CONCEPT_ASSERT((range_detail::SameTypeConcept<typename range_value<SinglePassRange>::type, typename range_value<RandomAccessRange>::type>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate, typename range_value<RandomAccessRange>::type, typename range_value<RandomAccessRange>::type>));
-
- return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
+
+/// \brief template function partial_sort_copy
+///
+/// range-based version of the partial_sort_copy std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre RandomAccessRange is a model of the Mutable_RandomAccessRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<typename SinglePassRange, typename RandomAccessRange>
+inline typename range_iterator<RandomAccessRange>::type
+partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((WriteableRandomAccessRangeConcept<RandomAccessRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::SameTypeConcept<typename range_value<SinglePassRange>::type, typename range_value<RandomAccessRange>::type>));
+ BOOST_RANGE_CONCEPT_ASSERT((LessThanComparableConcept<typename range_value<SinglePassRange>::type>));
+
+ return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2));
 }
 
+/// \overload
+template<typename SinglePassRange, typename RandomAccessRange,
+ typename BinaryPredicate>
+inline typename range_iterator<RandomAccessRange>::type
+partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((WriteableRandomAccessRangeConcept<RandomAccessRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::SameTypeConcept<typename range_value<SinglePassRange>::type, typename range_value<RandomAccessRange>::type>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate, typename range_value<RandomAccessRange>::type, typename range_value<RandomAccessRange>::type>));
+
+ return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), pred);
+}
+
+ } // namespace range
+ using range::partial_sort_copy;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/partition.hpp (from r60898, /trunk/boost/range/algorithm/partition.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/partition.hpp (original)
+++ branches/release/boost/range/algorithm/partition.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,51 +18,57 @@
 
 namespace boost
 {
- /// \brief template function partition
- ///
- /// range-based version of the partition std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template<class ForwardRange, class UnaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- partition(ForwardRange& rng, UnaryPredicate pred)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::partition(boost::begin(rng),boost::end(rng),pred);
- }
-
- /// \overload
- template<class ForwardRange, class UnaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- partition(const ForwardRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::partition(boost::begin(rng),boost::end(rng),pred);
- }
+
+/// \brief template function partition
+///
+/// range-based version of the partition std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template<class ForwardRange, class UnaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+partition(ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::partition(boost::begin(rng),boost::end(rng),pred);
+}
+
+/// \overload
+template<class ForwardRange, class UnaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+partition(const ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::partition(boost::begin(rng),boost::end(rng),pred);
+}
 
 // range_return overloads
 
- /// \overload
- template< range_return_value re, class ForwardRange,
- class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- partition(ForwardRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return boost::range_return<ForwardRange,re>::
- pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange,
- class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- partition(const ForwardRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return boost::range_return<const ForwardRange,re>::
- pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng);
- }
+/// \overload
+template< range_return_value re, class ForwardRange,
+ class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+partition(ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return boost::range_return<ForwardRange,re>::
+ pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng);
 }
 
+/// \overload
+template< range_return_value re, class ForwardRange,
+ class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+partition(const ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return boost::range_return<const ForwardRange,re>::
+ pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng);
+}
+
+ } // namespace range
+ using range::partition;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/permutation.hpp (from r60898, /trunk/boost/range/algorithm/permutation.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/permutation.hpp (original)
+++ branches/release/boost/range/algorithm/permutation.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,101 +17,92 @@
 
 namespace boost
 {
- /// \brief template function next_permutation
- ///
- /// range-based version of the next_permutation std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- /// \pre Compare is a model of the BinaryPredicateConcept
- template<class BidirectionalRange>
- inline bool next_permutation(BidirectionalRange& rng)
+ namespace range
     {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
 
- return std::next_permutation(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class BidirectionalRange>
- inline bool next_permutation(const BidirectionalRange& rng)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
-
- return std::next_permutation(boost::begin(rng), boost::end(rng));
- }
-
- /// \overload
- template<class BidirectionalRange, class Compare>
- inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
-
- return std::next_permutation(boost::begin(rng), boost::end(rng),
- comp_pred);
- }
-
- /// \overload
- template<class BidirectionalRange, class Compare>
- inline bool next_permutation(const BidirectionalRange& rng,
- Compare comp_pred)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
+/// \brief template function next_permutation
+///
+/// range-based version of the next_permutation std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+/// \pre Compare is a model of the BinaryPredicateConcept
+template<class BidirectionalRange>
+inline bool next_permutation(BidirectionalRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::next_permutation(boost::begin(rng), boost::end(rng));
+}
 
- return std::next_permutation(boost::begin(rng), boost::end(rng),
- comp_pred);
- }
-
- /// \brief template function prev_permutation
- ///
- /// range-based version of the prev_permutation std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- /// \pre Compare is a model of the BinaryPredicateConcept
- template<class BidirectionalRange>
- inline bool prev_permutation(BidirectionalRange& rng)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
+/// \overload
+template<class BidirectionalRange>
+inline bool next_permutation(const BidirectionalRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ return std::next_permutation(boost::begin(rng), boost::end(rng));
+}
 
- return std::prev_permutation(boost::begin(rng), boost::end(rng));
- }
+/// \overload
+template<class BidirectionalRange, class Compare>
+inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::next_permutation(boost::begin(rng), boost::end(rng),
+ comp_pred);
+}
 
- /// \overload
- template<class BidirectionalRange>
- inline bool prev_permutation(const BidirectionalRange& rng)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
+/// \overload
+template<class BidirectionalRange, class Compare>
+inline bool next_permutation(const BidirectionalRange& rng,
+ Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ return std::next_permutation(boost::begin(rng), boost::end(rng),
+ comp_pred);
+}
 
- return std::prev_permutation(boost::begin(rng), boost::end(rng));
- }
+/// \brief template function prev_permutation
+///
+/// range-based version of the prev_permutation std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+/// \pre Compare is a model of the BinaryPredicateConcept
+template<class BidirectionalRange>
+inline bool prev_permutation(BidirectionalRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::prev_permutation(boost::begin(rng), boost::end(rng));
+}
 
- /// \overload
- template<class BidirectionalRange, class Compare>
- inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
+/// \overload
+template<class BidirectionalRange>
+inline bool prev_permutation(const BidirectionalRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ return std::prev_permutation(boost::begin(rng), boost::end(rng));
+}
 
- return std::prev_permutation(boost::begin(rng), boost::end(rng),
- comp_pred);
- }
-
- /// \overload
- template<class BidirectionalRange, class Compare>
- inline bool prev_permutation(const BidirectionalRange& rng,
- Compare comp_pred)
- {
- boost::function_requires<
- BidirectionalRangeConcept<BidirectionalRange> >();
+/// \overload
+template<class BidirectionalRange, class Compare>
+inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::prev_permutation(boost::begin(rng), boost::end(rng),
+ comp_pred);
+}
 
- return std::prev_permutation(boost::begin(rng), boost::end(rng),
- comp_pred);
- }
+/// \overload
+template<class BidirectionalRange, class Compare>
+inline bool prev_permutation(const BidirectionalRange& rng,
+ Compare comp_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ return std::prev_permutation(boost::begin(rng), boost::end(rng),
+ comp_pred);
 }
 
+ } // namespace range
+ using range::next_permutation;
+ using range::prev_permutation;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/random_shuffle.hpp (from r60898, /trunk/boost/range/algorithm/random_shuffle.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/random_shuffle.hpp (original)
+++ branches/release/boost/range/algorithm/random_shuffle.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,46 +17,52 @@
 
 namespace boost
 {
- /// \brief template function random_shuffle
- ///
- /// range-based version of the random_shuffle std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre Generator is a model of the UnaryFunctionConcept
- template<class RandomAccessRange>
- inline RandomAccessRange& random_shuffle(RandomAccessRange& rng)
+ namespace range
     {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::random_shuffle(boost::begin(rng), boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::random_shuffle(boost::begin(rng),boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange, class Generator>
- inline RandomAccessRange& random_shuffle(RandomAccessRange& rng, Generator& gen)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::random_shuffle(boost::begin(rng), boost::end(rng), gen);
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange, class Generator>
- inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng, Generator& gen)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::random_shuffle(boost::begin(rng), boost::end(rng), gen);
- return rng;
- }
+
+/// \brief template function random_shuffle
+///
+/// range-based version of the random_shuffle std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre Generator is a model of the UnaryFunctionConcept
+template<class RandomAccessRange>
+inline RandomAccessRange& random_shuffle(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::random_shuffle(boost::begin(rng), boost::end(rng));
+ return rng;
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::random_shuffle(boost::begin(rng),boost::end(rng));
+ return rng;
 }
 
+/// \overload
+template<class RandomAccessRange, class Generator>
+inline RandomAccessRange& random_shuffle(RandomAccessRange& rng, Generator& gen)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::random_shuffle(boost::begin(rng), boost::end(rng), gen);
+ return rng;
+}
+
+/// \overload
+template<class RandomAccessRange, class Generator>
+inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng, Generator& gen)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::random_shuffle(boost::begin(rng), boost::end(rng), gen);
+ return rng;
+}
+
+ } // namespace range
+ using range::random_shuffle;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/remove.hpp (from r60898, /trunk/boost/range/algorithm/remove.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/remove.hpp (original)
+++ branches/release/boost/range/algorithm/remove.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,53 +18,57 @@
 
 namespace boost
 {
- /// \brief template function remove
- ///
- /// range-based version of the remove std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- remove(ForwardRange& rng, const Value& val)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::remove(boost::begin(rng),boost::end(rng),val);
- }
-
- /// \overload
- template< class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- remove(const ForwardRange& rng, const Value& val)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::remove(boost::begin(rng),boost::end(rng),val);
- }
+
+/// \brief template function remove
+///
+/// range-based version of the remove std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+remove(ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::remove(boost::begin(rng),boost::end(rng),val);
+}
+
+/// \overload
+template< class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+remove(const ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::remove(boost::begin(rng),boost::end(rng),val);
+}
 
 // range_return overloads
-
- /// \overload
- template< range_return_value re, class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- remove(ForwardRange& rng, const Value& val)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
-
- return range_return<ForwardRange,re>::pack(
- std::remove(boost::begin(rng), boost::end(rng), val),
- rng);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- remove(const ForwardRange& rng, const Value& val)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
 
- return range_return<const ForwardRange,re>::pack(
- std::remove(boost::begin(rng), boost::end(rng), val),
- rng);
- }
+/// \overload
+template< range_return_value re, class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+remove(ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::pack(
+ std::remove(boost::begin(rng), boost::end(rng), val),
+ rng);
 }
 
+/// \overload
+template< range_return_value re, class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+remove(const ForwardRange& rng, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::pack(
+ std::remove(boost::begin(rng), boost::end(rng), val),
+ rng);
+}
+
+ } // namespace range
+ using range::remove;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/remove_copy.hpp (from r60898, /trunk/boost/range/algorithm/remove_copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/remove_copy.hpp (original)
+++ branches/release/boost/range/algorithm/remove_copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,22 +17,28 @@
 
 namespace boost
 {
- /// \brief template function remove_copy
- ///
- /// range-based version of the remove_copy std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre OutputIterator is a model of the OutputIteratorConcept
- /// \pre Value is a model of the EqualityComparableConcept
- /// \pre Objects of type Value can be compared for equality with objects of
- /// InputIterator's value type.
- template< class SinglePassRange, class OutputIterator, class Value >
- inline OutputIterator
- remove_copy(SinglePassRange& rng, OutputIterator out_it, const Value& val)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::remove_copy(boost::begin(rng), boost::end(rng), out_it, val);
- }
+
+/// \brief template function remove_copy
+///
+/// range-based version of the remove_copy std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre OutputIterator is a model of the OutputIteratorConcept
+/// \pre Value is a model of the EqualityComparableConcept
+/// \pre Objects of type Value can be compared for equality with objects of
+/// InputIterator's value type.
+template< class SinglePassRange, class OutputIterator, class Value >
+inline OutputIterator
+remove_copy(SinglePassRange& rng, OutputIterator out_it, const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange> ));
+ return std::remove_copy(boost::begin(rng), boost::end(rng), out_it, val);
 }
 
+ } // namespace range
+ using range::remove_copy;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/remove_if.hpp (from r60898, /trunk/boost/range/algorithm/remove_if.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/remove_if.hpp (original)
+++ branches/release/boost/range/algorithm/remove_if.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,53 +18,58 @@
 
 namespace boost
 {
- /// \brief template function remove_if
- ///
- /// range-based version of the remove_if std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre UnaryPredicate is a model of the UnaryPredicateConcept
- template< class ForwardRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
- remove_if(ForwardRange& rng, UnaryPredicate pred)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::remove_if(boost::begin(rng), boost::end(rng), pred);
- }
-
- /// \overload
- template< class ForwardRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
- remove_if(const ForwardRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::remove_if(boost::begin(rng),boost::end(rng),pred);
- }
+
+/// \brief template function remove_if
+///
+/// range-based version of the remove_if std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre UnaryPredicate is a model of the UnaryPredicateConcept
+template< class ForwardRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME boost::range_iterator<ForwardRange>::type
+remove_if(ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::remove_if(boost::begin(rng), boost::end(rng), pred);
+}
+
+/// \overload
+template< class ForwardRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME boost::range_iterator<const ForwardRange>::type
+remove_if(const ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return std::remove_if(boost::begin(rng),boost::end(rng),pred);
+}
 
 // range_return overloads
 
- /// \overload
- template< range_return_value re, class ForwardRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- remove_if(ForwardRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::pack(
- std::remove_if(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange, class UnaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- remove_if(const ForwardRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::pack(
- std::remove_if(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
+/// \overload
+template< range_return_value re, class ForwardRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+remove_if(ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::pack(
+ std::remove_if(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
 
+/// \overload
+template< range_return_value re, class ForwardRange, class UnaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+remove_if(const ForwardRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::pack(
+ std::remove_if(boost::begin(rng), boost::end(rng), pred),
+ rng);
 }
 
+ } // namespace range
+ using range::remove_if;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/replace.hpp (from r60898, /trunk/boost/range/algorithm/replace.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/replace.hpp (original)
+++ branches/release/boost/range/algorithm/replace.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,31 +17,37 @@
 
 namespace boost
 {
- /// \brief template function replace
- ///
- /// range-based version of the replace std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class Value >
- inline ForwardRange&
- replace(ForwardRange& rng, const Value& what,
- const Value& with_what)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::replace(boost::begin(rng), boost::end(rng), what, with_what);
- return rng;
- }
 
- /// \overload
- template< class ForwardRange, class Value >
- inline const ForwardRange&
- replace(const ForwardRange& rng, const Value& what,
- const Value& with_what)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::replace(boost::begin(rng), boost::end(rng), what, with_what);
- return rng;
- }
+/// \brief template function replace
+///
+/// range-based version of the replace std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class Value >
+inline ForwardRange&
+replace(ForwardRange& rng, const Value& what,
+ const Value& with_what)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ std::replace(boost::begin(rng), boost::end(rng), what, with_what);
+ return rng;
+}
+
+/// \overload
+template< class ForwardRange, class Value >
+inline const ForwardRange&
+replace(const ForwardRange& rng, const Value& what,
+ const Value& with_what)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ std::replace(boost::begin(rng), boost::end(rng), what, with_what);
+ return rng;
 }
 
+ } // namespace range
+ using range::replace;
+} // namespace boost;
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/replace_copy.hpp (from r60898, /trunk/boost/range/algorithm/replace_copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/replace_copy.hpp (original)
+++ branches/release/boost/range/algorithm/replace_copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,20 +17,26 @@
 
 namespace boost
 {
- /// \brief template function replace_copy
- ///
- /// range-based version of the replace_copy std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class OutputIterator, class Value >
- inline OutputIterator
- replace_copy(ForwardRange& rng, OutputIterator out_it, const Value& what,
- const Value& with_what)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::replace_copy(boost::begin(rng), boost::end(rng), out_it,
- what, with_what);
- }
+
+/// \brief template function replace_copy
+///
+/// range-based version of the replace_copy std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class OutputIterator, class Value >
+inline OutputIterator
+replace_copy(ForwardRange& rng, OutputIterator out_it, const Value& what,
+ const Value& with_what)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::replace_copy(boost::begin(rng), boost::end(rng), out_it,
+ what, with_what);
 }
 
+ } // namespace range
+ using range::replace_copy;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/replace_copy_if.hpp (from r60898, /trunk/boost/range/algorithm/replace_copy_if.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/replace_copy_if.hpp (original)
+++ branches/release/boost/range/algorithm/replace_copy_if.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,24 +17,30 @@
 
 namespace boost
 {
- /// \brief template function replace_copy_if
- ///
- /// range-based version of the replace_copy_if std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre Predicate is a model of the PredicateConcept
- /// \pre Value is convertible to Predicate's argument type
- /// \pre Value is Assignable
- /// \pre Value is convertible to a type in OutputIterator's set of value types.
- template< class ForwardRange, class OutputIterator, class Predicate, class Value >
- inline OutputIterator
- replace_copy_if(ForwardRange& rng, OutputIterator out_it, Predicate pred,
- const Value& with_what)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::replace_copy_if(boost::begin(rng), boost::end(rng), out_it,
- pred, with_what);
- }
+
+/// \brief template function replace_copy_if
+///
+/// range-based version of the replace_copy_if std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre Predicate is a model of the PredicateConcept
+/// \pre Value is convertible to Predicate's argument type
+/// \pre Value is Assignable
+/// \pre Value is convertible to a type in OutputIterator's set of value types.
+template< class ForwardRange, class OutputIterator, class Predicate, class Value >
+inline OutputIterator
+replace_copy_if(ForwardRange& rng, OutputIterator out_it, Predicate pred,
+ const Value& with_what)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::replace_copy_if(boost::begin(rng), boost::end(rng), out_it,
+ pred, with_what);
 }
 
+ } // namespace range
+ using range::replace_copy_if;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/replace_if.hpp (from r60898, /trunk/boost/range/algorithm/replace_if.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/replace_if.hpp (original)
+++ branches/release/boost/range/algorithm/replace_if.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,33 +17,38 @@
 
 namespace boost
 {
- /// \brief template function replace_if
- ///
- /// range-based version of the replace_if std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre UnaryPredicate is a model of the UnaryPredicateConcept
- template< class ForwardRange, class UnaryPredicate, class Value >
- inline ForwardRange&
- replace_if(ForwardRange& rng, UnaryPredicate pred,
- const Value& val)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::replace_if(boost::begin(rng), boost::end(rng), pred, val);
- return rng;
- }
 
- /// \overload
- template< class ForwardRange, class UnaryPredicate, class Value >
- inline const ForwardRange&
- replace_if(const ForwardRange& rng, UnaryPredicate pred,
- const Value& val)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- std::replace_if(boost::begin(rng), boost::end(rng), pred, val);
- return rng;
- }
+/// \brief template function replace_if
+///
+/// range-based version of the replace_if std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre UnaryPredicate is a model of the UnaryPredicateConcept
+template< class ForwardRange, class UnaryPredicate, class Value >
+inline ForwardRange&
+ replace_if(ForwardRange& rng, UnaryPredicate pred,
+ const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ std::replace_if(boost::begin(rng), boost::end(rng), pred, val);
+ return rng;
+}
 
+/// \overload
+template< class ForwardRange, class UnaryPredicate, class Value >
+inline const ForwardRange&
+ replace_if(const ForwardRange& rng, UnaryPredicate pred,
+ const Value& val)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ std::replace_if(boost::begin(rng), boost::end(rng), pred, val);
+ return rng;
 }
 
+ } // namespace range
+ using range::replace_if;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/reverse.hpp (from r60898, /trunk/boost/range/algorithm/reverse.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/reverse.hpp (original)
+++ branches/release/boost/range/algorithm/reverse.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,27 +18,33 @@
 
 namespace boost
 {
- /// \brief template function reverse
- ///
- /// range-based version of the reverse std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- template<class BidirectionalRange>
- inline BidirectionalRange& reverse(BidirectionalRange& rng)
+ namespace range
     {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- std::reverse(boost::begin(rng), boost::end(rng));
- return rng;
- }
 
- /// \overload
- template<class BidirectionalRange>
- inline const BidirectionalRange& reverse(const BidirectionalRange& rng)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- std::reverse(boost::begin(rng), boost::end(rng));
- return rng;
- }
+/// \brief template function reverse
+///
+/// range-based version of the reverse std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+template<class BidirectionalRange>
+inline BidirectionalRange& reverse(BidirectionalRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ std::reverse(boost::begin(rng), boost::end(rng));
+ return rng;
+}
+
+/// \overload
+template<class BidirectionalRange>
+inline const BidirectionalRange& reverse(const BidirectionalRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ std::reverse(boost::begin(rng), boost::end(rng));
+ return rng;
 }
 
+ } // namespace range
+ using range::reverse;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/reverse_copy.hpp (from r60898, /trunk/boost/range/algorithm/reverse_copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/reverse_copy.hpp (original)
+++ branches/release/boost/range/algorithm/reverse_copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,25 +18,31 @@
 
 namespace boost
 {
- /// \brief template function reverse_copy
- ///
- /// range-based version of the reverse_copy std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- template<typename BidirectionalRange, typename OutputIterator>
- inline OutputIterator reverse_copy(BidirectionalRange& rng, OutputIterator out)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((BidirectionalRangeConcept<BidirectionalRange>));
- return std::reverse_copy(boost::begin(rng), boost::end(rng), out);
- }
 
- /// \overload
- template<typename BidirectionalRange, typename OutputIterator>
- inline OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out)
- {
- BOOST_CONCEPT_ASSERT((BidirectionalRangeConcept<BidirectionalRange>));
- return std::reverse_copy(boost::begin(rng), boost::end(rng), out);
- }
+/// \brief template function reverse_copy
+///
+/// range-based version of the reverse_copy std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+template<typename BidirectionalRange, typename OutputIterator>
+inline OutputIterator reverse_copy(BidirectionalRange& rng, OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::reverse_copy(boost::begin(rng), boost::end(rng), out);
+}
+
+/// \overload
+template<typename BidirectionalRange, typename OutputIterator>
+inline OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::reverse_copy(boost::begin(rng), boost::end(rng), out);
 }
 
+ } // namespace range
+ using range::reverse_copy;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/rotate.hpp (from r60898, /trunk/boost/range/algorithm/rotate.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/rotate.hpp (original)
+++ branches/release/boost/range/algorithm/rotate.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,30 +17,36 @@
 
 namespace boost
 {
- /// \brief template function rotate
- ///
- /// range-based version of the rotate std algorithm
- ///
- /// \pre Rng meets the requirements for a Forward range
- template<typename ForwardRange>
- inline ForwardRange& rotate(ForwardRange& rng,
- typename range_iterator<ForwardRange>::type middle)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- std::rotate(boost::begin(rng), middle, boost::end(rng));
- return rng;
- }
 
- /// \overload
- template<typename ForwardRange>
- inline const ForwardRange&
- rotate(const ForwardRange& rng,
- typename range_iterator<const ForwardRange>::type middle)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- std::rotate(boost::begin(rng), middle, boost::end(rng));
- return rng;
- }
+/// \brief template function rotate
+///
+/// range-based version of the rotate std algorithm
+///
+/// \pre Rng meets the requirements for a Forward range
+template<typename ForwardRange>
+inline ForwardRange& rotate(ForwardRange& rng,
+ typename range_iterator<ForwardRange>::type middle)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ std::rotate(boost::begin(rng), middle, boost::end(rng));
+ return rng;
+}
+
+/// \overload
+template<typename ForwardRange>
+inline const ForwardRange&
+ rotate(const ForwardRange& rng,
+ typename range_iterator<const ForwardRange>::type middle)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ std::rotate(boost::begin(rng), middle, boost::end(rng));
+ return rng;
 }
 
+ } // namespace range
+ using range::rotate;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/rotate_copy.hpp (from r60898, /trunk/boost/range/algorithm/rotate_copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/rotate_copy.hpp (original)
+++ branches/release/boost/range/algorithm/rotate_copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,6 +18,9 @@
 
 namespace boost
 {
+ namespace range
+ {
+
     /// \brief template function rotate
     ///
     /// range-based version of the rotate std algorithm
@@ -30,9 +33,12 @@
         OutputIterator target
         )
     {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
         return std::rotate_copy(boost::begin(rng), middle, boost::end(rng), target);
     }
-}
+
+ } // namespace range
+ using range::rotate_copy;
+} // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/search.hpp (from r60898, /trunk/boost/range/algorithm/search.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/search.hpp (original)
+++ branches/release/boost/range/algorithm/search.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,114 +18,119 @@
 
 namespace boost
 {
- /// \brief template function search
- ///
- /// range-based version of the search std algorithm
- ///
- /// \pre ForwardRange1 is a model of the ForwardRangeConcept
- /// \pre ForwardRange2 is a model of the ForwardRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange1>::type
- search(ForwardRange1& rng1, const ForwardRange2& rng2)
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template< class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange1>::type
- search(const ForwardRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange1>::type
- search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred);
- }
-
- /// \overload
- template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange1>::type
- search(const ForwardRange1& rng1, const ForwardRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred);
- }
+
+/// \brief template function search
+///
+/// range-based version of the search std algorithm
+///
+/// \pre ForwardRange1 is a model of the ForwardRangeConcept
+/// \pre ForwardRange2 is a model of the ForwardRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template< class ForwardRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange1>::type
+search(ForwardRange1& rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2));
+}
+
+/// \overload
+template< class ForwardRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange1>::type
+search(const ForwardRange1& rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2));
+}
+
+/// \overload
+template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange1>::type
+search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2),pred);
+}
+
+/// \overload
+template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange1>::type
+search(const ForwardRange1& rng1, const ForwardRange2& rng2,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2),pred);
+}
 
 // range_return overloads
 
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
- search(ForwardRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return range_return<ForwardRange1,re>::
- pack(std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2)),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2 >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange1,re>::type
- search(const ForwardRange1& rng1, const ForwardRange2& rng2)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return range_return<const ForwardRange1,re>::
- pack(std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2)),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2,
- class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
- search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return range_return<ForwardRange1,re>::
- pack(std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred),
- rng1);
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange1, class ForwardRange2,
- class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange1,re>::type
- search(const ForwardRange1& rng1, const ForwardRange2& rng2,
- BinaryPredicate pred)
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange1> >();
- boost::function_requires< ForwardRangeConcept<ForwardRange2> >();
- return range_return<const ForwardRange1,re>::
- pack(std::search(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2),pred),
- rng1);
- }
+/// \overload
+template< range_return_value re, class ForwardRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
+search(ForwardRange1& rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return range_return<ForwardRange1,re>::
+ pack(std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2)),
+ rng1);
+}
+
+/// \overload
+template< range_return_value re, class ForwardRange1, class ForwardRange2 >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange1,re>::type
+search(const ForwardRange1& rng1, const ForwardRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return range_return<const ForwardRange1,re>::
+ pack(std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2)),
+ rng1);
+}
 
+/// \overload
+template< range_return_value re, class ForwardRange1, class ForwardRange2,
+ class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange1,re>::type
+search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return range_return<ForwardRange1,re>::
+ pack(std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2),pred),
+ rng1);
 }
 
+/// \overload
+template< range_return_value re, class ForwardRange1, class ForwardRange2,
+ class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange1,re>::type
+search(const ForwardRange1& rng1, const ForwardRange2& rng2,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange2> ));
+ return range_return<const ForwardRange1,re>::
+ pack(std::search(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2),pred),
+ rng1);
+}
+
+ } // namespace range
+ using range::search;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/search_n.hpp (from r60898, /trunk/boost/range/algorithm/search_n.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/search_n.hpp (original)
+++ branches/release/boost/range/algorithm/search_n.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -19,122 +19,127 @@
 
 namespace boost
 {
- /// \brief template function search
- ///
- /// range-based version of the search std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- /// \pre Integer is an integral type
- /// \pre Value is a model of the EqualityComparableConcept
- /// \pre ForwardRange's value type is a model of the EqualityComparableConcept
- /// \pre Object's of ForwardRange's value type can be compared for equality with Objects of type Value
- template< typename ForwardRange, typename Integer, typename Value >
- inline typename range_iterator<ForwardRange>::type
- search_n(ForwardRange& rng, Integer count, const Value& value)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return std::search_n(boost::begin(rng),boost::end(rng), count, value);
- }
-
- /// \overload
- template< typename ForwardRange, typename Integer, typename Value >
- inline typename range_iterator<const ForwardRange>::type
- search_n(const ForwardRange& rng, Integer count, const Value& value)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return std::search_n(boost::begin(rng), boost::end(rng), count, value);
- }
-
- /// \overload
- template< typename ForwardRange, typename Integer, class Value,
- typename BinaryPredicate >
- inline typename range_iterator<ForwardRange>::type
- search_n(ForwardRange& rng, Integer count, const Value& value,
- BinaryPredicate binary_pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<ForwardRange>::type, const Value&>));
- return std::search_n(boost::begin(rng), boost::end(rng),
- count, value, binary_pred);
- }
-
- /// \overload
- template< typename ForwardRange, typename Integer, typename Value,
- typename BinaryPredicate >
- inline typename range_iterator<const ForwardRange>::type
- search_n(const ForwardRange& rng, Integer count, const Value& value,
- BinaryPredicate binary_pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<const ForwardRange>::type, const Value&>));
- return std::search_n(boost::begin(rng), boost::end(rng),
- count, value, binary_pred);
- }
+
+/// \brief template function search
+///
+/// range-based version of the search std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+/// \pre Integer is an integral type
+/// \pre Value is a model of the EqualityComparableConcept
+/// \pre ForwardRange's value type is a model of the EqualityComparableConcept
+/// \pre Object's of ForwardRange's value type can be compared for equality with Objects of type Value
+template< typename ForwardRange, typename Integer, typename Value >
+inline typename range_iterator<ForwardRange>::type
+search_n(ForwardRange& rng, Integer count, const Value& value)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return std::search_n(boost::begin(rng),boost::end(rng), count, value);
+}
+
+/// \overload
+template< typename ForwardRange, typename Integer, typename Value >
+inline typename range_iterator<const ForwardRange>::type
+search_n(const ForwardRange& rng, Integer count, const Value& value)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return std::search_n(boost::begin(rng), boost::end(rng), count, value);
+}
+
+/// \overload
+template< typename ForwardRange, typename Integer, class Value,
+ typename BinaryPredicate >
+inline typename range_iterator<ForwardRange>::type
+search_n(ForwardRange& rng, Integer count, const Value& value,
+ BinaryPredicate binary_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<ForwardRange>::type, const Value&>));
+ return std::search_n(boost::begin(rng), boost::end(rng),
+ count, value, binary_pred);
+}
+
+/// \overload
+template< typename ForwardRange, typename Integer, typename Value,
+ typename BinaryPredicate >
+inline typename range_iterator<const ForwardRange>::type
+search_n(const ForwardRange& rng, Integer count, const Value& value,
+ BinaryPredicate binary_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<const ForwardRange>::type, const Value&>));
+ return std::search_n(boost::begin(rng), boost::end(rng),
+ count, value, binary_pred);
+}
 
 // range_return overloads
 
- /// \overload
- template< range_return_value re, typename ForwardRange, typename Integer,
- typename Value >
- inline typename range_return<ForwardRange,re>::type
- search_n(ForwardRange& rng, Integer count, const Value& value)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return range_return<ForwardRange,re>::
- pack(std::search_n(boost::begin(rng),boost::end(rng),
- count, value),
- rng);
- }
-
- /// \overload
- template< range_return_value re, typename ForwardRange, typename Integer,
- class Value >
- inline typename range_return<const ForwardRange,re>::type
- search_n(const ForwardRange& rng, Integer count, const Value& value)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- return range_return<const ForwardRange,re>::
- pack(std::search_n(boost::begin(rng), boost::end(rng),
- count, value),
- rng);
- }
-
- /// \overload
- template< range_return_value re, typename ForwardRange, typename Integer,
- typename Value, typename BinaryPredicate >
- inline typename range_return<ForwardRange,re>::type
- search_n(ForwardRange& rng, Integer count, const Value& value,
- BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<ForwardRange>::type,
- const Value&>));
- return range_return<ForwardRange,re>::
- pack(std::search_n(boost::begin(rng), boost::end(rng),
- count, value, pred),
- rng);
- }
-
- /// \overload
- template< range_return_value re, typename ForwardRange, typename Integer,
- typename Value, typename BinaryPredicate >
- inline typename range_return<const ForwardRange,re>::type
- search_n(const ForwardRange& rng, Integer count, const Value& value,
- BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
- typename range_value<const ForwardRange>::type,
- const Value&>));
- return range_return<const ForwardRange,re>::
- pack(std::search_n(boost::begin(rng), boost::end(rng),
- count, value, pred),
- rng);
- }
+/// \overload
+template< range_return_value re, typename ForwardRange, typename Integer,
+ typename Value >
+inline typename range_return<ForwardRange,re>::type
+search_n(ForwardRange& rng, Integer count, const Value& value)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return range_return<ForwardRange,re>::
+ pack(std::search_n(boost::begin(rng),boost::end(rng),
+ count, value),
+ rng);
+}
+
+/// \overload
+template< range_return_value re, typename ForwardRange, typename Integer,
+ class Value >
+inline typename range_return<const ForwardRange,re>::type
+search_n(const ForwardRange& rng, Integer count, const Value& value)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ return range_return<const ForwardRange,re>::
+ pack(std::search_n(boost::begin(rng), boost::end(rng),
+ count, value),
+ rng);
+}
 
+/// \overload
+template< range_return_value re, typename ForwardRange, typename Integer,
+ typename Value, typename BinaryPredicate >
+inline typename range_return<ForwardRange,re>::type
+search_n(ForwardRange& rng, Integer count, const Value& value,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<ForwardRange>::type,
+ const Value&>));
+ return range_return<ForwardRange,re>::
+ pack(std::search_n(boost::begin(rng), boost::end(rng),
+ count, value, pred),
+ rng);
 }
 
+/// \overload
+template< range_return_value re, typename ForwardRange, typename Integer,
+ typename Value, typename BinaryPredicate >
+inline typename range_return<const ForwardRange,re>::type
+search_n(const ForwardRange& rng, Integer count, const Value& value,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept<ForwardRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate,
+ typename range_value<const ForwardRange>::type,
+ const Value&>));
+ return range_return<const ForwardRange,re>::
+ pack(std::search_n(boost::begin(rng), boost::end(rng),
+ count, value, pred),
+ rng);
+}
+
+ } // namespace range
+ using range::search_n;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/set_algorithm.hpp (from r60898, /trunk/boost/range/algorithm/set_algorithm.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/set_algorithm.hpp (original)
+++ branches/release/boost/range/algorithm/set_algorithm.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,172 +17,182 @@
 
 namespace boost
 {
- /// \brief template function includes
- ///
- /// range-based version of the includes std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class SinglePassRange1, class SinglePassRange2>
- inline bool includes(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::includes(boost::begin(rng1),boost::end(rng1),
- boost::begin(rng2),boost::end(rng2));
- }
-
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class BinaryPredicate>
- inline bool includes(const SinglePassRange1& rng1,
+
+/// \brief template function includes
+///
+/// range-based version of the includes std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class SinglePassRange1, class SinglePassRange2>
+inline bool includes(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::includes(boost::begin(rng1),boost::end(rng1),
+ boost::begin(rng2),boost::end(rng2));
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class BinaryPredicate>
+inline bool includes(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::includes(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), pred);
+}
+
+/// \brief template function set_union
+///
+/// range-based version of the set_union std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator>
+inline OutputIterator set_union(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_union(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out);
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator, class BinaryPredicate>
+inline OutputIterator set_union(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_union(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out, pred);
+}
+
+/// \brief template function set_intersection
+///
+/// range-based version of the set_intersection std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator>
+inline OutputIterator set_intersection(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_intersection(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out);
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator, class BinaryPredicate>
+inline OutputIterator set_intersection(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_intersection(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2),
+ out, pred);
+}
+
+/// \brief template function set_difference
+///
+/// range-based version of the set_difference std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator>
+inline OutputIterator set_difference(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_difference(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out);
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator, class BinaryPredicate>
+inline OutputIterator set_difference(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out,
+ BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_difference(
+ boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out, pred);
+}
+
+/// \brief template function set_symmetric_difference
+///
+/// range-based version of the set_symmetric_difference std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator>
+inline OutputIterator
+set_symmetric_difference(const SinglePassRange1& rng1,
                          const SinglePassRange2& rng2,
+ OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_symmetric_difference(boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out);
+}
+
+/// \overload
+template<class SinglePassRange1, class SinglePassRange2,
+ class OutputIterator, class BinaryPredicate>
+inline OutputIterator
+set_symmetric_difference(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out,
                          BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::includes(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), pred);
- }
-
- /// \brief template function set_union
- ///
- /// range-based version of the set_union std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator>
- inline OutputIterator set_union(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_union(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out);
- }
-
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator, class BinaryPredicate>
- inline OutputIterator set_union(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_union(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out, pred);
- }
-
- /// \brief template function set_intersection
- ///
- /// range-based version of the set_intersection std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator>
- inline OutputIterator set_intersection(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_intersection(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out);
- }
-
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator, class BinaryPredicate>
- inline OutputIterator set_intersection(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_intersection(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2),
- out, pred);
- }
-
- /// \brief template function set_difference
- ///
- /// range-based version of the set_difference std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator>
- inline OutputIterator set_difference(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_difference(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out);
- }
-
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator, class BinaryPredicate>
- inline OutputIterator set_difference(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_difference(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out, pred);
- }
-
- /// \brief template function set_symmetric_difference
- ///
- /// range-based version of the set_symmetric_difference std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator>
- inline OutputIterator
- set_symmetric_difference(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_symmetric_difference(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out);
- }
-
- /// \overload
- template<class SinglePassRange1, class SinglePassRange2,
- class OutputIterator, class BinaryPredicate>
- inline OutputIterator
- set_symmetric_difference(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out,
- BinaryPredicate pred)
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return std::set_symmetric_difference(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), out, pred);
- }
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return std::set_symmetric_difference(
+ boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2), out, pred);
 }
 
+ } // namespace range
+ using range::includes;
+ using range::set_union;
+ using range::set_intersection;
+ using range::set_difference;
+ using range::set_symmetric_difference;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/sort.hpp (from r60898, /trunk/boost/range/algorithm/sort.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/sort.hpp (original)
+++ branches/release/boost/range/algorithm/sort.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,47 +17,52 @@
 
 namespace boost
 {
- /// \brief template function sort
- ///
- /// range-based version of the sort std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline RandomAccessRange& sort(RandomAccessRange& rng)
+ namespace range
     {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort(boost::begin(rng), boost::end(rng));
 
- return rng;
- }
+/// \brief template function sort
+///
+/// range-based version of the sort std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline RandomAccessRange& sort(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::sort(boost::begin(rng), boost::end(rng));
+ return rng;
+}
 
- /// \overload
- template<class RandomAccessRange>
- inline const RandomAccessRange& sort(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort(boost::begin(rng),boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort(boost::begin(rng), boost::end(rng), pred);
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline const RandomAccessRange& sort(const RandomAccessRange& rng, BinaryPredicate pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::sort(boost::begin(rng), boost::end(rng), pred);
- return rng;
- }
+/// \overload
+template<class RandomAccessRange>
+inline const RandomAccessRange& sort(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::sort(boost::begin(rng),boost::end(rng));
+ return rng;
 }
 
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::sort(boost::begin(rng), boost::end(rng), pred);
+ return rng;
+}
+
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline const RandomAccessRange& sort(const RandomAccessRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::sort(boost::begin(rng), boost::end(rng), pred);
+ return rng;
+}
+
+ } // namespace range
+ using range::sort;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/stable_partition.hpp (from r60898, /trunk/boost/range/algorithm/stable_partition.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/stable_partition.hpp (original)
+++ branches/release/boost/range/algorithm/stable_partition.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,51 +18,56 @@
 
 namespace boost
 {
- /// \brief template function stable_partition
- ///
- /// range-based version of the stable_partition std algorithm
- ///
- /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
- /// \pre UnaryPredicate is a model of the UnaryPredicateConcept
- template<class BidirectionalRange, class UnaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<BidirectionalRange>::type
- stable_partition(BidirectionalRange& rng, UnaryPredicate pred)
+ namespace range
     {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- return std::stable_partition(boost::begin(rng), boost::end(rng), pred);
- }
-
- /// \overload
- template<class BidirectionalRange, class UnaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_iterator<const BidirectionalRange>::type
- stable_partition(const BidirectionalRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- return std::stable_partition(boost::begin(rng),boost::end(rng),pred);
- }
+
+/// \brief template function stable_partition
+///
+/// range-based version of the stable_partition std algorithm
+///
+/// \pre BidirectionalRange is a model of the BidirectionalRangeConcept
+/// \pre UnaryPredicate is a model of the UnaryPredicateConcept
+template<class BidirectionalRange, class UnaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<BidirectionalRange>::type
+stable_partition(BidirectionalRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return std::stable_partition(boost::begin(rng), boost::end(rng), pred);
+}
+
+/// \overload
+template<class BidirectionalRange, class UnaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_iterator<const BidirectionalRange>::type
+stable_partition(const BidirectionalRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ return std::stable_partition(boost::begin(rng),boost::end(rng),pred);
+}
 
 // range_return overloads
- template<range_return_value re, class BidirectionalRange, class UnaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_return<BidirectionalRange,re>::type
- stable_partition(BidirectionalRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- return range_return<BidirectionalRange,re>::pack(
- std::stable_partition(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
-
- /// \overload
- template<range_return_value re, class BidirectionalRange, class UnaryPredicate>
- inline BOOST_DEDUCED_TYPENAME range_return<const BidirectionalRange,re>::type
- stable_partition(const BidirectionalRange& rng, UnaryPredicate pred)
- {
- boost::function_requires< BidirectionalRangeConcept<BidirectionalRange> >();
- return range_return<const BidirectionalRange,re>::pack(
- std::stable_partition(boost::begin(rng),boost::end(rng),pred),
- rng);
- }
+template<range_return_value re, class BidirectionalRange, class UnaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_return<BidirectionalRange,re>::type
+stable_partition(BidirectionalRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<BidirectionalRange> ));
+ return range_return<BidirectionalRange,re>::pack(
+ std::stable_partition(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
 
+/// \overload
+template<range_return_value re, class BidirectionalRange, class UnaryPredicate>
+inline BOOST_DEDUCED_TYPENAME range_return<const BidirectionalRange,re>::type
+stable_partition(const BidirectionalRange& rng, UnaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept<const BidirectionalRange> ));
+ return range_return<const BidirectionalRange,re>::pack(
+ std::stable_partition(boost::begin(rng),boost::end(rng),pred),
+ rng);
 }
 
+ } // namespace range
+ using range::stable_partition;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/stable_sort.hpp (from r60898, /trunk/boost/range/algorithm/stable_sort.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/stable_sort.hpp (original)
+++ branches/release/boost/range/algorithm/stable_sort.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,46 +17,52 @@
 
 namespace boost
 {
- /// \brief template function stable_sort
- ///
- /// range-based version of the stable_sort std algorithm
- ///
- /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template<class RandomAccessRange>
- inline RandomAccessRange& stable_sort(RandomAccessRange& rng)
+ namespace range
     {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::stable_sort(boost::begin(rng), boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange>
- inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::stable_sort(boost::begin(rng), boost::end(rng));
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline RandomAccessRange& stable_sort(RandomAccessRange& rng, BinaryPredicate sort_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred);
- return rng;
- }
-
- /// \overload
- template<class RandomAccessRange, class BinaryPredicate>
- inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng, BinaryPredicate sort_pred)
- {
- boost::function_requires< RandomAccessRangeConcept<RandomAccessRange> >();
- std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred);
- return rng;
- }
+
+/// \brief template function stable_sort
+///
+/// range-based version of the stable_sort std algorithm
+///
+/// \pre RandomAccessRange is a model of the RandomAccessRangeConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template<class RandomAccessRange>
+inline RandomAccessRange& stable_sort(RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::stable_sort(boost::begin(rng), boost::end(rng));
+ return rng;
+}
+
+/// \overload
+template<class RandomAccessRange>
+inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::stable_sort(boost::begin(rng), boost::end(rng));
+ return rng;
 }
 
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline RandomAccessRange& stable_sort(RandomAccessRange& rng, BinaryPredicate sort_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<RandomAccessRange> ));
+ std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred);
+ return rng;
+}
+
+/// \overload
+template<class RandomAccessRange, class BinaryPredicate>
+inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng, BinaryPredicate sort_pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept<const RandomAccessRange> ));
+ std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred);
+ return rng;
+}
+
+ } // namespace range
+ using range::stable_sort;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/swap_ranges.hpp (from r60898, /trunk/boost/range/algorithm/swap_ranges.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/swap_ranges.hpp (original)
+++ branches/release/boost/range/algorithm/swap_ranges.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -57,25 +57,31 @@
         }
     } // namespace range_detail
 
- /// \brief template function swap_ranges
- ///
- /// range-based version of the swap_ranges std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- template< typename SinglePassRange1, typename SinglePassRange2 >
- inline SinglePassRange2&
- swap_ranges(SinglePassRange1& range1, SinglePassRange2& range2)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange1>));
- BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange2>));
 
- boost::range_detail::swap_ranges_impl(
- boost::begin(range1), boost::end(range1),
- boost::begin(range2), boost::end(range2));
+/// \brief template function swap_ranges
+///
+/// range-based version of the swap_ranges std algorithm
+///
+/// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+/// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+template< typename SinglePassRange1, typename SinglePassRange2 >
+inline SinglePassRange2&
+swap_ranges(SinglePassRange1& range1, SinglePassRange2& range2)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange1>));
+ BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange2>));
 
- return range2;
- }
+ boost::range_detail::swap_ranges_impl(
+ boost::begin(range1), boost::end(range1),
+ boost::begin(range2), boost::end(range2));
+
+ return range2;
 }
 
+ } // namespace range
+ using range::swap_ranges;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm/transform.hpp (from r60898, /trunk/boost/range/algorithm/transform.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/transform.hpp (original)
+++ branches/release/boost/range/algorithm/transform.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,25 +18,31 @@
 
 namespace boost
 {
- /// \brief template function transform
- ///
- /// range-based version of the transform std algorithm
- ///
- /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
- /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
- /// \pre OutputIterator is a model of the OutputIteratorConcept
- /// \pre UnaryOperation is a model of the UnaryFunctionConcept
- /// \pre BinaryOperation is a model of the BinaryFunctionConcept
- template< class SinglePassRange1,
- class OutputIterator,
- class UnaryOperation >
- inline OutputIterator
- transform(const SinglePassRange1& rng,
- OutputIterator out,
- UnaryOperation fun)
+ namespace range
     {
- return std::transform(boost::begin(rng),boost::end(rng),out,fun);
- }
+
+ /// \brief template function transform
+ ///
+ /// range-based version of the transform std algorithm
+ ///
+ /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+ /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+ /// \pre OutputIterator is a model of the OutputIteratorConcept
+ /// \pre UnaryOperation is a model of the UnaryFunctionConcept
+ /// \pre BinaryOperation is a model of the BinaryFunctionConcept
+ template< class SinglePassRange1,
+ class OutputIterator,
+ class UnaryOperation >
+ inline OutputIterator
+ transform(const SinglePassRange1& rng,
+ OutputIterator out,
+ UnaryOperation fun)
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ return std::transform(boost::begin(rng),boost::end(rng),out,fun);
+ }
+
+ } // namespace range
 
     namespace range_detail
     {
@@ -62,24 +68,30 @@
         }
     }
 
- /// \overload
- template< class SinglePassRange1,
- class SinglePassRange2,
- class OutputIterator,
- class BinaryOperation >
- inline OutputIterator
- transform(const SinglePassRange1& rng1,
- const SinglePassRange2& rng2,
- OutputIterator out,
- BinaryOperation fun)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange1> >();
- boost::function_requires< SinglePassRangeConcept<SinglePassRange2> >();
- return range_detail::transform_impl(
- boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2),
- out, fun);
- }
-}
+
+ /// \overload
+ template< class SinglePassRange1,
+ class SinglePassRange2,
+ class OutputIterator,
+ class BinaryOperation >
+ inline OutputIterator
+ transform(const SinglePassRange1& rng1,
+ const SinglePassRange2& rng2,
+ OutputIterator out,
+ BinaryOperation fun)
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+ return range_detail::transform_impl(
+ boost::begin(rng1), boost::end(rng1),
+ boost::begin(rng2), boost::end(rng2),
+ out, fun);
+ }
+
+ } // namespace range
+ using range::transform;
+} // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/unique.hpp (from r60898, /trunk/boost/range/algorithm/unique.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/unique.hpp (original)
+++ branches/release/boost/range/algorithm/unique.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,84 +18,90 @@
 
 namespace boost
 {
- /// \brief template function unique
- ///
- /// range-based version of the unique std algorithm
- ///
- /// \pre Rng meets the requirements for a Forward range
- template< range_return_value re, class ForwardRange >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- unique( ForwardRange& rng )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::
- pack( std::unique( boost::begin(rng),
- boost::end(rng)), rng );
- }
-
- /// \overload
- template< range_return_value re, class ForwardRange >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- unique( const ForwardRange& rng )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::
- pack( std::unique( boost::begin(rng),
- boost::end(rng)), rng );
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- unique( ForwardRange& rng, BinaryPredicate pred )
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::
- pack(std::unique(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- unique( const ForwardRange& rng, BinaryPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::
- pack(std::unique(boost::begin(rng), boost::end(rng), pred),
- rng);
- }
-
- /// \overload
- template< class ForwardRange >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange, return_begin_found>::type
- unique( ForwardRange& rng )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return boost::unique<return_begin_found>(rng);
- }
- /// \overload
- template< class ForwardRange >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange, return_begin_found>::type
- unique( const ForwardRange& rng )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return boost::unique<return_begin_found>(rng);
- }
- /// \overload
- template< class ForwardRange, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange, return_begin_found>::type
- unique( ForwardRange& rng, BinaryPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return boost::unique<return_begin_found>(rng);
- }
- /// \overload
- template< class ForwardRange, class BinaryPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- unique( const ForwardRange& rng, BinaryPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return boost::unique<return_begin_found>(rng, pred);
- }
+
+/// \brief template function unique
+///
+/// range-based version of the unique std algorithm
+///
+/// \pre Rng meets the requirements for a Forward range
+template< range_return_value re, class ForwardRange >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+unique( ForwardRange& rng )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::
+ pack( std::unique( boost::begin(rng),
+ boost::end(rng)), rng );
+}
+
+/// \overload
+template< range_return_value re, class ForwardRange >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+unique( const ForwardRange& rng )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::
+ pack( std::unique( boost::begin(rng),
+ boost::end(rng)), rng );
+}
+/// \overload
+template< range_return_value re, class ForwardRange, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+unique( ForwardRange& rng, BinaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::
+ pack(std::unique(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
+/// \overload
+template< range_return_value re, class ForwardRange, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
+unique( const ForwardRange& rng, BinaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return range_return<const ForwardRange,re>::
+ pack(std::unique(boost::begin(rng), boost::end(rng), pred),
+ rng);
+}
+
+/// \overload
+template< class ForwardRange >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange, return_begin_found>::type
+unique( ForwardRange& rng )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return ::boost::range::unique<return_begin_found>(rng);
+}
+/// \overload
+template< class ForwardRange >
+inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange, return_begin_found>::type
+unique( const ForwardRange& rng )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return ::boost::range::unique<return_begin_found>(rng);
 }
+/// \overload
+template< class ForwardRange, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange, return_begin_found>::type
+unique( ForwardRange& rng, BinaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return ::boost::range::unique<return_begin_found>(rng);
+}
+/// \overload
+template< class ForwardRange, class BinaryPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
+unique( const ForwardRange& rng, BinaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
+ return ::boost::range::unique<return_begin_found>(rng, pred);
+}
+
+ } // namespace range
+ using range::unique;
+} // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/unique_copy.hpp (from r60898, /trunk/boost/range/algorithm/unique_copy.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/unique_copy.hpp (original)
+++ branches/release/boost/range/algorithm/unique_copy.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -17,29 +17,35 @@
 
 namespace boost
 {
- /// \brief template function unique_copy
- ///
- /// range-based version of the unique_copy std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre OutputIterator is a model of the OutputIteratorConcept
- /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
- template< class SinglePassRange, class OutputIterator >
- inline OutputIterator
- unique_copy( const SinglePassRange& rng, OutputIterator out_it )
- {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::unique_copy(boost::begin(rng), boost::end(rng), out_it);
- }
- /// \overload
- template< class SinglePassRange, class OutputIterator, class BinaryPredicate >
- inline OutputIterator
- unique_copy( const SinglePassRange& rng, OutputIterator out_it,
- BinaryPredicate pred )
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- return std::unique_copy(boost::begin(rng), boost::end(rng), out_it, pred);
- }
+
+/// \brief template function unique_copy
+///
+/// range-based version of the unique_copy std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre OutputIterator is a model of the OutputIteratorConcept
+/// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+template< class SinglePassRange, class OutputIterator >
+inline OutputIterator
+unique_copy( const SinglePassRange& rng, OutputIterator out_it )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
+ return std::unique_copy(boost::begin(rng), boost::end(rng), out_it);
 }
+/// \overload
+template< class SinglePassRange, class OutputIterator, class BinaryPredicate >
+inline OutputIterator
+unique_copy( const SinglePassRange& rng, OutputIterator out_it,
+ BinaryPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
+ return std::unique_copy(boost::begin(rng), boost::end(rng), out_it, pred);
+}
+
+ } // namespace range
+ using range::unique_copy;
+} // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm/upper_bound.hpp (from r60898, /trunk/boost/range/algorithm/upper_bound.hpp)
==============================================================================
--- /trunk/boost/range/algorithm/upper_bound.hpp (original)
+++ branches/release/boost/range/algorithm/upper_bound.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,84 +18,54 @@
 
 namespace boost
 {
- /// \brief template function upper_bound
- ///
- /// range-based version of the upper_bound std algorithm
- ///
- /// \pre ForwardRange is a model of the ForwardRangeConcept
- template< class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- upper_bound( ForwardRange& rng, Value val )
+ namespace range
     {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::upper_bound(boost::begin(rng), boost::end(rng), val);
- }
- /// \overload
- template< class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- upper_bound( const ForwardRange& rng, Value val )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::upper_bound(boost::begin(rng), boost::end(rng), val);
- }
- /// \overload
- template< class ForwardRange, class Value, class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
- upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
- }
- /// \overload
- template< class ForwardRange, class Value, class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
- upper_bound( const ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- upper_bound( ForwardRange& rng, Value val )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::
- pack(std::upper_bound(boost::begin(rng), boost::end(rng), val),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- upper_bound( const ForwardRange& rng, Value val )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::
- pack(std::upper_bound(boost::begin(rng), boost::end(rng), val),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value,
- class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
- upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<ForwardRange,re>::
- pack(std::upper_bound(boost::begin(rng), boost::end(rng), val, pred),
- rng);
- }
- /// \overload
- template< range_return_value re, class ForwardRange, class Value,
- class SortPredicate >
- inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
- upper_bound( const ForwardRange& rng, Value val, SortPredicate pred )
- {
- boost::function_requires< ForwardRangeConcept<ForwardRange> >();
- return range_return<const ForwardRange,re>::
- pack(std::upper_bound(boost::begin(rng), boost::end(rng), val, pred),
- rng);
- }
+
+/// \brief template function upper_bound
+///
+/// range-based version of the upper_bound std algorithm
+///
+/// \pre ForwardRange is a model of the ForwardRangeConcept
+template< class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+upper_bound( ForwardRange& rng, Value val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::upper_bound(boost::begin(rng), boost::end(rng), val);
+}
+/// \overload
+/// \overload
+template< class ForwardRange, class Value, class SortPredicate >
+inline BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
+upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
+}
+/// \overload
+template< range_return_value re, class ForwardRange, class Value >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+upper_bound( ForwardRange& rng, Value val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::
+ pack(std::upper_bound(boost::begin(rng), boost::end(rng), val),
+ rng);
+}
+/// \overload
+template< range_return_value re, class ForwardRange, class Value,
+ class SortPredicate >
+inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
+upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
+ return range_return<ForwardRange,re>::
+ pack(std::upper_bound(boost::begin(rng), boost::end(rng), val, pred),
+ rng);
 }
 
+ } // namespace range
+ using range::upper_bound;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext.hpp (from r60898, /trunk/boost/range/algorithm_ext.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext.hpp (original)
+++ branches/release/boost/range/algorithm_ext.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -18,6 +18,7 @@
 #include <boost/range/algorithm_ext/copy_n.hpp>
 #include <boost/range/algorithm_ext/for_each.hpp>
 #include <boost/range/algorithm_ext/is_sorted.hpp>
+#include <boost/range/algorithm_ext/iota.hpp>
 #include <boost/range/algorithm_ext/overwrite.hpp>
 #include <boost/range/algorithm_ext/push_back.hpp>
 #include <boost/range/algorithm_ext/push_front.hpp>

Copied: branches/release/boost/range/algorithm_ext/copy_n.hpp (from r60898, /trunk/boost/range/algorithm_ext/copy_n.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/copy_n.hpp (original)
+++ branches/release/boost/range/algorithm_ext/copy_n.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -21,27 +21,33 @@
 
 namespace boost
 {
- /// \brief template function copy
- ///
- /// range-based version of the copy std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- /// \pre OutputIterator is a model of the OutputIteratorConcept
- /// \pre 0 <= n < distance(rng)
- template< class SinglePassRange, class Size, class OutputIterator >
- inline OutputIterator copy_n(const SinglePassRange& rng, Size n, OutputIterator out)
+ namespace range
     {
- boost::function_requires< SinglePassRangeConcept<SinglePassRange> >();
- BOOST_ASSERT( n < static_cast<Size>(boost::distance(rng)) );
- BOOST_ASSERT( n >= static_cast<Size>(0) );
 
- BOOST_DEDUCED_TYPENAME range_const_iterator<SinglePassRange>::type source = boost::begin(rng);
+/// \brief template function copy
+///
+/// range-based version of the copy std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+/// \pre OutputIterator is a model of the OutputIteratorConcept
+/// \pre 0 <= n < distance(rng)
+template< class SinglePassRange, class Size, class OutputIterator >
+inline OutputIterator copy_n(const SinglePassRange& rng, Size n, OutputIterator out)
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange> ));
+ BOOST_ASSERT( n < static_cast<Size>(boost::distance(rng)) );
+ BOOST_ASSERT( n >= static_cast<Size>(0) );
+
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type source = boost::begin(rng);
 
- for (Size i = 0; i < n; ++i, ++out, ++source)
- *out = *source;
+ for (Size i = 0; i < n; ++i, ++out, ++source)
+ *out = *source;
 
- return out;
- }
+ return out;
 }
 
+ } // namespace range
+ using range::copy_n;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/erase.hpp (from r60898, /trunk/boost/range/algorithm_ext/erase.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/erase.hpp (original)
+++ branches/release/boost/range/algorithm_ext/erase.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -11,35 +11,48 @@
 #define BOOST_RANGE_ALGORITHM_EXT_ERASE_HPP_INCLUDED
 
 #include <boost/range/config.hpp>
+#include <boost/range/concepts.hpp>
 #include <boost/range/difference_type.hpp>
+#include <boost/range/iterator_range_core.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
 #include <boost/assert.hpp>
 
 namespace boost
 {
- template< class Container >
- inline void erase( Container& on,
- iterator_range<BOOST_DEDUCED_TYPENAME Container::iterator> to_erase )
- {
- on.erase( boost::begin(to_erase), boost::end(to_erase) );
- }
-
- template< class Container, class T >
- inline void remove_erase( Container& on, const T& val )
- {
- on.erase(
- std::remove(boost::begin(on), boost::end(on), val),
- boost::end(on));
- }
-
- template< class Container, class Pred >
- inline void remove_erase_if( Container& on, Pred pred )
- {
- on.erase(
- std::remove_if(boost::begin(on), boost::end(on), pred),
- boost::end(on));
- }
+ namespace range
+ {
+
+template< class Container >
+inline void erase( Container& on,
+ iterator_range<BOOST_DEDUCED_TYPENAME Container::iterator> to_erase )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
+ on.erase( boost::begin(to_erase), boost::end(to_erase) );
+}
+
+template< class Container, class T >
+inline void remove_erase( Container& on, const T& val )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
+ on.erase(
+ std::remove(boost::begin(on), boost::end(on), val),
+ boost::end(on));
 }
 
+template< class Container, class Pred >
+inline void remove_erase_if( Container& on, Pred pred )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
+ on.erase(
+ std::remove_if(boost::begin(on), boost::end(on), pred),
+ boost::end(on));
+}
+
+ } // namespace range
+ using range::erase;
+ using range::remove_erase;
+ using range::remove_erase_if;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/for_each.hpp (from r60898, /trunk/boost/range/algorithm_ext/for_each.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/for_each.hpp (original)
+++ branches/release/boost/range/algorithm_ext/for_each.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -11,6 +11,7 @@
 #define BOOST_RANGE_ALGORITHM_EXT_FOR_EACH_HPP_INCLUDED
 
 #include <boost/range/config.hpp>
+#include <boost/range/concepts.hpp>
 #include <boost/range/difference_type.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
@@ -33,33 +34,53 @@
                 }
         }
 
- template<class SinglePassRange1, class SinglePassRange2, class Fn2>
- inline Fn2 for_each(const SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn)
+ namespace range
         {
- return range_detail::for_each_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), fn);
- }
-
- template<class SinglePassRange1, class SinglePassRange2, class Fn2>
- inline Fn2 for_each(const SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn)
- {
- return range_detail::for_each_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), fn);
- }
-
- template<class SinglePassRange1, class SinglePassRange2, class Fn2>
- inline Fn2 for_each(SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn)
- {
- return range_detail::for_each_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), fn);
- }
-
- template<class SinglePassRange1, class SinglePassRange2, class Fn2>
- inline Fn2 for_each(SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn)
- {
- return range_detail::for_each_impl(boost::begin(rng1), boost::end(rng1),
- boost::begin(rng2), boost::end(rng2), fn);
- }
-}
+ template<class SinglePassRange1, class SinglePassRange2, class Fn2>
+ inline Fn2 for_each(const SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn)
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::for_each_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), fn);
+ }
+
+ template<class SinglePassRange1, class SinglePassRange2, class Fn2>
+ inline Fn2 for_each(const SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn)
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::for_each_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), fn);
+ }
+
+ template<class SinglePassRange1, class SinglePassRange2, class Fn2>
+ inline Fn2 for_each(SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn)
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::for_each_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), fn);
+ }
+
+ template<class SinglePassRange1, class SinglePassRange2, class Fn2>
+ inline Fn2 for_each(SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn)
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ return ::boost::range_detail::for_each_impl(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2), fn);
+ }
+ } // namespace range
+ using range::for_each;
+} // namespace boost
 
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/insert.hpp (from r60898, /trunk/boost/range/algorithm_ext/insert.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/insert.hpp (original)
+++ branches/release/boost/range/algorithm_ext/insert.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -11,6 +11,7 @@
 #define BOOST_RANGE_ALGORITHM_EXT_INSERT_HPP_INCLUDED
 
 #include <boost/range/config.hpp>
+#include <boost/range/concepts.hpp>
 #include <boost/range/difference_type.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
@@ -18,15 +19,23 @@
 
 namespace boost
 {
- template< class Container, class Range >
- inline void insert( Container& on,
- BOOST_DEDUCED_TYPENAME Container::iterator before,
- const Range& from )
- {
- BOOST_ASSERT( (void*)&on != (void*)&from &&
- "cannot copy from a container to itself" );
- on.insert( before, boost::begin(from), boost::end(from) );
- }
+ namespace range
+ {
+
+template< class Container, class Range >
+inline void insert( Container& on,
+ BOOST_DEDUCED_TYPENAME Container::iterator before,
+ const Range& from )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Range> ));
+ BOOST_ASSERT( (void*)&on != (void*)&from &&
+ "cannot copy from a container to itself" );
+ on.insert( before, boost::begin(from), boost::end(from) );
 }
 
+ } // namespace range
+ using range::insert;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/is_sorted.hpp (from r60898, /trunk/boost/range/algorithm_ext/is_sorted.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/is_sorted.hpp (original)
+++ branches/release/boost/range/algorithm_ext/is_sorted.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -20,7 +20,7 @@
 {
     namespace range_detail
     {
- template<typename ForwardIterator>
+ template<class ForwardIterator>
         inline bool is_sorted(ForwardIterator first, ForwardIterator last)
         {
             for (ForwardIterator next = first; first != last && ++next != last; ++first)
@@ -29,7 +29,7 @@
             return true;
         }
 
- template<typename ForwardIterator, typename BinaryPredicate>
+ template<class ForwardIterator, class BinaryPredicate>
         inline bool is_sorted(ForwardIterator first, ForwardIterator last, BinaryPredicate pred)
         {
             for (ForwardIterator next = first; first != last && ++next != last; ++first)
@@ -39,27 +39,33 @@
         }
     }
 
- /// \brief template function count
- ///
- /// range-based version of the count std algorithm
- ///
- /// \pre SinglePassRange is a model of the SinglePassRangeConcept
- template<typename SinglePassRange>
- inline bool is_sorted(const SinglePassRange& rng)
+ namespace range
     {
- BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
- BOOST_CONCEPT_ASSERT((LessThanComparableConcept<typename range_value<SinglePassRange>::type>));
- return range_detail::is_sorted(boost::begin(rng), boost::end(rng));
- }
 
- /// \overload
- template<typename SinglePassRange, typename BinaryPredicate>
- inline bool is_sorted(const SinglePassRange& rng, BinaryPredicate pred)
- {
- BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
- BOOST_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate, typename range_value<SinglePassRange>::type, typename range_value<SinglePassRange>::type>));
- return range_detail::is_sorted(boost::begin(rng), boost::end(rng), pred);
- }
+/// \brief template function count
+///
+/// range-based version of the count std algorithm
+///
+/// \pre SinglePassRange is a model of the SinglePassRangeConcept
+template<class SinglePassRange>
+inline bool is_sorted(const SinglePassRange& rng)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<const SinglePassRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((LessThanComparableConcept<BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>));
+ return range_detail::is_sorted(boost::begin(rng), boost::end(rng));
 }
 
+/// \overload
+template<class SinglePassRange, class BinaryPredicate>
+inline bool is_sorted(const SinglePassRange& rng, BinaryPredicate pred)
+{
+ BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
+ BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept<BinaryPredicate, BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type, BOOST_DEDUCED_TYPENAME range_value<SinglePassRange>::type>));
+ return range_detail::is_sorted(boost::begin(rng), boost::end(rng), pred);
+}
+
+ } // namespace range
+ using range::is_sorted;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/overwrite.hpp (from r60898, /trunk/boost/range/algorithm_ext/overwrite.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/overwrite.hpp (original)
+++ branches/release/boost/range/algorithm_ext/overwrite.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -11,36 +11,47 @@
 #define BOOST_RANGE_ALGORITHM_EXT_OVERWRITE_HPP_INCLUDED
 
 #include <boost/range/config.hpp>
+#include <boost/range/concepts.hpp>
 #include <boost/range/difference_type.hpp>
+#include <boost/range/iterator.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
 #include <boost/assert.hpp>
 
 namespace boost
 {
- template< class SinglePassRange1, class SinglePassRange2 >
- inline void overwrite( const SinglePassRange1& from, SinglePassRange2& to )
- {
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type
- i = boost::begin(from), e = boost::end(from);
-
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type
- out = boost::begin(to);
-
+ namespace range
+ {
+
+template< class SinglePassRange1, class SinglePassRange2 >
+inline void overwrite( const SinglePassRange1& from, SinglePassRange2& to )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+
+ BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type
+ i = boost::begin(from), e = boost::end(from);
+
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type
+ out = boost::begin(to);
+
 #ifndef NDEBUG
- BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type
- last_out = boost::end(to);
+ BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange2>::type
+ last_out = boost::end(to);
 #endif
 
- for( ; i != e; ++out, ++i )
- {
+ for( ; i != e; ++out, ++i )
+ {
 #ifndef NDEBUG
- BOOST_ASSERT( out != last_out
- && "out of bounds in boost::overwrite()" );
+ BOOST_ASSERT( out != last_out
+ && "out of bounds in boost::overwrite()" );
 #endif
- *out = *i;
- }
- }
+ *out = *i;
+ }
 }
 
+ } // namespace range
+ using range::overwrite;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/push_back.hpp (from r60898, /trunk/boost/range/algorithm_ext/push_back.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/push_back.hpp (original)
+++ branches/release/boost/range/algorithm_ext/push_back.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -11,6 +11,7 @@
 #define BOOST_RANGE_ALGORITHM_EXT_PUSH_BACK_HPP_INCLUDED
 
 #include <boost/range/config.hpp>
+#include <boost/range/concepts.hpp>
 #include <boost/range/difference_type.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
@@ -18,14 +19,21 @@
 
 namespace boost
 {
- template< class Container, class Range >
- inline void push_back( Container& on, const Range& from )
- {
- BOOST_ASSERT( (void*)&on != (void*)&from &&
- "cannot copy from a container to itself" );
- on.insert( on.end(), boost::begin(from), boost::end(from) );
- }
+ namespace range
+ {
 
+template< class Container, class Range >
+inline void push_back( Container& on, const Range& from )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Container> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const Range> ));
+ BOOST_ASSERT( (void*)&on != (void*)&from &&
+ "cannot copy from a container to itself" );
+ on.insert( on.end(), boost::begin(from), boost::end(from) );
 }
 
+ } // namespace range
+ using range::push_back;
+} // namespace boost
+
 #endif // include guard

Copied: branches/release/boost/range/algorithm_ext/push_front.hpp (from r60898, /trunk/boost/range/algorithm_ext/push_front.hpp)
==============================================================================
--- /trunk/boost/range/algorithm_ext/push_front.hpp (original)
+++ branches/release/boost/range/algorithm_ext/push_front.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -11,6 +11,7 @@
 #define BOOST_RANGE_ALGORITHM_EXT_PUSH_FRONT_HPP_INCLUDED
 
 #include <boost/range/config.hpp>
+#include <boost/range/concepts.hpp>
 #include <boost/range/difference_type.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
@@ -18,13 +19,21 @@
 
 namespace boost
 {
- template< class Container, class Range >
- inline void push_front( Container& on, const Range& from )
- {
- BOOST_ASSERT( (void*)&on != (void*)&from &&
- "cannot copy from a container to itself" );
- on.insert( on.begin(), boost::begin(from), boost::end(from) );
- }
+ namespace range
+ {
+
+template< class Container, class Range >
+inline void push_front( Container& on, const Range& from )
+{
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<Container> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const Range> ));
+ BOOST_ASSERT( (void*)&on != (void*)&from &&
+ "cannot copy from a container to itself" );
+ on.insert( on.begin(), boost::begin(from), boost::end(from) );
 }
 
+ } // namespace range
+ using range::push_front;
+} // namespace boost
+
 #endif // include guard

Modified: branches/release/boost/range/as_literal.hpp
==============================================================================
--- branches/release/boost/range/as_literal.hpp (original)
+++ branches/release/boost/range/as_literal.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -25,7 +25,7 @@
 #include <boost/detail/workaround.hpp>
 
 #include <cstring>
-#ifndef BOOST_NO_CWCHAR
+#ifndef BOOST_NO_CWCHAR
 #include <cwchar>
 #endif
 
@@ -38,41 +38,41 @@
             return strlen( s );
         }
 
-#ifndef BOOST_NO_CWCHAR
+#ifndef BOOST_NO_CWCHAR
         inline std::size_t length( const wchar_t* s )
         {
             return wcslen( s );
         }
-#endif
+#endif
 
         //
         // Remark: the compiler cannot choose between T* and T[sz]
         // overloads, so we must put the T* internal to the
         // unconstrained version.
- //
+ //
 
         inline bool is_char_ptr( char* )
         {
             return true;
         }
-
+
         inline bool is_char_ptr( const char* )
         {
             return true;
         }
 
-#ifndef BOOST_NO_CWCHAR
+#ifndef BOOST_NO_CWCHAR
         inline bool is_char_ptr( wchar_t* )
         {
             return true;
         }
-
+
         inline bool is_char_ptr( const wchar_t* )
         {
             return true;
         }
 #endif
-
+
         template< class T >
         inline long is_char_ptr( T /* r */ )
         {
@@ -80,30 +80,30 @@
         }
 
         template< class T >
- inline iterator_range<T*>
+ inline iterator_range<T*>
         make_range( T* const r, bool )
         {
             return iterator_range<T*>( r, r + length(r) );
         }
 
         template< class T >
- inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<T>::type>
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<T>::type>
         make_range( T& r, long )
         {
             return boost::make_iterator_range( r );
         }
 
     }
-
+
     template< class Range >
- inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<Range>::type>
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<Range>::type>
     as_literal( Range& r )
     {
         return range_detail::make_range( r, range_detail::is_char_ptr(r) );
     }
 
     template< class Range >
- inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type>
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type>
     as_literal( const Range& r )
     {
         return range_detail::make_range( r, range_detail::is_char_ptr(r) );
@@ -112,9 +112,9 @@
     template< class Char, std::size_t sz >
     inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
     {
- return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
+ return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
     }
-
+
     template< class Char, std::size_t sz >
     inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
     {

Modified: branches/release/boost/range/concepts.hpp
==============================================================================
--- branches/release/boost/range/concepts.hpp (original)
+++ branches/release/boost/range/concepts.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -1,5 +1,10 @@
 // Boost.Range library concept checks
 //
+// Copyright Neil Groves 2009. Use, modification and distribution
+// are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
 // Copyright Daniel Walker 2006. Use, modification and distribution
 // are subject to the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at
@@ -15,6 +20,9 @@
 #include <boost/iterator/iterator_concepts.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/value_type.hpp>
+#include <boost/range/detail/misc_concept.hpp>
 
 /*!
  * \file
@@ -29,20 +37,15 @@
  * concept.
  *
  * \code
- * function_requires<ForwardRangeConcept<T> >();
+ * BOOST_CONCEPT_ASSERT((ForwardRangeConcept<T>));
  * \endcode
  *
- * An additional concept check is required for the value access
- * property of the range. For example to check for a
- * ForwardReadableRange, the following code is required.
+ * A different concept check is required to ensure writeable value
+ * access. For example to check for a ForwardRange that can be written
+ * to, the following code is required.
  *
  * \code
- * function_requires<ForwardRangeConcept<T> >();
- * function_requires<
- * ReadableIteratorConcept<
- * typename range_iterator<T>::type
- * >
- * >();
+ * BOOST_CONCEPT_ASSERT((WriteableForwardRangeConcept<T>));
  * \endcode
  *
  * \see http://www.boost.org/libs/range/doc/range.html for details
@@ -55,84 +58,272 @@
 
 namespace boost {
 
+ namespace range_detail {
+
+#ifndef BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+
+// List broken compiler versions here:
+ #ifdef __GNUC__
+ // GNUC 4.2 has strange issues correctly detecting compliance with the Concepts
+ // hence the least disruptive approach is to turn-off the concept checking for
+ // this version of the compiler.
+ #if __GNUC__ == 4 && __GNUC_MINOR__ == 2
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
+ #endif
+ #endif
+
+ #ifdef __BORLANDC__
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
+ #endif
+
+ #ifdef __PATHCC__
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
+ #endif
+
+// Default to using the concept asserts unless we have defined it off
+// during the search for black listed compilers.
+ #ifndef BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 1
+ #endif
+
+#endif
+
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x )
+#else
+ #define BOOST_RANGE_CONCEPT_ASSERT( x )
+#endif
+
+ // Rationale for the inclusion of redefined iterator concept
+ // classes:
+ //
+ // The Range algorithms often do not require that the iterators are
+ // Assignable, but the correct standard conformant iterators
+ // do require the iterators to be a model of the Assignable concept.
+ // Iterators that contains a functor that is not assignable therefore
+ // are not correct models of the standard iterator concepts,
+ // despite being adequate for most algorithms. An example of this
+ // use case is the combination of the boost::adaptors::filtered
+ // class with a boost::lambda::bind generated functor.
+ // Ultimately modeling the range concepts using composition
+ // with the Boost.Iterator concepts would render the library
+ // incompatible with many common Boost.Lambda expressions.
+ template<class Iterator>
+ struct IncrementableIteratorConcept : CopyConstructible<Iterator>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME iterator_traversal<Iterator>::type traversal_category;
+
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ traversal_category,
+ incrementable_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(IncrementableIteratorConcept)
+ {
+ ++i;
+ (void)i++;
+ }
+ private:
+ Iterator i;
+#endif
+ };
+
+ template<class Iterator>
+ struct SinglePassIteratorConcept
+ : IncrementableIteratorConcept<Iterator>
+ , EqualityComparable<Iterator>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category,
+ single_pass_traversal_tag
+ >));
+#endif
+ };
+
+ template<class Iterator>
+ struct ForwardIteratorConcept
+ : SinglePassIteratorConcept<Iterator>
+ , DefaultConstructible<Iterator>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::difference_type difference_type;
+
+ BOOST_MPL_ASSERT((is_integral<difference_type>));
+ BOOST_MPL_ASSERT_RELATION(std::numeric_limits<difference_type>::is_signed, ==, true);
+
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME ForwardIteratorConcept::traversal_category,
+ forward_traversal_tag
+ >));
+#endif
+ };
+
+ template<class Iterator>
+ struct BidirectionalIteratorConcept
+ : ForwardIteratorConcept<Iterator>
+ {
+ #if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalIteratorConcept::traversal_category,
+ bidirectional_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(BidirectionalIteratorConcept)
+ {
+ --i;
+ (void)i--;
+ }
+ private:
+ Iterator i;
+ #endif
+ };
+
+ template<class Iterator>
+ struct RandomAccessIteratorConcept
+ : BidirectionalIteratorConcept<Iterator>
+ {
+ #if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME RandomAccessIteratorConcept::traversal_category,
+ random_access_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(RandomAccessIteratorConcept)
+ {
+ i += n;
+ i = i + n;
+ i = n + i;
+ i -= n;
+ i = i - n;
+ n = i - j;
+ }
+ private:
+ BOOST_DEDUCED_TYPENAME RandomAccessIteratorConcept::difference_type n;
+ Iterator i;
+ Iterator j;
+ #endif
+ };
+
+ } // namespace range_detail
+
     //! Check if a type T models the SinglePassRange range concept.
- template<typename T>
- struct SinglePassRangeConcept
+ template<class T>
+ struct SinglePassRangeConcept
     {
- typedef typename range_iterator<T const>::type range_const_iterator;
- typedef typename range_iterator<T>::type range_iterator;
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME range_iterator<T const>::type const_iterator;
+ typedef BOOST_DEDUCED_TYPENAME range_iterator<T>::type iterator;
+
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::SinglePassIteratorConcept<iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::SinglePassIteratorConcept<const_iterator>));
+
+ BOOST_CONCEPT_USAGE(SinglePassRangeConcept)
+ {
+ // This has been modified from assigning to this->i
+ // (where i was a member variable) to improve
+ // compatibility with Boost.Lambda
+ iterator i1 = boost::begin(*m_range);
+ iterator i2 = boost::end(*m_range);
 
- void constraints()
- {
- function_requires<
- boost_concepts::SinglePassIteratorConcept<
- range_iterator
- >
- >();
- i = boost::begin(a);
- i = boost::end(a);
- const_constraints(a);
+ ignore_unused_variable_warning(i1);
+ ignore_unused_variable_warning(i2);
+
+ const_constraints(*m_range);
         }
-
- void const_constraints(const T& a)
+
+ private:
+ void const_constraints(const T& const_range)
         {
- ci = boost::begin(a);
- ci = boost::end(a);
+ const_iterator ci1 = boost::begin(const_range);
+ const_iterator ci2 = boost::end(const_range);
+
+ ignore_unused_variable_warning(ci1);
+ ignore_unused_variable_warning(ci2);
         }
- T a;
- range_iterator i;
- range_const_iterator ci;
+
+ // Rationale:
+ // The type of m_range is T* rather than T because it allows
+ // T to be an abstract class. The other obvious alternative of
+ // T& produces a warning on some compilers.
+ T* m_range;
+#endif
     };
 
     //! Check if a type T models the ForwardRange range concept.
- template<typename T>
- struct ForwardRangeConcept
+ template<class T>
+ struct ForwardRangeConcept : SinglePassRangeConcept<T>
     {
- void constraints()
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::ForwardIteratorConcept<BOOST_DEDUCED_TYPENAME ForwardRangeConcept::iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::ForwardIteratorConcept<BOOST_DEDUCED_TYPENAME ForwardRangeConcept::const_iterator>));
+#endif
+ };
+
+ template<class Range>
+ struct WriteableRangeConcept
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME range_iterator<Range>::type iterator;
+
+ BOOST_CONCEPT_USAGE(WriteableRangeConcept)
         {
- function_requires<
- SinglePassRangeConcept<T>
- >();
- function_requires<
- boost_concepts::ForwardTraversalConcept<
- typename range_iterator<T>::type
- >
- >();
+ *i = v;
         }
+ private:
+ iterator i;
+ BOOST_DEDUCED_TYPENAME range_value<Range>::type v;
+#endif
+ };
+
+ //! Check if a type T models the WriteableForwardRange range concept.
+ template<class T>
+ struct WriteableForwardRangeConcept
+ : ForwardRangeConcept<T>
+ , WriteableRangeConcept<T>
+ {
     };
 
     //! Check if a type T models the BidirectionalRange range concept.
- template<typename T>
- struct BidirectionalRangeConcept
+ template<class T>
+ struct BidirectionalRangeConcept : ForwardRangeConcept<T>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((BidirectionalIteratorConcept<BOOST_DEDUCED_TYPENAME BidirectionalRangeConcept::iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((BidirectionalIteratorConcept<BOOST_DEDUCED_TYPENAME BidirectionalRangeConcept::const_iterator>));
+#endif
+ };
+
+ //! Check if a type T models the WriteableBidirectionalRange range concept.
+ template<class T>
+ struct WriteableBidirectionalRangeConcept
+ : BidirectionalRangeConcept<T>
+ , WriteableRangeConcept<T>
     {
- void constraints()
- {
- function_requires<
- ForwardRangeConcept<T>
- >();
- function_requires<
- boost_concepts::BidirectionalTraversalConcept<
- typename range_iterator<T>::type
- >
- >();
- }
     };
 
     //! Check if a type T models the RandomAccessRange range concept.
- template<typename T>
- struct RandomAccessRangeConcept
+ template<class T>
+ struct RandomAccessRangeConcept : BidirectionalRangeConcept<T>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((RandomAccessIteratorConcept<BOOST_DEDUCED_TYPENAME RandomAccessRangeConcept::iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((RandomAccessIteratorConcept<BOOST_DEDUCED_TYPENAME RandomAccessRangeConcept::const_iterator>));
+#endif
+ };
+
+ //! Check if a type T models the WriteableRandomAccessRange range concept.
+ template<class T>
+ struct WriteableRandomAccessRangeConcept
+ : RandomAccessRangeConcept<T>
+ , WriteableRangeConcept<T>
     {
- void constraints()
- {
- function_requires<
- BidirectionalRangeConcept<T>
- >();
- function_requires<
- boost_concepts::RandomAccessTraversalConcept<
- typename range_iterator<T>::type
- >
- >();
- }
     };
 
 } // namespace boost

Modified: branches/release/boost/range/const_iterator.hpp
==============================================================================
--- branches/release/boost/range/const_iterator.hpp (original)
+++ branches/release/boost/range/const_iterator.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -21,6 +21,7 @@
 #include <boost/range/detail/const_iterator.hpp>
 #else
 
+#include <boost/range/detail/extract_optional_type.hpp>
 #include <boost/type_traits/remove_const.hpp>
 #include <cstddef>
 #include <utility>
@@ -31,11 +32,13 @@
     // default
     //////////////////////////////////////////////////////////////////////////
     
+ namespace range_detail {
+ BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( const_iterator )
+ }
+
     template< typename C >
- struct range_const_iterator
- {
- typedef BOOST_DEDUCED_TYPENAME C::const_iterator type;
- };
+ struct range_const_iterator : range_detail::extract_const_iterator<C>
+ {};
     
     //////////////////////////////////////////////////////////////////////////
     // pair

Modified: branches/release/boost/range/detail/implementation_help.hpp
==============================================================================
--- branches/release/boost/range/detail/implementation_help.hpp (original)
+++ branches/release/boost/range/detail/implementation_help.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -21,13 +21,13 @@
 #include <wchar.h>
 #endif
 
-namespace boost
+namespace boost
 {
     namespace range_detail
     {
         template <typename T>
         inline void boost_range_silence_warning( const T& ) { }
-
+
         /////////////////////////////////////////////////////////////////////
         // end() help
         /////////////////////////////////////////////////////////////////////
@@ -36,7 +36,7 @@
         {
             return s + strlen( s );
         }
-
+
 #ifndef BOOST_NO_CWCHAR
         inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
         {
@@ -51,7 +51,7 @@
                 ;
             return s;
         }
-#endif
+#endif
 
         template< class Char >
         inline Char* str_end( Char* s )
@@ -64,7 +64,7 @@
         {
             return boost_range_array + sz;
         }
-
+
         template< class T, std::size_t sz >
         inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] )
         {
@@ -74,7 +74,7 @@
         /////////////////////////////////////////////////////////////////////
         // size() help
         /////////////////////////////////////////////////////////////////////
-
+
         template< class Char >
         inline std::size_t str_size( const Char* const& s )
         {
@@ -96,7 +96,7 @@
         }
 
     } // namespace 'range_detail'
-
+
 } // namespace 'boost'
 
 

Copied: branches/release/boost/range/irange.hpp (from r60898, /trunk/boost/range/irange.hpp)
==============================================================================
--- /trunk/boost/range/irange.hpp (original)
+++ branches/release/boost/range/irange.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -36,14 +36,16 @@
                         integer_iterator<Integer>,
                         Integer,
                         boost::random_access_traversal_tag,
- const Integer&
+ Integer,
+ std::ptrdiff_t
>
         {
             typedef boost::iterator_facade<
                         integer_iterator<Integer>,
                         Integer,
                         boost::random_access_traversal_tag,
- const Integer&
+ Integer,
+ std::ptrdiff_t
> base_t;
         public:
             typedef typename base_t::value_type value_type;

Modified: branches/release/boost/range/iterator.hpp
==============================================================================
--- branches/release/boost/range/iterator.hpp (original)
+++ branches/release/boost/range/iterator.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -25,46 +25,46 @@
 namespace boost
 {
 
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
 
- namespace range_detail_vc7_1
- {
- template< typename C, typename Sig = void(C) >
- struct range_iterator
- {
- typedef BOOST_RANGE_DEDUCED_TYPENAME
- mpl::eval_if_c< is_const<C>::value,
- range_const_iterator< typename remove_const<C>::type >,
- range_mutable_iterator<C> >::type type;
- };
-
- template< typename C, typename T >
- struct range_iterator< C, void(T[]) >
- {
- typedef T* type;
- };
- }
-
-#endif
+ namespace range_detail_vc7_1
+ {
+ template< typename C, typename Sig = void(C) >
+ struct range_iterator
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ mpl::eval_if_c< is_const<C>::value,
+ range_const_iterator< typename remove_const<C>::type >,
+ range_mutable_iterator<C> >::type type;
+ };
+
+ template< typename C, typename T >
+ struct range_iterator< C, void(T[]) >
+ {
+ typedef T* type;
+ };
+ }
+
+#endif
 
     template< typename C >
     struct range_iterator
     {
 #if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
-
- typedef BOOST_RANGE_DEDUCED_TYPENAME
- range_detail_vc7_1::range_iterator<C>::type type;
-
-#else
 
- typedef BOOST_RANGE_DEDUCED_TYPENAME
- mpl::eval_if_c< is_const<C>::value,
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ range_detail_vc7_1::range_iterator<C>::type type;
+
+#else
+
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ mpl::eval_if_c< is_const<C>::value,
                             range_const_iterator< typename remove_const<C>::type >,
                             range_mutable_iterator<C> >::type type;
-
-#endif
+
+#endif
     };
-
+
 } // namespace boost
 
 //#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION

Modified: branches/release/boost/range/iterator_range.hpp
==============================================================================
--- branches/release/boost/range/iterator_range.hpp (original)
+++ branches/release/boost/range/iterator_range.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -1,659 +1,16 @@
 // Boost.Range library
 //
-// Copyright Thorsten Ottosen & Pavol Droba 2003-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// Copyright Neil Groves 2009.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 // For more information, see http://www.boost.org/libs/range/
 //
+#ifndef BOOST_RANGE_ITERATOR_RANGE_HPP_INCLUDED
+#define BOOST_RANGE_ITERATOR_RANGE_HPP_INCLUDED
 
-#ifndef BOOST_RANGE_ITERATOR_RANGE_HPP
-#define BOOST_RANGE_ITERATOR_RANGE_HPP
-
-#include <boost/config.hpp> // Define __STL_CONFIG_H, if appropriate.
-#include <boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
- #pragma warning( push )
- #pragma warning( disable : 4996 )
-#endif
-
-// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
-#ifndef BOOST_OLD_IOSTREAMS
-# if defined(__STL_CONFIG_H) && \
- !defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \
- /**/
-# define BOOST_OLD_IOSTREAMS
-# endif
-#endif // #ifndef BOOST_OLD_IOSTREAMS
-
-#include <boost/assert.hpp>
-#include <boost/iterator/iterator_traits.hpp>
-#include <boost/type_traits/is_abstract.hpp>
-#include <boost/range/functions.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/difference_type.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <iterator>
-#include <algorithm>
-#ifndef _STLP_NO_IOSTREAMS
-# ifndef BOOST_OLD_IOSTREAMS
-# include <ostream>
-# else
-# include <ostream.h>
-# endif
-#endif // _STLP_NO_IOSTREAMS
-#include <cstddef>
-
-/*! \file
- Defines the \c iterator_class and related functions.
- \c iterator_range is a simple wrapper of iterator pair idiom. It provides
- a rich subset of Container interface.
-*/
-
-
-namespace boost
-{
- namespace iterator_range_detail
- {
- //
- // The functions adl_begin and adl_end are implemented in a separate
- // class for gcc-2.9x
- //
- template<typename IteratorT>
- struct iterator_range_impl {
- template< class ForwardRange >
- static IteratorT adl_begin( ForwardRange& r )
- {
- return IteratorT( boost::begin( r ) );
- }
-
- template< class ForwardRange >
- static IteratorT adl_end( ForwardRange& r )
- {
- return IteratorT( boost::end( r ) );
- }
- };
-
- template< class Left, class Right >
- inline bool equal( const Left& l, const Right& r )
- {
- typedef BOOST_DEDUCED_TYPENAME boost::range_difference<Left>::type sz_type;
-
- sz_type l_size = boost::distance( l ),
- r_size = boost::distance( r );
-
- if( l_size != r_size )
- return false;
-
- return std::equal( boost::begin(l), boost::end(l),
- boost::begin(r) );
- }
-
- template< class Left, class Right >
- inline bool less_than( const Left& l, const Right& r )
- {
- return std::lexicographical_compare( boost::begin(l),
- boost::end(l),
- boost::begin(r),
- boost::end(r) );
- }
-
- struct range_tag { };
- struct const_range_tag { };
-
- }
-
-// iterator range template class -----------------------------------------//
-
- //! iterator_range class
- /*!
- An \c iterator_range delimits a range in a sequence by beginning and ending iterators.
- An iterator_range can be passed to an algorithm which requires a sequence as an input.
- For example, the \c toupper() function may be used most frequently on strings,
- but can also be used on iterator_ranges:
-
- \code
- boost::tolower( find( s, "UPPERCASE STRING" ) );
- \endcode
-
- Many algorithms working with sequences take a pair of iterators,
- delimiting a working range, as an arguments. The \c iterator_range class is an
- encapsulation of a range identified by a pair of iterators.
- It provides a collection interface,
- so it is possible to pass an instance to an algorithm requiring a collection as an input.
- */
- template<typename IteratorT>
- class iterator_range
- {
- protected: // Used by sub_range
- //! implementation class
- typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
- public:
-
- //! this type
- typedef iterator_range<IteratorT> type;
- //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
-
- //! Encapsulated value type
- typedef BOOST_DEDUCED_TYPENAME
- iterator_value<IteratorT>::type value_type;
-
- //! Difference type
- typedef BOOST_DEDUCED_TYPENAME
- iterator_difference<IteratorT>::type difference_type;
-
- //! Size type
- typedef std::size_t size_type; // note: must be unsigned
-
- //! This type
- typedef iterator_range<IteratorT> this_type;
-
- //! Refence type
- //
- // Needed because value-type is the same for
- // const and non-const iterators
- //
- typedef BOOST_DEDUCED_TYPENAME
- iterator_reference<IteratorT>::type reference;
-
- //! const_iterator type
- /*!
- There is no distinction between const_iterator and iterator.
- These typedefs are provides to fulfill container interface
- */
- typedef IteratorT const_iterator;
- //! iterator type
- typedef IteratorT iterator;
-
- private: // for return value of operator()()
- typedef BOOST_DEDUCED_TYPENAME
- boost::mpl::if_< boost::is_abstract<value_type>,
- reference, value_type >::type abstract_value_type;
-
- public:
- iterator_range() : m_Begin( iterator() ), m_End( iterator() )
- #ifndef NDEBUG
- , singular( true )
- #endif
- { }
-
- //! Constructor from a pair of iterators
- template< class Iterator >
- iterator_range( Iterator Begin, Iterator End ) :
- m_Begin(Begin), m_End(End)
- #ifndef NDEBUG
- , singular(false)
- #endif
- {}
-
- //! Constructor from a Range
- template< class Range >
- iterator_range( const Range& r ) :
- m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
- #ifndef NDEBUG
- , singular(false)
- #endif
- {}
-
- //! Constructor from a Range
- template< class Range >
- iterator_range( Range& r ) :
- m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
- #ifndef NDEBUG
- , singular(false)
- #endif
- {}
-
- //! Constructor from a Range
- template< class Range >
- iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
- m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
- #ifndef NDEBUG
- , singular(false)
- #endif
- {}
-
- //! Constructor from a Range
- template< class Range >
- iterator_range( Range& r, iterator_range_detail::range_tag ) :
- m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
- #ifndef NDEBUG
- , singular(false)
- #endif
- {}
-
- #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- this_type& operator=( const this_type& r )
- {
- m_Begin = r.begin();
- m_End = r.end();
-
- #ifndef NDEBUG
- singular = r.singular;
- #endif
- return *this;
- }
- #endif
-
- template< class Iterator >
- iterator_range& operator=( const iterator_range<Iterator>& r )
- {
- m_Begin = r.begin();
- m_End = r.end();
- #ifndef NDEBUG
- singular = r.is_singular();
- #endif
- return *this;
- }
-
- template< class ForwardRange >
- iterator_range& operator=( ForwardRange& r )
- {
- m_Begin = impl::adl_begin( r );
- m_End = impl::adl_end( r );
- #ifndef NDEBUG
- singular = false;
- #endif
- return *this;
- }
-
- template< class ForwardRange >
- iterator_range& operator=( const ForwardRange& r )
- {
- m_Begin = impl::adl_begin( r );
- m_End = impl::adl_end( r );
- #ifndef NDEBUG
- singular = false;
- #endif
- return *this;
- }
-
- IteratorT begin() const
- {
- BOOST_ASSERT( !is_singular() );
- return m_Begin;
- }
-
- IteratorT end() const
- {
- BOOST_ASSERT( !is_singular() );
- return m_End;
- }
-
- difference_type size() const
- {
- BOOST_ASSERT( !is_singular() );
- return m_End - m_Begin;
- }
-
- bool empty() const
- {
- BOOST_ASSERT( !is_singular() );
- return m_Begin == m_End;
- }
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- operator bool() const
- {
- return !empty();
- }
-#else
- typedef iterator (iterator_range::*unspecified_bool_type) () const;
- operator unspecified_bool_type() const
- {
- return empty() ? 0: &iterator_range::end;
- }
-#endif
-
- bool equal( const iterator_range& r ) const
- {
- BOOST_ASSERT( !is_singular() );
- return m_Begin == r.m_Begin && m_End == r.m_End;
- }
-
-
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
- bool operator==( const iterator_range& r ) const
- {
- BOOST_ASSERT( !is_singular() );
- return iterator_range_detail::equal( *this, r );
- }
-
- bool operator!=( const iterator_range& r ) const
- {
- BOOST_ASSERT( !is_singular() );
- return !operator==(r);
- }
-
- bool operator<( const iterator_range& r ) const
- {
- BOOST_ASSERT( !is_singular() );
- return iterator_range_detail::less_than( *this, r );
- }
-
-#endif
-
- public: // convenience
- reference front() const
- {
- BOOST_ASSERT( !empty() );
- return *m_Begin;
- }
-
- reference back() const
- {
- BOOST_ASSERT( !empty() );
- IteratorT last( m_End );
- return *--last;
- }
-
- reference operator[]( difference_type at ) const
- {
- BOOST_ASSERT( at >= 0 && at < size() );
- return m_Begin[at];
- }
-
- //
- // When storing transform iterators, operator[]()
- // fails because it returns by reference. Therefore
- // operator()() is provided for these cases.
- //
- abstract_value_type operator()( difference_type at ) const
- {
- BOOST_ASSERT( at >= 0 && at < size() );
- return m_Begin[at];
- }
-
- iterator_range& advance_begin( difference_type n )
- {
- BOOST_ASSERT( !is_singular() );
- std::advance( m_Begin, n );
- return *this;
- }
-
- iterator_range& advance_end( difference_type n )
- {
- BOOST_ASSERT( !is_singular() );
- std::advance( m_End, n );
- return *this;
- }
-
- private:
- // begin and end iterators
- IteratorT m_Begin;
- IteratorT m_End;
-
- #ifndef NDEBUG
- bool singular;
- #endif
-
- public:
- bool is_singular() const
- {
- #ifndef NDEBUG
- return singular;
- #else
- return false;
- #endif
- }
-
- protected:
- //
- // Allow subclasses an easy way to access the
- // base type
- //
- typedef iterator_range iterator_range_;
- };
-
-// iterator range free-standing operators ---------------------------//
-
-#ifndef _STLP_NO_IOSTREAMS
-# ifndef BOOST_OLD_IOSTREAMS
-
- //! iterator_range output operator
- /*!
- Output the range to an ostream. Elements are outputed
- in a sequence without separators.
- */
- template< typename IteratorT, typename Elem, typename Traits >
- inline std::basic_ostream<Elem,Traits>& operator<<(
- std::basic_ostream<Elem, Traits>& Os,
- const iterator_range<IteratorT>& r )
- {
- std::copy( r.begin(), r.end(),
- std::ostream_iterator< BOOST_DEDUCED_TYPENAME
- iterator_value<IteratorT>::type,
- Elem, Traits>(Os) );
- return Os;
- }
-
-# else
-
- //! iterator_range output operator
- /*!
- Output the range to an ostream. Elements are outputed
- in a sequence without separators.
- */
- template< typename IteratorT >
- inline std::ostream& operator<<(
- std::ostream& Os,
- const iterator_range<IteratorT>& r )
- {
- std::copy( r.begin(), r.end(), std::ostream_iterator<char>(Os));
- return Os;
- }
-
-# endif
-#endif // _STLP_NO_IOSTREAMS
-
- /////////////////////////////////////////////////////////////////////
- // comparison operators
- /////////////////////////////////////////////////////////////////////
-
- template< class IteratorT, class ForwardRange >
- inline bool operator==( const ForwardRange& l,
- const iterator_range<IteratorT>& r )
- {
- return iterator_range_detail::equal( l, r );
- }
-
- template< class IteratorT, class ForwardRange >
- inline bool operator!=( const ForwardRange& l,
- const iterator_range<IteratorT>& r )
- {
- return !iterator_range_detail::equal( l, r );
- }
-
- template< class IteratorT, class ForwardRange >
- inline bool operator<( const ForwardRange& l,
- const iterator_range<IteratorT>& r )
- {
- return iterator_range_detail::less_than( l, r );
- }
-
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-#else
- template< class Iterator1T, class Iterator2T >
- inline bool operator==( const iterator_range<Iterator1T>& l,
- const iterator_range<Iterator2T>& r )
- {
- return iterator_range_detail::equal( l, r );
- }
-
- template< class IteratorT, class ForwardRange >
- inline bool operator==( const iterator_range<IteratorT>& l,
- const ForwardRange& r )
- {
- return iterator_range_detail::equal( l, r );
- }
-
-
- template< class Iterator1T, class Iterator2T >
- inline bool operator!=( const iterator_range<Iterator1T>& l,
- const iterator_range<Iterator2T>& r )
- {
- return !iterator_range_detail::equal( l, r );
- }
-
- template< class IteratorT, class ForwardRange >
- inline bool operator!=( const iterator_range<IteratorT>& l,
- const ForwardRange& r )
- {
- return !iterator_range_detail::equal( l, r );
- }
-
-
- template< class Iterator1T, class Iterator2T >
- inline bool operator<( const iterator_range<Iterator1T>& l,
- const iterator_range<Iterator2T>& r )
- {
- return iterator_range_detail::less_than( l, r );
- }
-
- template< class IteratorT, class ForwardRange >
- inline bool operator<( const iterator_range<IteratorT>& l,
- const ForwardRange& r )
- {
- return iterator_range_detail::less_than( l, r );
- }
-
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-// iterator range utilities -----------------------------------------//
-
- //! iterator_range construct helper
- /*!
- Construct an \c iterator_range from a pair of iterators
-
- \param Begin A begin iterator
- \param End An end iterator
- \return iterator_range object
- */
- template< typename IteratorT >
- inline iterator_range< IteratorT >
- make_iterator_range( IteratorT Begin, IteratorT End )
- {
- return iterator_range<IteratorT>( Begin, End );
- }
-
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
- template< typename Range >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_iterator_range( Range& r )
- {
- return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- ( boost::begin( r ), boost::end( r ) );
- }
-
-#else
- //! iterator_range construct helper
- /*!
- Construct an \c iterator_range from a \c Range containing the begin
- and end iterators.
- */
- template< class ForwardRange >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
- make_iterator_range( ForwardRange& r )
- {
- return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
- ( r, iterator_range_detail::range_tag() );
- }
-
- template< class ForwardRange >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
- make_iterator_range( const ForwardRange& r )
- {
- return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
- ( r, iterator_range_detail::const_range_tag() );
- }
-
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
- namespace iterator_range_detail
- {
- template< class Range >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_range_impl( Range& r,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
- {
- //
- // Not worth the effort
- //
- //if( advance_begin == 0 && advance_end == 0 )
- // return make_iterator_range( r );
- //
-
- BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
- new_begin = boost::begin( r ),
- new_end = boost::end( r );
- std::advance( new_begin, advance_begin );
- std::advance( new_end, advance_end );
- return make_iterator_range( new_begin, new_end );
- }
- }
-
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
- template< class Range >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_iterator_range( Range& r,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
- {
- //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
- return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
- }
-
-#else
-
- template< class Range >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_iterator_range( Range& r,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
- {
- //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
- return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
- }
-
- template< class Range >
- inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type >
- make_iterator_range( const Range& r,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
- {
- //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
- return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
- }
-
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
- //! copy a range into a sequence
- /*!
- Construct a new sequence of the specified type from the elements
- in the given range
-
- \param Range An input range
- \return New sequence
- */
- template< typename SeqT, typename Range >
- inline SeqT copy_range( const Range& r )
- {
- return SeqT( boost::begin( r ), boost::end( r ) );
- }
-
-} // namespace 'boost'
-
-#undef BOOST_OLD_IOSTREAMS
-
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
- #pragma warning( pop )
-#endif
-
-#endif
+#include "boost/range/iterator_range_core.hpp"
+#include "boost/range/iterator_range_io.hpp"
 
+#endif // include guard

Copied: branches/release/boost/range/iterator_range_core.hpp (from r60898, /trunk/boost/range/iterator_range_core.hpp)
==============================================================================
--- /trunk/boost/range/iterator_range_core.hpp (original)
+++ branches/release/boost/range/iterator_range_core.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -19,8 +19,10 @@
 #endif
 
 #include <boost/assert.hpp>
-#include <boost/iterator/iterator_traits.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/iterator/iterator_facade.hpp>
 #include <boost/type_traits/is_abstract.hpp>
+#include <boost/type_traits/is_pointer.hpp>
 #include <boost/range/functions.hpp>
 #include <boost/range/iterator.hpp>
 #include <boost/range/difference_type.hpp>
@@ -31,13 +33,13 @@
 #include <cstddef>
 
 /*! \file
- Defines the \c iterator_class and related functions.
+ Defines the \c iterator_class and related functions.
     \c iterator_range is a simple wrapper of iterator pair idiom. It provides
     a rich subset of Container interface.
 */
 
 
-namespace boost
+namespace boost
 {
     namespace iterator_range_detail
     {
@@ -45,14 +47,14 @@
         // The functions adl_begin and adl_end are implemented in a separate
         // class for gcc-2.9x
         //
- template<typename IteratorT>
+ template<class IteratorT>
         struct iterator_range_impl {
             template< class ForwardRange >
             static IteratorT adl_begin( ForwardRange& r )
             {
                 return IteratorT( boost::begin( r ) );
             }
-
+
             template< class ForwardRange >
             static IteratorT adl_end( ForwardRange& r )
             {
@@ -62,11 +64,11 @@
 
         template< class Left, class Right >
         inline bool less_than( const Left& l, const Right& r )
- {
- return std::lexicographical_compare( boost::begin(l),
- boost::end(l),
- boost::begin(r),
- boost::end(r) );
+ {
+ return std::lexicographical_compare( boost::begin(l),
+ boost::end(l),
+ boost::begin(r),
+ boost::end(r) );
         }
 
         // This version is maintained since it is used in other boost libraries
@@ -76,7 +78,7 @@
         {
             return boost::equal(l, r);
         }
-
+
         struct range_tag { };
         struct const_range_tag { };
 
@@ -86,22 +88,22 @@
 
         //! iterator_range class
         /*!
- An \c iterator_range delimits a range in a sequence by beginning and ending iterators.
- An iterator_range can be passed to an algorithm which requires a sequence as an input.
- For example, the \c toupper() function may be used most frequently on strings,
- but can also be used on iterator_ranges:
-
+ An \c iterator_range delimits a range in a sequence by beginning and ending iterators.
+ An iterator_range can be passed to an algorithm which requires a sequence as an input.
+ For example, the \c toupper() function may be used most frequently on strings,
+ but can also be used on iterator_ranges:
+
             \code
                 boost::tolower( find( s, "UPPERCASE STRING" ) );
             \endcode
 
- Many algorithms working with sequences take a pair of iterators,
- delimiting a working range, as an arguments. The \c iterator_range class is an
- encapsulation of a range identified by a pair of iterators.
- It provides a collection interface,
- so it is possible to pass an instance to an algorithm requiring a collection as an input.
+ Many algorithms working with sequences take a pair of iterators,
+ delimiting a working range, as an arguments. The \c iterator_range class is an
+ encapsulation of a range identified by a pair of iterators.
+ It provides a collection interface,
+ so it is possible to pass an instance to an algorithm requiring a collection as an input.
         */
- template<typename IteratorT>
+ template<class IteratorT>
         class iterator_range
         {
         protected: // Used by sub_range
@@ -112,15 +114,15 @@
             //! this type
             typedef iterator_range<IteratorT> type;
             //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
-
+
             //! Encapsulated value type
- typedef BOOST_DEDUCED_TYPENAME
+ typedef BOOST_DEDUCED_TYPENAME
                 iterator_value<IteratorT>::type value_type;
 
             //! Difference type
- typedef BOOST_DEDUCED_TYPENAME
+ typedef BOOST_DEDUCED_TYPENAME
                 iterator_difference<IteratorT>::type difference_type;
-
+
             //! Size type
             typedef std::size_t size_type; // note: must be unsigned
 
@@ -129,81 +131,81 @@
 
             //! Reference type
             //
- // Needed because value-type is the same for
+ // Needed because value-type is the same for
             // const and non-const iterators
             //
             typedef BOOST_DEDUCED_TYPENAME
                 iterator_reference<IteratorT>::type reference;
-
+
             //! const_iterator type
- /*!
+ /*!
                 There is no distinction between const_iterator and iterator.
                 These typedefs are provides to fulfill container interface
- */
+ */
             typedef IteratorT const_iterator;
             //! iterator type
             typedef IteratorT iterator;
 
         private: // for return value of operator()()
- typedef BOOST_DEDUCED_TYPENAME
+ typedef BOOST_DEDUCED_TYPENAME
                 boost::mpl::if_< boost::is_abstract<value_type>,
                                  reference, value_type >::type abstract_value_type;
 
         public:
             iterator_range() : m_Begin( iterator() ), m_End( iterator() )
             { }
-
+
             //! Constructor from a pair of iterators
             template< class Iterator >
- iterator_range( Iterator Begin, Iterator End ) :
+ iterator_range( Iterator Begin, Iterator End ) :
                 m_Begin(Begin), m_End(End)
             {}
 
             //! Constructor from a Range
             template< class Range >
- iterator_range( const Range& r ) :
+ iterator_range( const Range& r ) :
                 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
             {}
-
+
             //! Constructor from a Range
             template< class Range >
- iterator_range( Range& r ) :
+ iterator_range( Range& r ) :
                 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
             {}
 
             //! Constructor from a Range
             template< class Range >
- iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
+ iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
                 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
             {}
 
             //! Constructor from a Range
             template< class Range >
- iterator_range( Range& r, iterator_range_detail::range_tag ) :
+ iterator_range( Range& r, iterator_range_detail::range_tag ) :
                 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
             {}
 
             #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- this_type& operator=( const this_type& r )
+ this_type& operator=( const this_type& r )
             {
- m_Begin = r.begin();
+ m_Begin = r.begin();
                 m_End = r.end();
                 return *this;
             }
             #endif
-
+
             template< class Iterator >
- iterator_range& operator=( const iterator_range<Iterator>& r )
+ iterator_range& operator=( const iterator_range<Iterator>& r )
             {
- m_Begin = r.begin();
+ m_Begin = r.begin();
                 m_End = r.end();
                 return *this;
             }
-
+
             template< class ForwardRange >
             iterator_range& operator=( ForwardRange& r )
             {
- m_Begin = impl::adl_begin( r );
+ m_Begin = impl::adl_begin( r );
                 m_End = impl::adl_end( r );
                 return *this;
             }
@@ -211,37 +213,37 @@
             template< class ForwardRange >
             iterator_range& operator=( const ForwardRange& r )
             {
- m_Begin = impl::adl_begin( r );
+ m_Begin = impl::adl_begin( r );
                 m_End = impl::adl_end( r );
                 return *this;
             }
 
- IteratorT begin() const
- {
- return m_Begin;
+ IteratorT begin() const
+ {
+ return m_Begin;
             }
 
- IteratorT end() const
- {
- return m_End;
- }
+ IteratorT end() const
+ {
+ return m_End;
+ }
 
             difference_type size() const
- {
+ {
                 return m_End - m_Begin;
             }
-
+
             bool empty() const
             {
                 return m_Begin == m_End;
             }
 
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
             operator bool() const
             {
                 return !empty();
- }
-#else
+ }
+#else
             typedef iterator (iterator_range::*unspecified_bool_type) () const;
             operator unspecified_bool_type() const
             {
@@ -272,7 +274,7 @@
                return iterator_range_detail::less_than( *this, r );
            }
 
-#endif
+#endif
 
         public: // convenience
            reference front() const
@@ -280,29 +282,41 @@
                BOOST_ASSERT( !empty() );
                return *m_Begin;
            }
-
+
            reference back() const
            {
                BOOST_ASSERT( !empty() );
                IteratorT last( m_End );
                return *--last;
            }
-
+
+
+#ifdef __SUNPRO_CC
            reference operator[]( difference_type at ) const
            {
                BOOST_ASSERT( at >= 0 && at < size() );
                return m_Begin[at];
            }
+#else
+ BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result<iterator, value_type, reference>::type
+ operator[]( difference_type at ) const
+ {
+ BOOST_ASSERT( at >= 0 && at < size() );
+
+ typedef boost::detail::use_operator_brackets_proxy<value_type,reference> use_proxy;
+ return boost::detail::make_operator_brackets_result<iterator>(m_Begin + at, use_proxy());
+ }
+#endif
 
            //
            // When storing transform iterators, operator[]()
            // fails because it returns by reference. Therefore
            // operator()() is provided for these cases.
- //
- abstract_value_type operator()( difference_type at ) const
+ //
+ abstract_value_type operator()( difference_type at ) const
            {
                BOOST_ASSERT( at >= 0 && at < size() );
- return m_Begin[at];
+ return m_Begin[at];
            }
 
            iterator_range& advance_begin( difference_type n )
@@ -310,13 +324,13 @@
                std::advance( m_Begin, n );
                return *this;
            }
-
+
            iterator_range& advance_end( difference_type n )
            {
                std::advance( m_End, n );
                return *this;
            }
-
+
         private:
             // begin and end iterators
             IteratorT m_Begin;
@@ -337,21 +351,21 @@
         /////////////////////////////////////////////////////////////////////
 
         template< class IteratorT, class ForwardRange >
- inline bool operator==( const ForwardRange& l,
+ inline bool operator==( const ForwardRange& l,
                                 const iterator_range<IteratorT>& r )
         {
             return boost::equal( l, r );
         }
 
         template< class IteratorT, class ForwardRange >
- inline bool operator!=( const ForwardRange& l,
+ inline bool operator!=( const ForwardRange& l,
                                 const iterator_range<IteratorT>& r )
         {
             return !boost::equal( l, r );
         }
 
         template< class IteratorT, class ForwardRange >
- inline bool operator<( const ForwardRange& l,
+ inline bool operator<( const ForwardRange& l,
                                const iterator_range<IteratorT>& r )
         {
             return iterator_range_detail::less_than( l, r );
@@ -360,14 +374,14 @@
 #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 #else
         template< class Iterator1T, class Iterator2T >
- inline bool operator==( const iterator_range<Iterator1T>& l,
+ inline bool operator==( const iterator_range<Iterator1T>& l,
                                 const iterator_range<Iterator2T>& r )
         {
             return boost::equal( l, r );
         }
 
         template< class IteratorT, class ForwardRange >
- inline bool operator==( const iterator_range<IteratorT>& l,
+ inline bool operator==( const iterator_range<IteratorT>& l,
                                 const ForwardRange& r )
         {
             return boost::equal( l, r );
@@ -375,39 +389,39 @@
 
 
         template< class Iterator1T, class Iterator2T >
- inline bool operator!=( const iterator_range<Iterator1T>& l,
+ inline bool operator!=( const iterator_range<Iterator1T>& l,
                                 const iterator_range<Iterator2T>& r )
         {
             return !boost::equal( l, r );
         }
-
+
         template< class IteratorT, class ForwardRange >
- inline bool operator!=( const iterator_range<IteratorT>& l,
+ inline bool operator!=( const iterator_range<IteratorT>& l,
                                 const ForwardRange& r )
         {
             return !boost::equal( l, r );
         }
 
-
+
         template< class Iterator1T, class Iterator2T >
- inline bool operator<( const iterator_range<Iterator1T>& l,
+ inline bool operator<( const iterator_range<Iterator1T>& l,
                                const iterator_range<Iterator2T>& r )
         {
             return iterator_range_detail::less_than( l, r );
         }
 
         template< class IteratorT, class ForwardRange >
- inline bool operator<( const iterator_range<IteratorT>& l,
+ inline bool operator<( const iterator_range<IteratorT>& l,
                                const ForwardRange& r )
- {
+ {
             return iterator_range_detail::less_than( l, r );
         }
 
 #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
+
 // iterator range utilities -----------------------------------------//
 
- //! iterator_range construct helper
+ //! iterator_range construct helper
         /*!
             Construct an \c iterator_range from a pair of iterators
 
@@ -416,22 +430,22 @@
             \return iterator_range object
         */
         template< typename IteratorT >
- inline iterator_range< IteratorT >
- make_iterator_range( IteratorT Begin, IteratorT End )
- {
+ inline iterator_range< IteratorT >
+ make_iterator_range( IteratorT Begin, IteratorT End )
+ {
             return iterator_range<IteratorT>( Begin, End );
         }
-
+
 #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 
         template< typename Range >
         inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_iterator_range( Range& r )
- {
+ make_iterator_range( Range& r )
+ {
             return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
                 ( boost::begin( r ), boost::end( r ) );
         }
-
+
 #else
         //! iterator_range construct helper
         /*!
@@ -440,16 +454,16 @@
         */
         template< class ForwardRange >
         inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
- make_iterator_range( ForwardRange& r )
- {
+ make_iterator_range( ForwardRange& r )
+ {
            return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
                 ( r, iterator_range_detail::range_tag() );
         }
 
         template< class ForwardRange >
         inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
- make_iterator_range( const ForwardRange& r )
- {
+ make_iterator_range( const ForwardRange& r )
+ {
            return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
                 ( r, iterator_range_detail::const_range_tag() );
         }
@@ -457,10 +471,10 @@
 #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 
         namespace iterator_range_detail
- {
+ {
             template< class Range >
             inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_range_impl( Range& r,
+ make_range_impl( Range& r,
                              BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
                              BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
             {
@@ -471,7 +485,7 @@
                 // return make_iterator_range( r );
                 //
 
- BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
+ BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
                     new_begin = boost::begin( r ),
                     new_end = boost::end( r );
                 std::advance( new_begin, advance_begin );
@@ -479,12 +493,12 @@
                 return make_iterator_range( new_begin, new_end );
             }
         }
-
+
 #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 
         template< class Range >
         inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_iterator_range( Range& r,
+ make_iterator_range( Range& r,
                     BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
                     BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
         {
@@ -496,7 +510,7 @@
 
         template< class Range >
         inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
- make_iterator_range( Range& r,
+ make_iterator_range( Range& r,
                     BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
                     BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
         {
@@ -506,7 +520,7 @@
 
         template< class Range >
         inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type >
- make_iterator_range( const Range& r,
+ make_iterator_range( const Range& r,
                     BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
                     BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
         {
@@ -532,7 +546,7 @@
 
 } // namespace 'boost'
 
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
     #pragma warning( pop )
 #endif
 

Copied: branches/release/boost/range/join.hpp (from r60898, /trunk/boost/range/join.hpp)
==============================================================================
--- /trunk/boost/range/join.hpp (original)
+++ branches/release/boost/range/join.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,8 +28,8 @@
>
 join(const SinglePassRange1& r1, const SinglePassRange2& r2)
 {
- BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
- BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
 
         typedef range_detail::join_iterator<
                                 BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange1>::type,
@@ -50,8 +50,8 @@
>
 join(SinglePassRange1& r1, SinglePassRange2& r2)
 {
- BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
- BOOST_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<SinglePassRange2> ));
 
         typedef range_detail::join_iterator<
                 BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange1>::type,

Modified: branches/release/boost/range/mutable_iterator.hpp
==============================================================================
--- branches/release/boost/range/mutable_iterator.hpp (original)
+++ branches/release/boost/range/mutable_iterator.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -21,6 +21,7 @@
 #include <boost/range/detail/iterator.hpp>
 #else
 
+#include <boost/range/detail/extract_optional_type.hpp>
 #include <boost/iterator/iterator_traits.hpp>
 #include <cstddef>
 #include <utility>
@@ -31,11 +32,13 @@
     // default
     //////////////////////////////////////////////////////////////////////////
     
+ namespace range_detail {
+ BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( iterator )
+ }
+
     template< typename C >
- struct range_mutable_iterator
- {
- typedef BOOST_DEDUCED_TYPENAME C::iterator type;
- };
+ struct range_mutable_iterator : range_detail::extract_iterator<C>
+ {};
     
     //////////////////////////////////////////////////////////////////////////
     // pair

Modified: branches/release/boost/range/size.hpp
==============================================================================
--- branches/release/boost/range/size.hpp (original)
+++ branches/release/boost/range/size.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -20,7 +20,7 @@
 #include <boost/range/difference_type.hpp>
 #include <boost/assert.hpp>
 
-namespace boost
+namespace boost
 {
 
     template< class T >

Modified: branches/release/boost/range/sub_range.hpp
==============================================================================
--- branches/release/boost/range/sub_range.hpp (original)
+++ branches/release/boost/range/sub_range.hpp 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -1,5 +1,6 @@
 // Boost.Range library
 //
+// Copyright Neil Groves 2009.
 // Copyright Thorsten Ottosen 2003-2004. Use, modification and
 // distribution is subject to the Boost Software License, Version
 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,7 +12,7 @@
 #ifndef BOOST_RANGE_SUB_RANGE_HPP
 #define BOOST_RANGE_SUB_RANGE_HPP
 
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
     #pragma warning( push )
     #pragma warning( disable : 4996 )
 #endif
@@ -22,15 +23,16 @@
 #include <boost/range/value_type.hpp>
 #include <boost/range/size_type.hpp>
 #include <boost/range/difference_type.hpp>
+#include <boost/range/algorithm/equal.hpp>
 #include <boost/assert.hpp>
 #include <boost/type_traits/is_reference.hpp>
 #include <boost/type_traits/remove_reference.hpp>
 
 namespace boost
 {
-
- template< class ForwardRange >
- class sub_range : public iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
+
+ template< class ForwardRange >
+ class sub_range : public iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
     {
         typedef BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type iterator_t;
         typedef iterator_range< iterator_t > base;
@@ -51,40 +53,40 @@
                                  reference >::type const_reference;
 
     public:
- sub_range() : base()
+ sub_range() : base()
+ { }
+
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500) )
+ sub_range( const sub_range& r )
+ : base( static_cast<const base&>( r ) )
         { }
-
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500) )
- sub_range( const sub_range& r )
- : base( static_cast<const base&>( r ) )
- { }
 #endif
 
         template< class ForwardRange2 >
- sub_range( ForwardRange2& r ) :
-
+ sub_range( ForwardRange2& r ) :
+
 #if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 800 )
             base( impl::adl_begin( r ), impl::adl_end( r ) )
 #else
             base( r )
-#endif
+#endif
         { }
-
+
         template< class ForwardRange2 >
- sub_range( const ForwardRange2& r ) :
+ sub_range( const ForwardRange2& r ) :
 
 #if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 800 )
             base( impl::adl_begin( r ), impl::adl_end( r ) )
 #else
             base( r )
-#endif
+#endif
         { }
 
         template< class Iter >
         sub_range( Iter first, Iter last ) :
             base( first, last )
         { }
-
+
         template< class ForwardRange2 >
         sub_range& operator=( ForwardRange2& r )
         {
@@ -97,23 +99,23 @@
         {
             base::operator=( r );
             return *this;
- }
+ }
 
         sub_range& operator=( const sub_range& r )
         {
             base::operator=( static_cast<const base&>(r) );
- return *this;
+ return *this;
         }
-
+
     public:
-
+
         iterator begin() { return base::begin(); }
         const_iterator begin() const { return base::begin(); }
         iterator end() { return base::end(); }
         const_iterator end() const { return base::end(); }
- difference_type size() const { return base::size(); }
+ difference_type size() const { return base::size(); }
+
 
-
     public: // convenience
         reference front()
         {
@@ -151,14 +153,14 @@
     inline bool operator==( const sub_range<ForwardRange>& l,
                             const sub_range<ForwardRange2>& r )
     {
- return iterator_range_detail::equal( l, r );
+ return boost::equal( l, r );
     }
 
     template< class ForwardRange, class ForwardRange2 >
     inline bool operator!=( const sub_range<ForwardRange>& l,
                             const sub_range<ForwardRange2>& r )
     {
- return !iterator_range_detail::equal( l, r );
+ return !boost::equal( l, r );
     }
 
     template< class ForwardRange, class ForwardRange2 >
@@ -171,7 +173,7 @@
 
 } // namespace 'boost'
 
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
     #pragma warning( pop )
 #endif
 

Modified: branches/release/libs/range/doc/Jamfile.v2
==============================================================================
--- branches/release/libs/range/doc/Jamfile.v2 (original)
+++ branches/release/libs/range/doc/Jamfile.v2 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -9,25 +9,36 @@
 #//
 
 
-use-project boost : $(BOOST_ROOT) ;
-
+#use-project boost : $(BOOST_ROOT) ;
 
+project boost/libs/range/doc ;
 import boostbook : boostbook ;
-import quickbook ;
+#import quickbook ;
+using quickbook ;
+
+path-constant images_location : html ;
+
+#xml boost_range : boost_range.qbk ;
 
-xml boost_range : boost_range.qbk ;
+#boostbook standalone
 
-boostbook standalone
+boostbook quickbook
   :
- boost_range
+ boost_range.qbk
   :
- <xsl:param>toc.max.depth=2
- <xsl:param>toc.section.depth=4
- <xsl:param>chunk.section.depth=2
+ <xsl:param>boost.root=../../../..
+ <xsl:param>boost.libraries=../../../libraries.htm
+ <xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
+ <xsl:param>chunk.section.depth=4
+ <xsl:param>chunk.first.sections=1
+ <xsl:param>toc.section.depth=3
+ <xsl:param>toc.max.depth=3
+ <xsl:param>generate.section.toc.level=4
  
 # <xsl:param>generate.section.toc.level=4
 # <xsl:param>chunk.first.sections=7
 # <xsl:param>toc.section.depth=10
      <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
+ <format>pdf:<xsl:param>img.src.path=$(images_location)/
   ;
 

Modified: branches/release/libs/range/doc/boost_range.qbk
==============================================================================
--- branches/release/libs/range/doc/boost_range.qbk (original)
+++ branches/release/libs/range/doc/boost_range.qbk 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -1,7 +1,16 @@
-[article Boost.Range Documentation
- [quickbook 1.3]
- [id boost.range]
- [copyright 2003-2007 Thorsten Ottosen]
+[/==============================================================================
+ Copyright (C) 2003-2010 Thorsten Ottosen, Neil Groves
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+==============================================================================/]
+[library Range
+ [quickbook 1.5]
+ [version 2.0]
+ [authors [Ottosen, Thorsten], [Groves, Neil]]
+ [copyright 2003-2010 Thorsten Ottosen, Neil Groves]
+ [purpose Half-open range library]
     [license
         Distributed under the Boost Software License, Version 1.0.
         (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,19 +20,49 @@
 
 [/ Converted to Quickbook format by Darren Garvey, 2007]
 
-[def __ranges__ [link boost.range.concepts Ranges]]
-[def __range_concepts__ [link boost.range.concepts Range concepts]]
-[def __forward_range__ [link boost.range.concepts.forward_range Forward Range]]
-[def __single_pass_range__ [link boost.range.concepts.single_pass_range Single Pass Range]]
-[def __bidirectional_range__ [link boost.range.concepts.bidirectional_range Bidirectional Range]]
-[def __random_access_range__ [link boost.range.concepts.random_access_range Random Access Range]]
+[def __note__ [$images/note.png]]
+[def __alert__ [$images/alert.png]]
+[def __tip__ [$images/tip.png]]
+[def __caution__ [$images/caution.png]]
+
+[def __boost_range_home__ [link range Boost.Range]]
+[def __ranges__ [link range.concepts Ranges]]
+[def __range_concepts__ [link range.concepts Range concepts]]
+[def __forward_range__ [link range.concepts.forward_range Forward Range]]
+[def __single_pass_range__ [link range.concepts.single_pass_range Single Pass Range]]
+[def __bidirectional_range__ [link range.concepts.bidirectional_range Bidirectional Range]]
+[def __random_access_range__ [link range.concepts.random_access_range Random Access Range]]
+
+[def __iterator_range__ [link range.utilities.iterator_range `iterator_range`]]
+[def __sub_range__ [link range.utilities.sub_range `sub_range`]]
+[def __minimal_interface__ [link range.reference.extending minimal interface]]
+[def __range_result_iterator__ [link range.reference.semantics.metafunctions `range_result_iterator`]]
+[def __extending_for_udts__ [link range.reference.extending Extending the library for UDTs]]
+[def __implementation_of_metafunctions__ [link range.reference.semantics.metafunctions Implementation of metafunctions]]
+[def __implementation_of_functions__ [link range.reference.semantics.functions Implementation of functions]]
+
+[def __range_value__ [link range.reference.semantics.metafunctions `range_value`]]
+[def __range_iterator__ [link range.reference.semantics.metafunctions `range_iterator`]]
+[def __range_difference__ [link range.reference.semantics.metafunctions `range_difference`]]
+[def __range_pointer__ [link range.reference.semantics.metafunctions `range_pointer`]]
+[def __range_category__ [link range.reference.semantics.metafunctions `range_category`]]
+[def __range_reverse_iterator__ [link range.reference.semantics.metafunctions `range_reverse_iterator`]]
+[def __begin__ [link range.reference.semantics.functions `begin`]]
+[def __const_begin__ [link range.reference.semantics.functions `const_begin`]]
+[def __end__ [link range.reference.semantics.functions `end`]]
+[def __const_end__ [link range.reference.semantics.functions `const_end`]]
+[def __empty__ [link range.reference.semantics.functions `empty`]]
+[def __distance__ [link range.reference.semantics.functions `distance`]]
+[def __size__ [link range.reference.semantics.functions `size`]]
+[def __rbegin__ [link range.reference.semantics.functions `rbegin`]]
+[def __const_rbegin__ [link range.reference.semantics.functions `const_rbegin`]]
+[def __rend__ [link range.reference.semantics.functions `rend`]]
+[def __const_rend__ [link range.reference.semantics.functions `const_rend`]]
+[def __as_array__ [link range.reference.semantics.functions `as_array`]]
+[def __as_literal__ [link range.reference.semantics.functions `as_literal`]]
 
-[def __iterator_range__ [link boost.range.utilities.iterator_range `iterator_range`]]
-[def __sub_range__ [link boost.range.utilities.sub_range `sub_range`]]
-[def __minimal_interface__ [link boost.range.reference.extending minimal interface]]
-[def __range_result_iterator__ [link boost.range.reference.semantics.metafunctions `range_result_iterator`]]
-[def __implementation_of_metafunctions__ [link boost.range.reference.semantics.metafunctions implementation of metafunctions]]
-[def __implementation_of_functions__ [link boost.range.reference.semantics.functions implementation of functions]]
+[def __range_adaptors__ [link range.reference.adaptors Range adaptors]]
+[def __range_algorithms__ [link range.reference.algorithms Range algorithms]]
 
 [def __single_pass_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#singls-pass-iterators-lib-single-pass-iterators Single Pass Iterator]]
 [def __forward_traversal_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators Forward Traversal Iterator]]
@@ -38,1197 +77,20 @@
 [def __boost_array__ [@../../libs/array/index.html boost::array]]
 [def __the_forwarding_problem__ [@http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]]
 
+[def __sgi_inner_product__ [@http://www.sgi.com/tech/stl/inner_product.html inner_product]]
+[def __sgi_partial_sum__ [@http://www.sgi.com/tech/stl/partial_sum.html partial_sum]]
 
 Boost.Range is a collection of concepts and utilities that are particularly useful for specifying and implementing generic algorithms.
+[include introduction.qbk]
+[include concepts.qbk]
+[include reference.qbk]
+[include utilities.qbk]
+[include style.qbk]
+[include headers.qbk]
+[include examples.qbk]
+[include mfc_atl.qbk]
+[include upgrade.qbk]
+[include portability.qbk]
+[include faq.qbk]
+[include history_ack.qbk]
 
-
-[section Introduction]
-
-Generic algorithms have so far been specified in terms of two or more iterators. Two iterators would together form a range of values that the algorithm could work on. This leads to a very general interface, but also to a somewhat clumsy use of the algorithms with redundant specification of container names. Therefore we would like to raise the abstraction level for algorithms so they specify their interface in terms of __ranges__ as much as possible.
-
-The most common form of ranges we are used to work with is standard library containers. However, one often finds it desirable to extend that code to work with other types that offer enough functionality to satisfy the needs of the generic code if a suitable layer of indirection is applied . For example, raw arrays are often suitable for use with generic code that works with containers, provided a suitable adapter is used. Likewise, null terminated strings can be treated as containers of characters, if suitably adapted.
-
-This library therefore provides the means to adapt standard-like containers, null terminated strings, `std::pairs` of iterators, and raw arrays (and more), such that the same generic code can work with them all. The basic idea is to add another layer of indirection using __metafunctions__ and free-standing functions so syntactic and/or semantic differences can be removed.
-
-The main advantages are
-
-* simpler implementation and specification of generic range algorithms
-* more flexible, compact and maintainable client code
-* correct handling of null-terminated strings
-
-[:[*Warning: support for null-terminated strings is deprecated and will disappear in the next Boost release (1.34).]]
-
-* safe use of built-in arrays (for legacy code; why else would you use built-in arrays?)
-
-Below are given a small example (the complete example can be found [@http://www.boost.org/libs/range/test/algorithm_example.cpp here] ):
-
-``
- //
- // example: extracting bounds in a generic algorithm
- //
- template< class ForwardReadableRange, class T >
- inline typename boost::range_iterator< ForwardReadableRange >::type
- find( ForwardReadableRange& c, const T& value )
- {
- return std::find( boost::begin( c ), boost::end( c ), value );
- }
-
- template< class ForwardReadableRange, class T >
- inline typename boost::range_const_iterator< ForwardReadableRange >::type
- find( const ForwardReadableRange& c, const T& value )
- {
- return std::find( boost::begin( c ), boost::end( c ), value );
- }
-
- //
- // replace first value and return its index
- //
- template< class ForwardReadableWriteableRange, class T >
- inline typename boost::range_size< ForwardReadableWriteableRange >::type
- my_generic_replace( ForwardReadableWriteableRange& c, const T& value, const T& replacement )
- {
- typename boost::range_iterator< ForwardReadableWriteableRange >::type found = find( c, value );
-
- if( found != boost::end( c ) )
- *found = replacement;
- return std::distance( boost::begin( c ), found );
- }
-
- //
- // usage
- //
- const int N = 5;
- std::vector<int> my_vector;
- int values[] = { 1,2,3,4,5,6,7,8,9 };
-
- my_vector.assign( values, boost::end( values ) );
- typedef std::vector<int>::iterator iterator;
- std::pair<iterator,iterator> my_view( boost::begin( my_vector ),
- boost::begin( my_vector ) + N );
- char str_val[] = "a string";
- char* str = str_val;
-
- std::cout << my_generic_replace( my_vector, 4, 2 );
- std::cout << my_generic_replace( my_view, 4, 2 );
- std::cout << my_generic_replace( str, 'a', 'b' );
-
- // prints '3', '5' and '0'
-``
-
-By using the free-standing functions and __metafunctions__, the code automatically works for all the types supported by this library; now and in the future. Notice that we have to provide two version of `find()` since we cannot forward a non-const rvalue with reference arguments (see this article about __the_forwarding_problem__ ).
-
-[endsect]
-
-
-
-[section:concepts Range Concepts]
-
-[section Overview]
-
-A Range is a ['concept] similar to the STL [@http://www.sgi.com/Technology/STL/Container.html Container] concept. A Range provides iterators for accessing a half-open range `[first,one_past_last)` of elements and provides information about the number of elements in the Range. However, a Range has fewer requirements than a Container.
-
-The motivation for the Range concept is that there are many useful Container-like types that do not meet the full requirements of Container, and many algorithms that can be written with this reduced set of requirements. In particular, a Range does not necessarily
-
-* own the elements that can be accessed through it,
-* have copy semantics,
-
-Because of the second requirement, a Range object must be passed by (const or non-const) reference in generic code.
-
-The operations that can be performed on a Range is dependent on the [@../../iterator/doc/new-iter-concepts.html#iterator-traversal-concepts-lib-iterator-traversal traversal category] of the underlying iterator type. Therefore the range concepts are named to reflect which traversal category its iterators support. See also terminology and style guidelines. for more information about naming of ranges.
-
-The concepts described below specifies associated types as [@../../libs/mpl/doc/refmanual/metafunction.html metafunctions] and all functions as free-standing functions to allow for a layer of indirection.
-
-[endsect]
-
-
-[section Single Pass Range]
-
-[h4 Notation]
-
-`X` A type that is a model of __single_pass_range__.
-`a` Object of type X.
-
-[h4 Description]
-
-A range `X` where `boost::range_iterator<X>::type` is a model of __single_pass_iterator__.
-
-[h4 Associated types]
-
-[table
- []
- [[Value type ] [`boost::range_value<X>::type` ] [The type of the object stored in a Range.]]
- [[Iterator type ] [`boost::range_iterator<X>::type` ] [The type of iterator used to iterate through a Range's elements. The iterator's value type is expected to be the Range's value type. A conversion from the iterator type to the `const` iterator type must exist.]]
- [[Const iterator type] [`boost::range_const_iterator<X>::type`] [A type of iterator that may be used to examine, but not to modify, a Range's elements.]]
-]
-
-[h4 Valid expressions]
-
-The following expressions must be valid.
-
-[table
- [[Name ] [Expression ] [Return type ]]
- [[Beginning of range] [`boost::begin(a)`] [`boost::range_iterator<X>::type` if `a` is mutable,[br] `boost::range_const_iterator<X>::type` otherwise]]
- [[End of range ] [`boost::end(a)` ] [`boost::range_iterator<X>::type` if `a` is mutable,[br] `boost::range_const_iterator<X>::type` otherwise]]
- [[Is range empty? ] [boost::empty(a) ] [Convertible to bool]]
-]
-
-[h4 Expression semantics]
-
-[table
- [[Expression ] [Semantics ] [Postcondition]]
- [[`boost::begin(a)`] [Returns an iterator pointing to the first element in the Range. ] [`boost::begin(a)` is either dereferenceable or past-the-end. It is past-the-end if and only if `boost::size(a) == 0`.]]
- [[`boost::end(a)` ] [Returns an iterator pointing one past the last element in the Range. ] [`boost::end(a)` is past-the-end.]]
- [[`boost::empty(a)`] [Equivalent to `boost::begin(a) == boost::end(a)`. (But possibly faster.)] [- ]]
-]
-
-[h4 Complexity guarantees]
-
-All three functions are at most amortized linear time. For most practical purposes, one can expect `boost::begin(a)`, `boost::end(a)` and `boost::empty(a)` to be amortized constant time.
-
-[h4 Invariants]
-
-[table
- []
- [[Valid range ] [For any Range `a`, `[boost::begin(a),boost::end(a))` is a valid range, that is, `boost::end(a)` is reachable from `boost::begin(a)` in a finite number of increments.]]
-
- [[Completeness] [An algorithm that iterates through the range `[boost::begin(a),boost::end(a))` will pass through every element of `a`.]]
-]
-
-[h4 See also]
-
-__container__
-
-__implementation_of_metafunctions__
-
-__implementation_of_functions__
-
-[endsect]
-
-
-[section Forward Range]
-
-[h4 Notation]
-
-`X` A type that is a model of __forward_range__.
-`a` Object of type X.
-
-[h4 Description]
-
-A range `X` where `boost::range_iterator<X>::type` is a model of __forward_traversal_iterator__.
-
-[h4 Refinement of]
-
-__single_pass_range__
-
-[h4 Associated types]
-
-[table
- []
- [[Distance type] [`boost::range_difference<X>::type`] [A signed integral type used to represent the distance between two of the Range's iterators. This type must be the same as the iterator's distance type.]]
- [[Size type ] [`boost::range_size<X>::type` ] [An unsigned integral type that can represent any nonnegative value of the Range's distance type.]]
-]
-
-[h4 Valid expressions]
-
-[table
- [[Name ] [Expression ] [Return type ]]
- [[Size of range] [`boost::size(a)`] [`boost::range_size<X>::type`]]
-]
-
-[h4 Expression semantics]
-
-[table
- [[Expression ] [Semantics] [Postcondition]]
- [[`boost::size(a)`] [Returns the size of the Range, that is, its number of elements. Note `boost::size(a) == 0u` is equivalent to `boost::empty(a)`.] [`boost::size(a) >= 0`]]
-]
-
-[h4 Complexity guarantees]
-
-`boost::size(a)` is at most amortized linear time.
-
-[h4 Invariants]
-
-[table
- []
- [[Range size] [`boost::size(a)` is equal to the distance from `boost::begin(a)` to `boost::end(a)`.]]
-]
-
-[h4 See also]
-
-__implementation_of_metafunctions__
-
-__implementation_of_functions__
-
-[endsect]
-
-
-[section Bidirectional Range]
-
-[h4 Notation]
-
-`X` A type that is a model of __bidirectional_range__.
-`a` Object of type X.
-
-[h4 Description]
-
-This concept provides access to iterators that traverse in both directions (forward and reverse). The `boost::range_iterator<X>::type` iterator must meet all of the requirements of __bidirectional_traversal_iterator__.
-
-[h4 Refinement of]
-
-__forward_range__
-
-[h4 Associated types]
-
-[table
- []
- [[Reverse Iterator type ] [`boost::range_reverse_iterator<X>::type` ] [The type of iterator used to iterate through a Range's elements in reverse order. The iterator's value type is expected to be the Range's value type. A conversion from the reverse iterator type to the const reverse iterator type must exist.]]
-
- [[Const reverse iterator type] [`boost::range_const_reverse_iterator<X>::type`] [A type of reverse iterator that may be used to examine, but not to modify, a Range's elements.]]
-]
-
-[h4 Valid expressions]
-
-[table
- [[Name ] [Expression ] [Return type] [Semantics]]
- [[Beginning of range] [`boost::rbegin(a)`] [`boost::range_reverse_iterator<X>::type` if `a` is mutable[br] `boost::range_const_reverse_iterator<X>::type` otherwise.] [Equivalent to `boost::range_reverse_iterator<X>::type(boost::end(a))`.]]
-
- [[End of range ] [`boost::rend(a)` ] [`boost::range_reverse_iterator<X>::type` if `a` is mutable,[br] `boost::range_const_reverse_iterator<X>::type` otherwise.] [Equivalent to `boost::range_reverse_iterator<X>::type(boost::begin(a))`.]]
-]
-
-[h4 Complexity guarantees]
-
-`boost::rbegin(a)` has the same complexity as `boost::end(a)` and `boost::rend(a)` has the same complexity as `boost::begin(a)` from __forward_range__.
-
-[h4 Invariants]
-
-[table
- []
- [[Valid reverse range] [For any Bidirectional Range a, `[boost::rbegin(a),boost::rend(a))` is a valid range, that is, `boost::rend(a)` is reachable from `boost::rbegin(a)` in a finite number of increments.]]
-
- [[Completeness ] [`An algorithm that iterates through the range `[boost::rbegin(a),boost::rend(a))` will pass through every element of `a`.]]
-]
-
-[h4 See also]
-
-__implementation_of_metafunctions__
-
-__implementation_of_functions__
-
-[endsect]
-
-
-[section Random Access Range]
-
-[h4 Description]
-
-A range `X` where `boost::range_iterator<X>::type` is a model of __random_access_traversal_iterator__.
-
-[h4 Refinement of]
-
-__bidirectional_range__
-
-[endsect]
-
-
-[section Concept Checking]
-
-Each of the range concepts has a corresponding concept checking class in the file [@../../boost/range/concepts.hpp `boost/range/concepts.hpp`]. These classes may be used in conjunction with the __concept_check__ to insure that the type of a template parameter is compatible with a range concept. If not, a meaningful compile time error is generated. Checks are provided for the range concepts related to iterator traversal categories. For example, the following line checks that the type `T` models the __forward_range__ concept.
-
-``
-function_requires<ForwardRangeConcept<T> >();
-``
-
-An additional concept check is required for the value access property of the range based on the range's iterator type. For example to check for a ForwardReadableRange, the following code is required.
-
-``
-function_requires<ForwardRangeConcept<T> >();
- function_requires<
- ReadableIteratorConcept<
- typename range_iterator<T>::type
- >
- >();
-``
-
-The following range concept checking classes are provided.
-
-* Class SinglePassRangeConcept checks for __single_pass_range__
-* Class ForwardRangeConcept checks for __forward_range__
-* Class BidirectionalRangeConcept checks for __bidirectional_range__
-* Class RandomAccessRangeConcept checks for __random_access_range__
-
-[h4 See also]
-
-[link boost.range.style_guide Range Terminology and style guidelines]
-
-__iterator_concepts__
-
-__concept_check__
-
-[endsect]
-
-[endsect]
-
-
-
-[section Reference]
-
-[section Overview]
-
-Four types of objects are currently supported by the library:
-
-* standard-like containers
-* `std::pair<iterator,iterator>`
-* null terminated strings (this includes `char[]`,`wchar_t[]`, `char*`, and `wchar_t*`)
-
-[:[*Warning: ['support for null-terminated strings is deprecated and will disappear in the next Boost release (1.34).]]]
-
-* built-in arrays
-
-Even though the behavior of the primary templates are exactly such that standard containers will be supported by default, the requirements are much lower than the standard container requirements. For example, the utility class __iterator_range__ implements the __minimal_interface__ required to make the class a __forward_range__.
-
-Please also see __range_concepts__ for more details.
-
-[endsect]
-
-
-[section Synopsis]
-
-``
-namespace boost
-{
- //
- // Single Pass Range metafunctions
- //
-
- template< class T >
- struct range_value;
-
- template< class T >
- struct range_iterator;
-
- template< class T >
- struct range_const_iterator;
-
- //
- // Forward Range metafunctions
- //
-
- template< class T >
- struct range_difference;
-
- template< class T >
- struct range_size;
-
- //
- // Bidirectional Range metafunctions
- //
-
- template< class T >
- struct range_reverse_iterator;
-
- template< class T >
- struct range_const_reverse_iterator;
-
- //
- // Special metafunctions
- //
-
- template< class T >
- struct range_result_iterator;
-
- template< class T >
- struct range_reverse_result_iterator;
-
- //
- // Single Pass Range functions
- //
-
- template< class T >
- typename range_iterator<T>::type
- begin( T& c );
-
- template< class T >
- typename range_const_iterator<T>::type
- begin( const T& c );
-
- template< class T >
- typename range_iterator<T>::type
- end( T& c );
-
- template< class T >
- typename range_const_iterator<T>::type
- end( const T& c );
-
- template< class T >
- bool
- empty( const T& c );
-
- //
- // Forward Range functions
- //
-
- template< class T >
- typename range_size<T>::type
- size( const T& c );
-
- //
- // Bidirectional Range functions
- //
-
- template< class T >
- typename range_reverse_iterator<T>::type
- rbegin( T& c );
-
- template< class T >
- typename range_const_reverse_iterator<T>::type
- rbegin( const T& c );
-
- template< class T >
- typename range_reverse_iterator<T>::type
- rend( T& c );
-
- template< class T >
- typename range_const_reverse_iterator<T>::type
- rend( const T& c );
-
- //
- // Special const Range functions
- //
-
- template< class T >
- typename range_const_iterator<T>::type
- const_begin( const T& r );
-
- template< class T >
- typename range_const_iterator<T>::type
- const_end( const T& r );
-
- template< class T >
- typename range_const_reverse_iterator<T>::type
- const_rbegin( const T& r );
-
- template< class T >
- typename range_const_reverse_iterator<T>::type
- const_rend( const T& r );
-
-} // namespace 'boost'
-``
-
-[endsect]
-
-
-[section Semantics]
-
-[h5 notation]
-
-[table
- [[Type ] [Object] [Describes ]]
- [[`X` ] [`x` ] [any type ]]
- [[`T` ] [`t` ] [denotes behavior of the primary templates]]
- [[`P` ] [`p` ] [denotes `std::pair<iterator,iterator>` ]]
- [[`A[sz]`] [`a` ] [denotes an array of type `A` of size `sz`]]
- [[`Char*`] [`s` ] [denotes either `char*` or `wchar_t*` ]]
-]
-
-Please notice in tables below that when four lines appear in a cell, the first line will describe the primary template, the second line pairs of iterators, the third line arrays and the last line null-terminated strings.
-
-[section Metafunctions]
-
-[table
- [[Expression] [Return type] [Complexity]]
- [[`range_value<X>::type`] [`T::value_type`[br]
-`boost::iterator_value<P::first_type>::type`[br]
-`A`[br]
-`Char`] [compile time]]
- [[`range_iterator<X>::type`] [`T::iterator`[br]
-`P::first_type`[br]
-`A*`[br]
-`Char*`] [compile time]]
- [[`range_const_iterator<X>::type`] [`T::const_iterator`[br]
-`P::first_type`[br]
-`const A*`[br]
-`const Char*`] [compile time]]
- [[`range_difference<X>::type`] [`T::difference_type`[br]
-`boost::iterator_difference<P::first_type>::type`[br]
-`std::ptrdiff_t`[br]
-`std::ptrdiff_t`] [compile time]]
- [[`range_size<X>::type`] [`T::size_type`[br]
-`std::size_t`[br]
-`std::size_t`[br]
-`std::size_t`] [compile time]]
- [[`range_result_iterator<X>::type`] [`range_const_iterator<X>::type` if `X` is `const`[br]
-`range_iterator<X>::type` otherwise] [compile time]]
- [[`range_reverse_iterator<X>::type`] [`boost::reverse_iterator< typename range_iterator<T>::type >`] [compile time]]
- [[`range_const_reverse_iterator<X>::type`] [`boost::reverse_iterator< typename range_const_iterator<T>::type >`] [compile time]]
- [[`range_reverse_result_iterator<X>::type`] [`boost::reverse_iterator< typename range_result_iterator<T>::type >`] [compile time]]
-]
-
-The special metafunctions `range_result_iterator` and `range_reverse_result_iterator` are not part of any Range concept, but they are very useful when implementing certain Range classes like __sub_range__ because of their ability to select iterators based on constness.
-
-[endsect]
-
-[section Functions]
-
-[table
- [[Expression] [Return type] [Returns] [Complexity]]
-
- [[`begin(x)`] [`range_result_iterator<X>::type`] [`p.first` if `p` is of type `std::pair<T>`[br]
-`a` if `a` is an array[br]
-`s` if `s` is a string literal[br]
-`boost_range_begin(x)` if that expression would invoke a function found by ADL[br]
-`t.begin()` otherwise] [constant time]]
-
- [[`end(x)`] [`range_result_iterator<X>::type`] [`p.second` if `p` is of type `std::pair<T>`[br]
-`a + sz` if `a` is an array of size `sz`[br]
-`s + std::char_traits<X>::length( s )` if `s` is a `Char*`[br]
-`s + sz - 1` if `s` is a string literal of size `sz`[br]
-`boost_range_end(x)` if that expression would invoke a function found by ADL[br]
-`t.end()` otherwise] [linear if `X` is `Char*`
-constant time otherwise]]
-
- [[`empty(x)`] [`bool`] [`begin(x) == end( x )`] [linear if `X` is `Char*`[br]
-constant time otherwise]]
-
- [[`size(x)`] [`range_size<X>::type`] [`std::distance(p.first,p.second)` if `p` is of type `std::pair<T>`[br]
-`sz` if `a` is an array of size `sz`[br]
-`end(s) - s` if `s` is a string literal or a `Char*`[br]
-`boost_range_size(x)` if that expression would invoke a function found by ADL[br]
-`t.size()` otherwise] [linear if `X` is `Char*` or if `std::distance()` is linear[br]
-constant time otherwise]]
-
- [[`rbegin(x)`] [`range_reverse_result_iterator<X>::type`] [`range_reverse_result_iterator<X>::type( end(x) )`] [same as `end(x)`]]
-
- [[`rend(x)`] [`range_reverse_result_iterator<X>::type`] [`range_reverse_result_iterator<X>::type( begin(x) )`] [same as `begin(x)`]]
-
- [[`const_begin(x)`] [`range_const_iterator<X>::type`] [`range_const_iterator<X>::type( begin(x) )`] [same as `begin(x)`]]
-
- [[`const_end(x)`] [`range_const_iterator<X>::type`] [`range_const_iterator<X>::type( end(x) )`] [same as `end(x)`]]
-
- [[`const_rbegin(x)`] [`range_const_reverse_iterator<X>::type`] [`range_const_reverse_iterator<X>::type( rbegin(x) )`] [same as `rbegin(x)`]]
-
- [[`const_rend(x)`] [`range_const_reverse_iterator<X>::type`] [`range_const_reverse_iterator<X>::type( rend(x) )`] [same as `rend(x)`]]
-]
-
-The special const functions are not part of any Range concept, but are very useful when you want to document clearly that your code is read-only.
-
-[endsect]
-
-[endsect]
-
-[section:extending Extending the library]
-
-[section:method_1 Method 1: provide member functions and nested types]
-
-This procedure assumes that you have control over the types that should be made conformant to a Range concept. If not, see [link boost.range.reference.extending.method_2 method 2].
-
-The primary templates in this library are implemented such that standard containers will work automatically and so will __boost_array__. Below is given an overview of which member functions and member types a class must specify to be useable as a certain Range concept.
-
-[table
- [[Member function] [Related concept ]]
- [[`begin()` ] [__single_pass_range__]]
- [[`end()` ] [__single_pass_range__]]
- [[`size()` ] [__forward_range__ ]]
-]
-
-Notice that `rbegin()` and `rend()` member functions are not needed even though the container can support bidirectional iteration.
-
-The required member types are:
-
-[table
- [[Member type ] [Related concept ]]
- [[`iterator` ] [__single_pass_range__]]
- [[`const_iterator`] [__single_pass_range__]]
- [[`size_type` ] [__forward_range__ ]]
-]
-
-Again one should notice that member types `reverse_iterator` and `const_reverse_iterator` are not needed.
-
-[endsect]
-
-[section:method_2 Method 2: provide free-standing functions and specialize metafunctions]
-
-This procedure assumes that you cannot (or do not wish to) change the types that should be made conformant to a Range concept. If this is not true, see [link boost.range.reference.extending.method_1 method 1].
-
-The primary templates in this library are implemented such that certain functions are found via argument-dependent-lookup (ADL). Below is given an overview of which free-standing functions a class must specify to be useable as a certain Range concept. Let `x` be a variable (`const` or `mutable`) of the class in question.
-
-[table
- [[Function ] [Related concept ]]
- [[`boost_range_begin(x)`] [__single_pass_range__]]
- [[`boost_range_end(x)` ] [__single_pass_range__]]
- [[`boost_range_size(x)` ] [__forward_range__ ]]
-]
-
-`boost_range_begin()` and `boost_range_end()` must be overloaded for both `const` and `mutable` reference arguments.
-
-You must also specialize 3 metafunctions for your type `X`:
-
-[table
- [[Metafunction ] [Related concept ]]
- [[`boost::range_iterator` ] [__single_pass_range__]]
- [[`boost::range_const_iterator`] [__single_pass_range__]]
- [[`boost::range_size` ] [__forward_range__ ]]
-]
-
-A complete example is given here:
-
-``
- #include <boost/range.hpp>
- #include <iterator> // for std::iterator_traits, std::distance()
-
- namespace Foo
- {
- //
- // Our sample UDT. A 'Pair'
- // will work as a range when the stored
- // elements are iterators.
- //
- template< class T >
- struct Pair
- {
- T first, last;
- };
-
- } // namespace 'Foo'
-
- namespace boost
- {
- //
- // Specialize metafunctions. We must include the range.hpp header.
- // We must open the 'boost' namespace.
- //
-
- template< class T >
- struct range_iterator< Foo::Pair<T> >
- {
- typedef T type;
- };
-
- template< class T >
- struct range_const_iterator< Foo::Pair<T> >
- {
- //
- // Remark: this is defined similar to 'range_iterator'
- // because the 'Pair' type does not distinguish
- // between an iterator and a const_iterator.
- //
- typedef T type;
- };
-
- template< class T >
- struct range_size< Foo::Pair<T> >
- {
-
- typedef std::size_t type;
- };
-
- } // namespace 'boost'
-
- namespace Foo
- {
- //
- // The required functions. These should be defined in
- // the same namespace as 'Pair', in this case
- // in namespace 'Foo'.
- //
-
- template< class T >
- inline T boost_range_begin( Pair<T>& x )
- {
- return x.first;
- }
-
- template< class T >
- inline T boost_range_begin( const Pair<T>& x )
- {
- return x.first;
- }
-
- template< class T >
- inline T boost_range_end( Pair<T>& x )
- {
- return x.last;
- }
-
- template< class T >
- inline T boost_range_end( const Pair<T>& x )
- {
- return x.last;
- }
-
- template< class T >
- inline typename boost::range_size< Pair<T> >::type
- boost_range_size( const Pair<T>& x )
- {
- return std::distance(x.first,x.last);
- }
-
- } // namespace 'Foo'
-
- #include <vector>
-
- int main()
- {
- typedef std::vector<int>::iterator iter;
- std::vector<int> vec;
- Foo::Pair<iter> pair = { vec.begin(), vec.end() };
- const Foo::Pair<iter>& cpair = pair;
- //
- // Notice that we call 'begin' etc with qualification.
- //
- iter i = boost::begin( pair );
- iter e = boost::end( pair );
- i = boost::begin( cpair );
- e = boost::end( cpair );
- boost::range_size< Foo::Pair<iter> >::type s = boost::size( pair );
- s = boost::size( cpair );
- boost::range_const_reverse_iterator< Foo::Pair<iter> >::type
- ri = boost::rbegin( cpair ),
- re = boost::rend( cpair );
- }
-``
-
-[endsect]
-
-[endsect]
-
-[endsect]
-
-
-
-[section Utilities]
-
-Having an abstraction that encapsulates a pair of iterators is very useful. The standard library uses `std::pair` in some circumstances, but that class is cumbersome to use because we need to specify two template arguments, and for all range algorithm purposes we must enforce the two template arguments to be the same. Moreover, `std::pair<iterator,iterator>` is hardly self-documenting whereas more domain specific class names are. Therefore these two classes are provided:
-
-* Class `iterator_range`
-* Class `sub_range`
-
-The `iterator_range` class is templated on an __forward_traversal_iterator__ and should be used whenever fairly general code is needed. The `sub_range` class is templated on an __forward_range__ and it is less general, but a bit easier to use since its template argument is easier to specify. The biggest difference is, however, that a `sub_range` can propagate constness because it knows what a corresponding `const_iterator` is.
-
-Both classes can be used as ranges since they implement the __minimal_interface__ required for this to work automatically.
-
-[section:iterator_range Class `iterator_range`]
-
-The intention of the `iterator_range` class is to encapsulate two iterators so they fulfill the __forward_range__ concept. A few other functions are also provided for convenience.
-
-If the template argument is not a model of __forward_traversal_iterator__, one can still use a subset of the interface. In particular, `size()` requires Forward Traversal Iterators whereas `empty()` only requires Single Pass Iterators.
-
-Recall that many default constructed iterators are singular and hence can only be assigned, but not compared or incremented or anything. However, if one creates a default constructed `iterator_range`, then one can still call all its member functions. This means that the `iterator_range` will still be usable in many contexts even though the iterators underneath are not.
-
-[h4 Synopsis]
-
-``
-namespace boost
-{
- template< class ForwardTraversalIterator >
- class iterator_range
- {
- public: // Forward Range types
- typedef ... value_type;
- typedef ... difference_type;
- typedef ... size_type;
- typedef ForwardTraversalIterator iterator;
- typedef ForwardTraversalIterator const_iterator;
-
- public: // construction, assignment
- template< class ForwardTraversalIterator2 >
- iterator_range( ForwardTraversalIterator2 Begin, ForwardTraversalIterator2 End );
-
- template< class ForwardRange >
- iterator_range( ForwardRange& r );
-
- template< class ForwardRange >
- iterator_range( const ForwardRange& r );
-
- template< class ForwardRange >
- iterator_range& operator=( ForwardRange& r );
-
- template< class ForwardRange >
- iterator_range& operator=( const ForwardRange& r );
-
- public: // Forward Range functions
- iterator begin() const;
- iterator end() const;
- size_type size() const;
- bool empty() const;
-
- public: // convenience
- operator unspecified_bool_type() const;
- bool equal( const iterator_range& ) const;
- value_type& front() const;
- value_type& back() const;
- // for Random Access Range only:
- value_type& operator[]( size_type at ) const;
- };
-
- // stream output
- template< class ForwardTraversalIterator, class T, class Traits >
- std::basic_ostream<T,Traits>&
- operator<<( std::basic_ostream<T,Traits>& Os,
- const iterator_range<ForwardTraversalIterator>& r );
-
- // comparison
- template< class ForwardTraversalIterator, class ForwardTraversalIterator2 >
- bool operator==( const iterator_range<ForwardTraversalIterator>& l,
- const iterator_range<ForwardTraversalIterator2>& r );
-
- template< class ForwardTraversalIterator, class ForwardRange >
- bool operator==( const iterator_range<ForwardTraversalIterator>& l,
- const ForwardRange& r );
-
- template< class ForwardTraversalIterator, class ForwardRange >
- bool operator==( const ForwardRange& l,
- const iterator_range<ForwardTraversalIterator>& r );
-
- template< class ForwardTraversalIterator, class ForwardTraversalIterator2 >
- bool operator!=( const iterator_range<ForwardTraversalIterator>& l,
- const iterator_range<ForwardTraversalIterator2>& r );
-
- template< class ForwardTraversalIterator, class ForwardRange >
- bool operator!=( const iterator_range<ForwardTraversalIterator>& l,
- const ForwardRange& r );
-
- template< class ForwardTraversalIterator, class ForwardRange >
- bool operator!=( const ForwardRange& l,
- const iterator_range<ForwardTraversalIterator>& r );
-
- template< class ForwardTraversalIterator, class ForwardTraversalIterator2 >
- bool operator<( const iterator_range<ForwardTraversalIterator>& l,
- const iterator_range<ForwardTraversalIterator2>& r );
-
- template< class ForwardTraversalIterator, class ForwardRange >
- bool operator<( const iterator_range<ForwardTraversalIterator>& l,
- const ForwardRange& r );
-
- template< class ForwardTraversalIterator, class ForwardRange >
- bool operator<( const ForwardRange& l,
- const iterator_range<ForwardTraversalIterator>& r );
-
- // external construction
- template< class ForwardTraversalIterator >
- iterator_range< ForwardTraversalIterator >
- make_iterator_range( ForwardTraversalIterator Begin,
- ForwardTraversalIterator End );
-
- template< class ForwardRange >
- iterator_range< typename iterator_of<ForwardRange>::type >
- make_iterator_range( ForwardRange& r );
-
- template< class ForwardRange >
- iterator_range< typename const_iterator_of<ForwardRange>::type >
- make_iterator_range( const ForwardRange& r );
-
- template< class Range >
- iterator_range< typename range_iterator<Range>::type >
- make_iterator_range( Range& r,
- typename range_difference<Range>::type advance_begin,
- typename range_difference<Range>::type advance_end );
-
- template< class Range >
- iterator_range< typename range_const_iterator<Range>::type >
- make_iterator_range( const Range& r,
- typename range_difference<Range>::type advance_begin,
- typename range_difference<Range>::type advance_end );
-
- // convenience
- template< class Sequence, class ForwardRange >
- Sequence copy_range( const ForwardRange& r );
-
-} // namespace 'boost'
-``
-
-If an instance of `iterator_range` is constructed by a client with two iterators, the client must ensure that the two iterators delimit a valid closed-open range [begin,end).
-
-It is worth noticing that the templated constructors and assignment operators allow conversion from `iterator_range<iterator>` to `iterator_range<const_iterator>`. Similarly, since the comparison operators have two template arguments, we can compare ranges whenever the iterators are comparable; for example when we are dealing with const and non-const iterators from the same container.
-
-[h4 Details member functions]
-
-`operator unspecified_bool_type() const;`
-
-[:['[*Returns]] `!empty();`]
-
-`bool equal( iterator_range& r ) const;`
-
-[:['[*Returns]] `begin() == r.begin() && end() == r.end();`]
-
-[h4 Details functions]
-
-`bool operator==( const ForwardRange1& l, const ForwardRange2& r );`
-
-[:['[*Returns]] `size(l) != size(r) ? false : std::equal( begin(l), end(l), begin(r) );`]
-
-`bool operator!=( const ForwardRange1& l, const ForwardRange2& r );`
-
-[:['[*Returns]] `!( l == r );`]
-
-`bool operator<( const ForwardRange1& l, const ForwardRange2& r );`
-
-[:['[*Returns]] `std::lexicographical_compare( begin(l), end(l), begin(r), end(r) );`]
-
-``
-iterator_range make_iterator_range( Range& r,
- typename range_difference<Range>::type advance_begin,
- typename range_difference<Range>::type advance_end );
-``
-
-[:['[*Effects:]]]
-
-``
- iterator new_begin = begin( r ),
- iterator new_end = end( r );
- std::advance( new_begin, advance_begin );
- std::advance( new_end, advance_end );
- return make_iterator_range( new_begin, new_end );
-``
-
-`Sequence copy_range( const ForwardRange& r );`
-
-[:['[*Returns]] `Sequence( begin(r), end(r) );`]
-
-[endsect]
-
-[section:sub_range Class `sub_range`]
-
-The `sub_range` class inherits all its functionality from the __iterator_range__ class. The `sub_range` class is often easier to use because one must specify the __forward_range__ template argument instead of an iterator. Moreover, the sub_range class can propagate constness since it knows what a corresponding `const_iterator` is.
-
-[h4 Synopsis]
-
-``
-namespace boost
-{
- template< class ForwardRange >
- class sub_range : public iterator_range< typename range_result_iterator<ForwardRange>::type >
- {
- public:
- typedef typename range_result_iterator<ForwardRange>::type iterator;
- typedef typename range_const_iterator<ForwardRange>::type const_iterator;
-
- public: // construction, assignment
- template< class ForwardTraversalIterator >
- sub_range( ForwardTraversalIterator Begin, ForwardTraversalIterator End );
-
- template< class ForwardRange2 >
- sub_range( ForwardRange2& r );
-
- template< class ForwardRange2 >
- sub_range( const Range2& r );
-
- template< class ForwardRange2 >
- sub_range& operator=( ForwardRange2& r );
-
- template< class ForwardRange2 >
- sub_range& operator=( const ForwardRange2& r );
-
- public: // Forward Range functions
- iterator begin();
- const_iterator begin() const;
- iterator end();
- const_iterator end() const;
-
- public: // convenience
- value_type& front();
- const value_type& front() const;
- value_type& back();
- const value_type& back() const;
- // for Random Access Range only:
- value_type& operator[]( size_type at );
- const value_type& operator[]( size_type at ) const;
-
- public:
- // rest of interface inherited from iterator_range
- };
-
-} // namespace 'boost'
-``
-
-The class should be trivial to use as seen below. Imagine that we have an algorithm that searches for a sub-string in a string. The result is an iterator_range, that delimits the match. We need to store the result from this algorithm. Here is an example of how we can do it with and without `sub_range`
-
-``
-std::string str("hello");
-iterator_range<std::string::iterator> ir = find_first( str, "ll" );
-sub_range<std::string> sub = find_first( str, "ll" );
-``
-
-[endsect]
-
-[endsect]
-
-
-
-[section:style_guide Terminology and style guidelines]
-
-The use of a consistent terminology is as important for __ranges__ and range-based algorithms as it is for iterators and iterator-based algorithms. If a conventional set of names are adopted, we can avoid misunderstandings and write generic function prototypes that are ['self-documenting].
-
-Since ranges are characterized by a specific underlying iterator type, we get a type of range for each type of iterator. Hence we can speak of the following types of ranges:
-
-* ['Value access] category:
- * Readable Range
- * Writeable Range
- * Swappable Range
- * Lvalue Range
-* ['Traversal] category:
- * __single_pass_range__
- * __forward_range__
- * __bidirectional_range__
- * __random_access_range__
-
-Notice how we have used the categories from the __new_style_iterators__.
-
-Notice that an iterator (and therefore an range) has one ['traversal] property and one or more properties from the ['value access] category. So in reality we will mostly talk about mixtures such as
-
-* Random Access Readable Writeable Range
-* Forward Lvalue Range
-
-By convention, we should always specify the ['traversal] property first as done above. This seems reasonable since there will only be one ['traversal] property, but perhaps many ['value access] properties.
-
-It might, however, be reasonable to specify only one category if the other category does not matter. For example, the __iterator_range__ can be constructed from a Forward Range. This means that we do not care about what ['value access] properties the Range has. Similarly, a Readable Range will be one that has the lowest possible ['traversal] property (Single Pass).
-
-As another example, consider how we specify the interface of `std::sort()`. Algorithms are usually more cumbersome to specify the interface of since both traversal and value access properties must be exactly defined. The iterator-based version looks like this:
-
-``
- template< class RandomAccessTraversalReadableWritableIterator >
- void sort( RandomAccessTraversalReadableWritableIterator first,
- RandomAccessTraversalReadableWritableIterator last );
-``
-
-For ranges the interface becomes
-
-``
- template< class RandomAccessReadableWritableRange >
- void sort( RandomAccessReadableWritableRange& r );
-``
-
-[endsect]
-
-
-
-[section Library Headers]
-
-[table
- [[Header ] [Includes ] [Related Concept ]]
- [[`<boost/range.hpp>` ] [everything ] [- ]]
- [[`<boost/range/metafunctions.hpp>` ] [every metafunction ] [- ]]
- [[`<boost/range/functions.hpp>` ] [every function ] [- ]]
- [[`<boost/range/value_type.hpp>` ] [`range_value` ] [__single_pass_range__ ]]
- [[`<boost/range/iterator.hpp>` ] [`range_iterator` ] [__single_pass_range__ ]]
- [[`<boost/range/const_iterator.hpp>` ] [`range_const_iterator` ] [__single_pass_range__ ]]
- [[`<boost/range/difference_type.hpp>` ] [`range_difference` ] [__forward_range__ ]]
- [[`<boost/range/size_type.hpp>` ] [`range_size` ] [__forward_range__ ]]
- [[`<boost/range/result_iterator.hpp>` ] [`range_result_iterator` ] [- ]]
- [[`<boost/range/reverse_iterator.hpp>`] [`range_reverse_iterator` ] [__bidirectional_range__ ]]
- [[`<boost/range/const_reverse_iterator.hpp>`]
- [`range_const_reverse_iterator`]
- [_bidirectional_range__ ]]
- [[`<boost/range/reverse_result_iterator.hpp>`]
- [`range_reverse_result_iterator`]
- [- ]]
- [[`<boost/range/begin.hpp>` ] [`begin` and `const_begin` ] [__single_pass_range__ ]]
- [[`<boost/range/end.hpp>` ] [`end` and `const_end` ] [__single_pass_range__ ]]
- [[`<boost/range/empty.hpp>` ] [`empty` ] [__single_pass_range__ ]]
- [[`<boost/range/size.hpp>` ] [`size` ] [__forward_range__ ]]
- [[`<boost/range/rbegin.hpp>` ] [`rbegin` and `const_rbegin`] [__bidirectional_range__ ]]
- [[`<boost/range/rend.hpp>` ] [`rend` and `const_rend` ] [__bidirectional_range__ ]]
- [[`<boost/range/iterator_range.hpp>` ] [`iterator_range` ] [- ]]
- [[`<boost/range/sub_range.hpp>` ] [`sub_range` ] [- ]]
- [[`<boost/range/concepts.hpp>` ] [`concept checks` ] [- ]]
-]
-
-[endsect]
-
-
-
-[section Examples]
-
-Some examples are given in the accompanying test files:
-
-* [@http://www.boost.org/libs/range/test/string.cpp string.cpp][br]
-shows how to implement a container version of `std::find()` that works with `char[]`,`wchar_t[]`,`char*`,`wchar_t*`.
-
-[:[*Warning: ['support for null-terminated strings is deprecated and will disappear in the next Boost release (1.34).]]]
-
-* [@http://www.boost.org/libs/range/test/algorithm_example.cpp algorithm_example.cpp][br]shows the replace example from the introduction.
-
-* [@http://www.boost.org/libs/range/test/iterator_range.cpp iterator_range.cpp]
-
-* [@http://www.boost.org/libs/range/test/sub_range.cpp sub_range.cpp]
-
-* [@http://www.boost.org/libs/range/test/iterator_pair.cpp iterator_pair.cpp]
-
-* [@http://www.boost.org/libs/range/test/reversible_range.cpp reversible_range.cpp]
-
-* [@http://www.boost.org/libs/range/test/std_container.cpp std_container.cpp]
-
-* [@http://www.boost.org/libs/range/test/array.cpp array.cpp]
-
-[endsect]
-
-
-
-[section Portability]
-
-A huge effort has been made to port the library to as many compilers as possible.
-
-Full support for built-in arrays require that the compiler supports class template partial specialization. For non-conforming compilers there might be a chance that it works anyway thanks to workarounds in the type traits library.
-Visual C++ 6/7.0 has a limited support for arrays: as long as the arrays are of built-in type it should work.
-
-Notice also that some compilers cannot do function template ordering properly. In that case one must rely of __range_result_iterator__ and a single function definition instead of overloaded versions for const and non-const arguments. So if one cares about old compilers, one should not pass rvalues to the functions.
-
-For maximum portability you should follow these guidelines:
-
-# do not use built-in arrays,
-# do not pass rvalues to `begin()`, `end()` and `iterator_range` Range constructors and assignment operators,
-# use `const_begin()` and `const_end()` whenever your code by intention is read-only; this will also solve most rvalue problems,
-# do not rely on ADL:
- * if you overload functions, include that header before the headers in this library,
- * put all overloads in namespace boost.
-
-
-
-[endsect]
-
-
-
-[section FAQ]
-
-1. ['[*Why is there no difference between `range_iterator<C>::type` and `range_const_iterator<C>::type` for `std::pair<iterator, iterator>`?]]
-
-[:In general it is not possible nor desirable to find a corresponding `const_iterator`. When it is possible to come up with one, the client might choose to construct a `std::pair<const_iterator,const_iterator>` object.]
-
-[:Note that an __iterator_range__ is somewhat more convenient than a `pair` and that a __sub_range__ does propagate const-ness.]
-
-2. ['[*Why is there not supplied more types or more functions?]]
-
-[:The library has been kept small because its current interface will serve most purposes. If and when a genuine need arises for more functionality, it can be implemented.]
-
-3. ['[*How should I implement generic algorithms for ranges?]]
-
-[:One should always start with a generic algorithm that takes two iterators (or more) as input. Then use Boost.Range to build handier versions on top of the iterator based algorithm. Please notice that once the range version of the algorithm is done, it makes sense not to expose the iterator version in the public interface.]
-
-4. ['[*Why is there no Incrementable Range concept?]]
-
-[:Even though we speak of incrementable iterators, it would not make much sense for ranges; for example, we cannot determine the size and emptiness of a range since we cannot even compare its iterators.]
-
-[:Note also that incrementable iterators are derived from output iterators and so there exist no output range.]
-
-[endsect]
-
-[section:history_ack History and Acknowledgement]
-
-The library have been under way for a long time. Dietmar Kühl originally intended to submit an `array_traits` class template which had most of the functionality present now, but only for arrays and standard containers.
-
-Meanwhile work on algorithms for containers in various contexts showed the need for handling pairs of iterators, and string libraries needed special treatment of character arrays. In the end it made sense to formalize the minimal requirements of these similar concepts. And the results are the Range concepts found in this library.
-
-The term Range was adopted because of paragraph 24.1/7 from the C++ standard:
-
-Most of the library's algorithmic templates that operate on data structures have interfaces that use ranges. A range is a pair of iterators that designate the beginning and end of the computation. A range [i, i) is an empty range; in general, a range [i, j) refers to the elements in the data structure starting with the one pointed to by i and up to but not including the one pointed to by j. Range [i, j) is valid if and only if j is reachable from i. The result of the application of functions in the library to invalid ranges is undefined.
-
-Special thanks goes to
-
-* Pavol Droba for help with documentation and implementation
-* Pavel Vozenilek for help with porting the library
-* Jonathan Turkanis and John Torjo for help with documentation
-* Hartmut Kaiser for being review manager
-* Jonathan Turkanis for porting the lib (as far sa possible) to vc6 and vc7.
-
-The concept checks and their documentation was provided by Daniel Walker.
-
-[endsect]
\ No newline at end of file

Copied: branches/release/libs/range/doc/concepts.qbk (from r60898, /trunk/libs/range/doc/concepts.qbk)
==============================================================================
--- /trunk/libs/range/doc/concepts.qbk (original)
+++ branches/release/libs/range/doc/concepts.qbk 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -7,7 +7,7 @@
 The motivation for the Range concept is that there are many useful Container-like types that do not meet the full requirements of Container, and many algorithms that can be written with this reduced set of requirements. In particular, a Range does not necessarily
 
 * own the elements that can be accessed through it,
-* have copy semantics,
+* have copy semantics,
 
 Because of the second requirement, a Range object must be passed by (const or non-const) reference in generic code.
 
@@ -165,7 +165,7 @@
   []
   [[Valid reverse range] [For any Bidirectional Range a, `[boost::rbegin(a),boost::rend(a))` is a valid range, that is, `boost::rend(a)` is reachable from `boost::rbegin(a)` in a finite number of increments.]]
 
- [[Completeness ] [`An algorithm that iterates through the range `[boost::rbegin(a),boost::rend(a))` will pass through every element of `a`.]]
+ [[Completeness ] [An algorithm that iterates through the range `[boost::rbegin(a),boost::rend(a))` will pass through every element of `a`.]]
 ]
 
 [heading See also]
@@ -203,7 +203,7 @@
 
 [heading Complexity guarantees]
 
-`boost::size(a)` is completes in amortized constant time.
+`boost::size(a)` completes in amortized constant time.
 
 [heading Invariants]
 
@@ -222,13 +222,13 @@
 ``
 BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<T> ));
 ``
-
+
 An additional concept check is required for the value access property of the range based on the range's iterator type. For example to check for a ForwardReadableRange, the following code is required.
 
 ``
 BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<T> ));
 BOOST_CONCEPT_ASSERT(( ReadableIteratorConcept<typename range_iterator<T>::type> ));
-``
+``
 
 The following range concept checking classes are provided.
 
@@ -245,7 +245,7 @@
 
 __concept_check__
 
-[endsect]
+[endsect]
 
 [endsect]
 

Copied: branches/release/libs/range/doc/html/index.html (from r60898, /trunk/libs/range/doc/html/index.html)
==============================================================================
--- /trunk/libs/range/doc/html/index.html (original)
+++ branches/release/libs/range/doc/html/index.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -30,7 +30,7 @@
 </h3></div></div>
 <div><p class="copyright">Copyright &#169; 2003 -2010 Thorsten Ottosen, Neil Groves</p></div>
 <div><div class="legalnotice" title="Legal Notice">
-<a name="id3156350"></a><p>
+<a name="id2902944"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -135,7 +135,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 28, 2010 at 14:28:09 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 03, 2010 at 08:56:46 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Copied: branches/release/libs/range/doc/html/range/concepts/bidirectional_range.html (from r60898, /trunk/libs/range/doc/html/range/concepts/bidirectional_range.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/concepts/bidirectional_range.html (original)
+++ branches/release/libs/range/doc/html/range/concepts/bidirectional_range.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -27,7 +27,7 @@
 <a name="range.concepts.bidirectional_range"></a><a class="link" href="bidirectional_range.html" title="Bidirectional Range">Bidirectional Range</a>
 </h3></div></div></div>
 <a name="range.concepts.bidirectional_range.notation"></a><h5>
-<a name="id3168757"></a>
+<a name="id2915351"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.notation">Notation</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.description"></a><h5>
-<a name="id3168855"></a>
+<a name="id2915449"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.description">Description</a>
       </h5>
 <p>
@@ -75,7 +75,7 @@
         Traversal Iterator</a>.
       </p>
 <a name="range.concepts.bidirectional_range.refinement_of"></a><h5>
-<a name="id3168920"></a>
+<a name="id2915514"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.refinement_of">Refinement
         of</a>
       </h5>
@@ -83,7 +83,7 @@
         <a class="link" href="forward_range.html" title="Forward Range">Forward Range</a>
       </p>
 <a name="range.concepts.bidirectional_range.associated_types"></a><h5>
-<a name="id3168949"></a>
+<a name="id2915543"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.associated_types">Associated
         types</a>
       </h5>
@@ -136,7 +136,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.valid_expressions"></a><h5>
-<a name="id3169115"></a>
+<a name="id2915709"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.valid_expressions">Valid
         expressions</a>
       </h5>
@@ -221,7 +221,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.complexity_guarantees"></a><h5>
-<a name="id3169594"></a>
+<a name="id2916188"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.complexity_guarantees">Complexity
         guarantees</a>
       </h5>
@@ -232,7 +232,7 @@
         <a class="link" href="forward_range.html" title="Forward Range">Forward Range</a>.
       </p>
 <a name="range.concepts.bidirectional_range.invariants"></a><h5>
-<a name="id3169745"></a>
+<a name="id2916338"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.invariants">Invariants</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -264,21 +264,15 @@
               </td>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">An</span> <span class="identifier">algorithm</span>
- <span class="identifier">that</span> <span class="identifier">iterates</span>
- <span class="identifier">through</span> <span class="identifier">the</span>
- <span class="identifier">range</span> </code>[boost::rbegin(a),boost::rend(a))<code class="computeroutput">
- <span class="identifier">will</span> <span class="identifier">pass</span>
- <span class="identifier">through</span> <span class="identifier">every</span>
- <span class="identifier">element</span> <span class="identifier">of</span>
- </code>a`.
+ An algorithm that iterates through the range <code class="computeroutput"><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rbegin</span><span class="special">(</span><span class="identifier">a</span><span class="special">),</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rend</span><span class="special">(</span><span class="identifier">a</span><span class="special">))</span></code>
+ will pass through every element of <code class="computeroutput"><span class="identifier">a</span></code>.
                 </p>
               </td>
 </tr>
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.see_also"></a><h5>
-<a name="id3170015"></a>
+<a name="id2916600"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.see_also">See also</a>
       </h5>
 <p>

Copied: branches/release/libs/range/doc/html/range/concepts/concept_checking.html (from r60898, /trunk/libs/range/doc/html/range/concepts/concept_checking.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/concepts/concept_checking.html (original)
+++ branches/release/libs/range/doc/html/range/concepts/concept_checking.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -79,7 +79,7 @@
 </li>
 </ul></div>
 <a name="range.concepts.concept_checking.see_also"></a><h5>
-<a name="id3171025"></a>
+<a name="id2917610"></a>
         <a class="link" href="concept_checking.html#range.concepts.concept_checking.see_also">See also</a>
       </h5>
 <p>

Copied: branches/release/libs/range/doc/html/range/concepts/forward_range.html (from r60898, /trunk/libs/range/doc/html/range/concepts/forward_range.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/concepts/forward_range.html (original)
+++ branches/release/libs/range/doc/html/range/concepts/forward_range.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -27,7 +27,7 @@
 <a name="range.concepts.forward_range"></a><a class="link" href="forward_range.html" title="Forward Range">Forward Range</a>
 </h3></div></div></div>
 <a name="range.concepts.forward_range.notation"></a><h5>
-<a name="id3168350"></a>
+<a name="id2914944"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.notation">Notation</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.forward_range.description"></a><h5>
-<a name="id3168446"></a>
+<a name="id2915040"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.description">Description</a>
       </h5>
 <p>
@@ -73,14 +73,14 @@
         Traversal Iterator</a>.
       </p>
 <a name="range.concepts.forward_range.refinement_of"></a><h5>
-<a name="id3168518"></a>
+<a name="id2915112"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.refinement_of">Refinement of</a>
       </h5>
 <p>
         <a class="link" href="single_pass_range.html" title="Single Pass Range">Single Pass Range</a>
       </p>
 <a name="range.concepts.forward_range.associated_types"></a><h5>
-<a name="id3168547"></a>
+<a name="id2915141"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.associated_types">Associated
         types</a>
       </h5>
@@ -132,7 +132,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.forward_range.see_also"></a><h5>
-<a name="id3168704"></a>
+<a name="id2915298"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.see_also">See also</a>
       </h5>
 <p>

Copied: branches/release/libs/range/doc/html/range/concepts/random_access_range.html (from r60898, /trunk/libs/range/doc/html/range/concepts/random_access_range.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/concepts/random_access_range.html (original)
+++ branches/release/libs/range/doc/html/range/concepts/random_access_range.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -27,7 +27,7 @@
 <a name="range.concepts.random_access_range"></a><a class="link" href="random_access_range.html" title="Random Access Range">Random Access Range</a>
 </h3></div></div></div>
 <a name="range.concepts.random_access_range.description"></a><h5>
-<a name="id3170068"></a>
+<a name="id2916653"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.description">Description</a>
       </h5>
 <p>
@@ -35,7 +35,7 @@
         Access Traversal Iterator</a>.
       </p>
 <a name="range.concepts.random_access_range.refinement_of"></a><h5>
-<a name="id3170140"></a>
+<a name="id2916725"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.refinement_of">Refinement
         of</a>
       </h5>
@@ -43,7 +43,7 @@
         <a class="link" href="bidirectional_range.html" title="Bidirectional Range">Bidirectional Range</a>
       </p>
 <a name="range.concepts.random_access_range.valid_expressions"></a><h5>
-<a name="id3170168"></a>
+<a name="id2916753"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.valid_expressions">Valid
         expressions</a>
       </h5>
@@ -89,7 +89,7 @@
 </tr></tbody>
 </table></div>
 <a name="range.concepts.random_access_range.expression_semantics"></a><h5>
-<a name="id3170315"></a>
+<a name="id2916900"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.expression_semantics">Expression
         semantics</a>
       </h5>
@@ -139,15 +139,15 @@
 </tr></tbody>
 </table></div>
 <a name="range.concepts.random_access_range.complexity_guarantees"></a><h5>
-<a name="id3170541"></a>
+<a name="id2917126"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.complexity_guarantees">Complexity
         guarantees</a>
       </h5>
 <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">size</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code> is completes in amortized constant time.
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">size</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code> completes in amortized constant time.
       </p>
 <a name="range.concepts.random_access_range.invariants"></a><h5>
-<a name="id3170595"></a>
+<a name="id2917180"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.invariants">Invariants</a>
       </h5>
 <div class="informaltable"><table class="table">

Copied: branches/release/libs/range/doc/html/range/concepts/single_pass_range.html (from r60898, /trunk/libs/range/doc/html/range/concepts/single_pass_range.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/concepts/single_pass_range.html (original)
+++ branches/release/libs/range/doc/html/range/concepts/single_pass_range.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -27,7 +27,7 @@
 <a name="range.concepts.single_pass_range"></a><a class="link" href="single_pass_range.html" title="Single Pass Range">Single Pass Range</a>
 </h3></div></div></div>
 <a name="range.concepts.single_pass_range.notation"></a><h5>
-<a name="id3166972"></a>
+<a name="id2913566"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.notation">Notation</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.description"></a><h5>
-<a name="id3167074"></a>
+<a name="id2913668"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.description">Description</a>
       </h5>
 <p>
@@ -73,7 +73,7 @@
         Pass Iterator</a>.
       </p>
 <a name="range.concepts.single_pass_range.associated_types"></a><h5>
-<a name="id3167146"></a>
+<a name="id2913740"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.associated_types">Associated
         types</a>
       </h5>
@@ -126,7 +126,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.valid_expressions"></a><h5>
-<a name="id3167320"></a>
+<a name="id2913914"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.valid_expressions">Valid
         expressions</a>
       </h5>
@@ -198,7 +198,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.expression_semantics"></a><h5>
-<a name="id3167654"></a>
+<a name="id2914248"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.expression_semantics">Expression
         semantics</a>
       </h5>
@@ -266,7 +266,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.complexity_guarantees"></a><h5>
-<a name="id3167925"></a>
+<a name="id2914519"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.complexity_guarantees">Complexity
         guarantees</a>
       </h5>
@@ -276,7 +276,7 @@
         constant time.
       </p>
 <a name="range.concepts.single_pass_range.invariants"></a><h5>
-<a name="id3168008"></a>
+<a name="id2914602"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.invariants">Invariants</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -316,7 +316,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.see_also"></a><h5>
-<a name="id3168279"></a>
+<a name="id2914873"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.see_also">See also</a>
       </h5>
 <p>

Copied: branches/release/libs/range/doc/html/range/introduction.html (from r60898, /trunk/libs/range/doc/html/range/introduction.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/introduction.html (original)
+++ branches/release/libs/range/doc/html/range/introduction.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -36,14 +36,14 @@
       much as possible.
     </p>
 <p>
- The most common form of ranges we are used to work with is standard library
- containers. However, one often finds it desirable to extend that code to work
- with other types that offer enough functionality to satisfy the needs of the
- generic code <span class="bold"><strong><span class="emphasis"><em>if a suitable layer of indirection
- is applied</em></span></strong></span> . For example, raw arrays are often suitable
- for use with generic code that works with containers, provided a suitable adapter
- is used. Likewise, null terminated strings can be treated as containers of
- characters, if suitably adapted.
+ The most common form of ranges used throughout the C++ community are standard
+ library containers. When writing algorithms however, one often finds it desirable
+ for the algorithm to accept other types that offer enough functionality to
+ satisfy the needs of the generic code <span class="bold"><strong><span class="emphasis"><em>if a
+ suitable layer of indirection is applied</em></span></strong></span> . For example,
+ raw arrays are often suitable for use with generic code that works with containers,
+ provided a suitable adapter is used. Likewise, null terminated strings can
+ be treated as containers of characters, if suitably adapted.
     </p>
 <p>
       This library therefore provides the means to adapt standard-like containers,
@@ -125,7 +125,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">my_generic_replace</span><span class="special">(</span> <span class="identifier">my_view</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="number">2</span> <span class="special">);</span>
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">my_generic_replace</span><span class="special">(</span> <span class="identifier">str</span><span class="special">,</span> <span class="char">'a'</span><span class="special">,</span> <span class="char">'b'</span> <span class="special">);</span>
 
-<span class="comment">// prints '3', '5' and '0'
+<span class="comment">// prints '3', '5' and '0'
 </span></pre>
 <p>
     </p>

Copied: branches/release/libs/range/doc/html/range/mfc_atl.html (from r60898, /trunk/libs/range/doc/html/range/mfc_atl.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/mfc_atl.html (original)
+++ branches/release/libs/range/doc/html/range/mfc_atl.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -34,7 +34,7 @@
 <dt><span class="section"> References</span></dt>
 </dl></div>
 <a name="range.mfc_atl.introduction"></a><h5>
-<a name="id3280319"></a>
+<a name="id3026958"></a>
       <a class="link" href="mfc_atl.html#range.mfc_atl.introduction">Introduction</a>
     </h5>
 <p>
@@ -100,7 +100,7 @@
 </tbody>
 </table></div>
 <a name="range.mfc_atl.overview"></a><h5>
-<a name="id3280457"></a>
+<a name="id3027096"></a>
       <a class="link" href="mfc_atl.html#range.mfc_atl.overview">Overview</a>
     </h5>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html (from r60898, /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html (original)
+++ branches/release/libs/range/doc/html/range/reference/adaptors/adaptors_introduction.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -122,7 +122,7 @@
           situations, you will really appreciate the succinctness of <code class="computeroutput"><span class="keyword">operator</span><span class="special">|()</span></code>.
         </p>
 <a name="range.reference.adaptors.adaptors_introduction.composition_of_adaptors"></a><h6>
-<a name="id3177994"></a>
+<a name="id2924577"></a>
           <a class="link" href="adaptors_introduction.html#range.reference.adaptors.adaptors_introduction.composition_of_adaptors">Composition
           of Adaptors</a>
         </h6>
@@ -159,7 +159,7 @@
           is the design solution to this problem.
         </p>
 <a name="range.reference.adaptors.adaptors_introduction.range_adaptor_alternative_to_copy_if_algorithm"></a><h6>
-<a name="id3178304"></a>
+<a name="id2924887"></a>
           <a class="link" href="adaptors_introduction.html#range.reference.adaptors.adaptors_introduction.range_adaptor_alternative_to_copy_if_algorithm">Range
           Adaptor alternative to copy_if algorithm</a>
         </h6>
@@ -176,7 +176,7 @@
 <p>
         </p>
 <a name="range.reference.adaptors.adaptors_introduction.range_adaptor_alternative_to_count_if_algorithm"></a><h6>
-<a name="id3178473"></a>
+<a name="id2925056"></a>
           <a class="link" href="adaptors_introduction.html#range.reference.adaptors.adaptors_introduction.range_adaptor_alternative_to_count_if_algorithm">Range
           Adaptor alternative to count_if algorithm</a>
         </h6>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           make_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap_algorithms.make_heap.prototype"></a><h6>
-<a name="id3252496"></a>
+<a name="id2999078"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap_algorithms.make_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap_algorithms.make_heap.description"></a><h6>
-<a name="id3252846"></a>
+<a name="id2999429"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap_algorithms.make_heap.description">Description</a>
           </h6>
 <p>
@@ -61,14 +61,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap_algorithms.make_heap.definition"></a><h6>
-<a name="id3252927"></a>
+<a name="id2999509"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap_algorithms.make_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap_algorithms.make_heap.requirements"></a><h6>
-<a name="id3253000"></a>
+<a name="id2999583"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap_algorithms.make_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -119,7 +119,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.heap_algorithms.make_heap.complexity"></a><h6>
-<a name="id3253236"></a>
+<a name="id2999819"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap_algorithms.make_heap.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           pop_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap_algorithms.pop_heap.prototype"></a><h6>
-<a name="id3251517"></a>
+<a name="id2998100"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap_algorithms.pop_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap_algorithms.pop_heap.description"></a><h6>
-<a name="id3251867"></a>
+<a name="id2998449"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap_algorithms.pop_heap.description">Description</a>
           </h6>
 <p>
@@ -63,14 +63,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap_algorithms.pop_heap.definition"></a><h6>
-<a name="id3252027"></a>
+<a name="id2998609"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap_algorithms.pop_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap_algorithms.pop_heap.requirements"></a><h6>
-<a name="id3252099"></a>
+<a name="id2998681"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap_algorithms.pop_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -121,7 +121,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.heap_algorithms.pop_heap.precondition_"></a><h6>
-<a name="id3252335"></a>
+<a name="id2998918"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap_algorithms.pop_heap.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -131,7 +131,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.heap_algorithms.pop_heap.complexity"></a><h6>
-<a name="id3252407"></a>
+<a name="id2998989"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap_algorithms.pop_heap.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           push_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap_algorithms.push_heap.prototype"></a><h6>
-<a name="id3250497"></a>
+<a name="id2997080"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap_algorithms.push_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap_algorithms.push_heap.description"></a><h6>
-<a name="id3250848"></a>
+<a name="id2997430"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap_algorithms.push_heap.description">Description</a>
           </h6>
 <p>
@@ -63,14 +63,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap_algorithms.push_heap.definition"></a><h6>
-<a name="id3251013"></a>
+<a name="id2997595"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap_algorithms.push_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap_algorithms.push_heap.requirements"></a><h6>
-<a name="id3251086"></a>
+<a name="id2997669"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap_algorithms.push_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -121,7 +121,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.heap_algorithms.push_heap.precondition_"></a><h6>
-<a name="id3251322"></a>
+<a name="id2997905"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap_algorithms.push_heap.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -131,7 +131,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.heap_algorithms.push_heap.complexity"></a><h6>
-<a name="id3251439"></a>
+<a name="id2998022"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap_algorithms.push_heap.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           next_permutation</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.permutation_algorithms.next_permutation.prototype"></a><h6>
-<a name="id3253337"></a>
+<a name="id2999919"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation_algorithms.next_permutation.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.permutation_algorithms.next_permutation.description"></a><h6>
-<a name="id3253689"></a>
+<a name="id3000271"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation_algorithms.next_permutation.description">Description</a>
           </h6>
 <p>
@@ -67,14 +67,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.permutation_algorithms.next_permutation.definition"></a><h6>
-<a name="id3253796"></a>
+<a name="id3000379"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation_algorithms.next_permutation.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">permutation</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.permutation_algorithms.next_permutation.requirements"></a><h6>
-<a name="id3253871"></a>
+<a name="id3000453"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation_algorithms.next_permutation.requirements">Requirements</a>
           </h6>
 <p>
@@ -125,7 +125,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.permutation_algorithms.next_permutation.complexity"></a><h6>
-<a name="id3254107"></a>
+<a name="id3000690"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation_algorithms.next_permutation.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           prev_permutation</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.permutation_algorithms.prev_permutation.prototype"></a><h6>
-<a name="id3254191"></a>
+<a name="id3000774"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation_algorithms.prev_permutation.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.permutation_algorithms.prev_permutation.description"></a><h6>
-<a name="id3254541"></a>
+<a name="id3001123"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation_algorithms.prev_permutation.description">Description</a>
           </h6>
 <p>
@@ -67,14 +67,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.permutation_algorithms.prev_permutation.definition"></a><h6>
-<a name="id3254651"></a>
+<a name="id3001233"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation_algorithms.prev_permutation.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">permutation</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.permutation_algorithms.prev_permutation.requirements"></a><h6>
-<a name="id3254725"></a>
+<a name="id3001308"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation_algorithms.prev_permutation.requirements">Requirements</a>
           </h6>
 <p>
@@ -125,7 +125,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.permutation_algorithms.prev_permutation.complexity"></a><h6>
-<a name="id3254962"></a>
+<a name="id3001544"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation_algorithms.prev_permutation.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy.prototype"></a><h6>
-<a name="id3199494"></a>
+<a name="id2946077"></a>
             <a class="link" href="copy.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy.description"></a><h6>
-<a name="id3199626"></a>
+<a name="id2946209"></a>
             <a class="link" href="copy.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy.description">Description</a>
           </h6>
 <p>
@@ -51,14 +51,14 @@
             <span class="identifier">distance</span><span class="special">(</span><span class="identifier">source_rng</span><span class="special">)</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy.definition"></a><h6>
-<a name="id3199761"></a>
+<a name="id2946343"></a>
             <a class="link" href="copy.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy.requirements"></a><h6>
-<a name="id3199835"></a>
+<a name="id2946418"></a>
             <a class="link" href="copy.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -79,7 +79,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy.precondition_"></a><h6>
-<a name="id3199946"></a>
+<a name="id2946528"></a>
             <a class="link" href="copy.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -93,7 +93,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy.complexity"></a><h6>
-<a name="id3200052"></a>
+<a name="id2946635"></a>
             <a class="link" href="copy.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - copy_backward</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.prototype"></a><h6>
-<a name="id3200124"></a>
+<a name="id2946707"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.description"></a><h6>
-<a name="id3200258"></a>
+<a name="id2946840"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.description">Description</a>
           </h6>
 <p>
@@ -60,14 +60,14 @@
             denotes the <span class="bold"><strong>end</strong></span> of the output sequence.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.definition"></a><h6>
-<a name="id3200418"></a>
+<a name="id2947001"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">copy_backward</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.requirements"></a><h6>
-<a name="id3200492"></a>
+<a name="id2947075"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -88,7 +88,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.precondition_"></a><h6>
-<a name="id3200603"></a>
+<a name="id2947186"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -102,7 +102,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.complexity"></a><h6>
-<a name="id3200710"></a>
+<a name="id2947292"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.range_algorithm_mutating_algorithms.copy_backward.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - fill</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.fill.prototype"></a><h6>
-<a name="id3200782"></a>
+<a name="id2947365"></a>
             <a class="link" href="fill.html#range.reference.algorithms.range_algorithm_mutating_algorithms.fill.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.fill.description"></a><h6>
-<a name="id3201031"></a>
+<a name="id2947614"></a>
             <a class="link" href="fill.html#range.reference.algorithms.range_algorithm_mutating_algorithms.fill.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             in the range <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.fill.definition"></a><h6>
-<a name="id3201091"></a>
+<a name="id2947673"></a>
             <a class="link" href="fill.html#range.reference.algorithms.range_algorithm_mutating_algorithms.fill.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">fill</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.fill.requirements"></a><h6>
-<a name="id3201165"></a>
+<a name="id2947747"></a>
             <a class="link" href="fill.html#range.reference.algorithms.range_algorithm_mutating_algorithms.fill.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -82,7 +82,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.fill.complexity"></a><h6>
-<a name="id3201279"></a>
+<a name="id2947862"></a>
             <a class="link" href="fill.html#range.reference.algorithms.range_algorithm_mutating_algorithms.fill.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - generate</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.generate.prototype"></a><h6>
-<a name="id3201351"></a>
+<a name="id2947933"></a>
             <a class="link" href="generate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.generate.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.generate.description"></a><h6>
-<a name="id3201594"></a>
+<a name="id2948176"></a>
             <a class="link" href="generate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.generate.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             Returns the resultant range.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.generate.definition"></a><h6>
-<a name="id3201658"></a>
+<a name="id2948241"></a>
             <a class="link" href="generate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.generate.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">generate</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.generate.requirements"></a><h6>
-<a name="id3201733"></a>
+<a name="id2948315"></a>
             <a class="link" href="generate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.generate.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -84,7 +84,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.generate.precondition_"></a><h6>
-<a name="id3201860"></a>
+<a name="id2948442"></a>
             <a class="link" href="generate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.generate.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -98,7 +98,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.generate.complexity"></a><h6>
-<a name="id3201966"></a>
+<a name="id2948549"></a>
             <a class="link" href="generate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.generate.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - inplace_merge</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.prototype"></a><h6>
-<a name="id3202038"></a>
+<a name="id2948621"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.prototype">Prototype</a>
           </h6>
 <p>
@@ -59,7 +59,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.description"></a><h6>
-<a name="id3202602"></a>
+<a name="id2949185"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.description">Description</a>
           </h6>
 <p>
@@ -72,14 +72,14 @@
             input range is preserved.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.definition"></a><h6>
-<a name="id3202830"></a>
+<a name="id2949412"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">inplace_merge</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.requirements"></a><h6>
-<a name="id3202904"></a>
+<a name="id2949487"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.requirements">Requirements</a>
           </h6>
 <p>
@@ -116,11 +116,11 @@
             argument types.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.precondition_"></a><h6>
-<a name="id3203160"></a>
+<a name="id2949742"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.precondition_">Precondition:</a>
           </h6>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.for_the_non_predicate_version_"></a><h6>
-<a name="id3203184"></a>
+<a name="id2949767"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.for_the_non_predicate_version_">For
             the non-predicate version:</a>
           </h6>
@@ -143,7 +143,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.for_the_predicate_version_"></a><h6>
-<a name="id3203446"></a>
+<a name="id2950029"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.for_the_predicate_version_">For
             the predicate version:</a>
           </h6>
@@ -164,7 +164,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.complexity"></a><h6>
-<a name="id3203729"></a>
+<a name="id2950312"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.inplace_merge.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - merge</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.prototype"></a><h6>
-<a name="id3203814"></a>
+<a name="id2950396"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <span class="identifier">OutputIterator</span> <span class="identifier">merge</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">SinglePassRange1</span><span class="special">&amp;</span> <span class="identifier">rng1</span><span class="special">,</span>
                      <span class="keyword">const</span> <span class="identifier">SinglePassRange2</span><span class="special">&amp;</span> <span class="identifier">rng2</span><span class="special">,</span>
                      <span class="identifier">OutputIterator</span> <span class="identifier">out</span><span class="special">);</span>
-
+
 <span class="keyword">template</span><span class="special">&lt;</span>
     <span class="keyword">class</span> <span class="identifier">SinglePassRange1</span><span class="special">,</span>
     <span class="keyword">class</span> <span class="identifier">SinglePassRange2</span><span class="special">,</span>
@@ -57,7 +57,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.description"></a><h6>
-<a name="id3204165"></a>
+<a name="id2950748"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.description">Description</a>
           </h6>
 <p>
@@ -76,14 +76,14 @@
             version uses the predicate instead of <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;()</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.definition"></a><h6>
-<a name="id3204349"></a>
+<a name="id2950931"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">merge</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.requirements"></a><h6>
-<a name="id3204423"></a>
+<a name="id2951005"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.requirements">Requirements</a>
           </h6>
 <p>
@@ -151,11 +151,11 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.precondition_"></a><h6>
-<a name="id3204928"></a>
+<a name="id2951510"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.precondition_">Precondition:</a>
           </h6>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.for_the_non_predicate_version_"></a><h6>
-<a name="id3204952"></a>
+<a name="id2951534"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.for_the_non_predicate_version_">For
             the non-predicate version:</a>
           </h6>
@@ -190,19 +190,19 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.for_the_predicate_version_"></a><h6>
-<a name="id3205413"></a>
+<a name="id2951995"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.for_the_predicate_version_">For
             the predicate version:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
               The elements of <code class="computeroutput"><span class="identifier">rng1</span></code>
- is in ascending order. That is, for each adjacent element pair <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, of <code class="computeroutput"><span class="identifier">rng1</span></code>,
+ are in ascending order. That is, for each adjacent element pair <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, of <code class="computeroutput"><span class="identifier">rng1</span></code>,
               <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">false</span></code>.
             </li>
 <li class="listitem">
               The elements of <code class="computeroutput"><span class="identifier">rng2</span></code>
- is in ascending order. That is, for each adjacent element pair <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, of <code class="computeroutput"><span class="identifier">rng2</span></code>,
+ are in ascending order. That is, for each adjacent element pair <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, of <code class="computeroutput"><span class="identifier">rng2</span></code>,
               <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">false</span></code>.
             </li>
 <li class="listitem">
@@ -221,7 +221,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.merge.complexity"></a><h6>
-<a name="id3205897"></a>
+<a name="id2952479"></a>
             <a class="link" href="merge.html#range.reference.algorithms.range_algorithm_mutating_algorithms.merge.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - nth_element</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.prototype"></a><h6>
-<a name="id3206028"></a>
+<a name="id2952610"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.prototype">Prototype</a>
           </h6>
 <p>
@@ -55,7 +55,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.description"></a><h6>
-<a name="id3206521"></a>
+<a name="id2953103"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.description">Description</a>
           </h6>
 <p>
@@ -66,14 +66,14 @@
             is the same as the element that would be in that position if <code class="computeroutput"><span class="identifier">rng</span></code> has been sorted.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.definition"></a><h6>
-<a name="id3206605"></a>
+<a name="id2953187"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">nth_element</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.requirements"></a><h6>
-<a name="id3206679"></a>
+<a name="id2953261"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.requirements">Requirements</a>
           </h6>
 <p>
@@ -124,7 +124,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.complexity"></a><h6>
-<a name="id3206915"></a>
+<a name="id2953497"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.range_algorithm_mutating_algorithms.nth_element.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - partial_sort</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.prototype"></a><h6>
-<a name="id3206986"></a>
+<a name="id2953568"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.prototype">Prototype</a>
           </h6>
 <p>
@@ -55,7 +55,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.description"></a><h6>
-<a name="id3207480"></a>
+<a name="id2954062"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.description">Description</a>
           </h6>
 <p>
@@ -71,14 +71,14 @@
             predicate instead.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.definition"></a><h6>
-<a name="id3207667"></a>
+<a name="id2954249"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">partial_sort</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.requirements"></a><h6>
-<a name="id3207741"></a>
+<a name="id2954324"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.requirements">Requirements</a>
           </h6>
 <p>
@@ -129,7 +129,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.complexity"></a><h6>
-<a name="id3207979"></a>
+<a name="id2954561"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partial_sort.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - partition</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partition.prototype"></a><h6>
-<a name="id3208103"></a>
+<a name="id2954685"></a>
             <a class="link" href="partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partition.prototype">Prototype</a>
           </h6>
 <p>
@@ -67,7 +67,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partition.description"></a><h6>
-<a name="id3208689"></a>
+<a name="id2955271"></a>
             <a class="link" href="partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partition.description">Description</a>
           </h6>
 <p>
@@ -81,14 +81,14 @@
             corresponds to the middle iterator.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partition.definition"></a><h6>
-<a name="id3208776"></a>
+<a name="id2955358"></a>
             <a class="link" href="partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partition.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">partition</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partition.requirements"></a><h6>
-<a name="id3208849"></a>
+<a name="id2955432"></a>
             <a class="link" href="partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partition.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -108,7 +108,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.partition.complexity"></a><h6>
-<a name="id3208951"></a>
+<a name="id2955533"></a>
             <a class="link" href="partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.partition.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - random_shuffle</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.prototype"></a><h6>
-<a name="id3209069"></a>
+<a name="id2955651"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.description"></a><h6>
-<a name="id3209460"></a>
+<a name="id2956042"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.description">Description</a>
           </h6>
 <p>
@@ -61,14 +61,14 @@
             the shuffles range.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.definition"></a><h6>
-<a name="id3209556"></a>
+<a name="id2956138"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">random_shuffle</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.requirements"></a><h6>
-<a name="id3209631"></a>
+<a name="id2956213"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.requirements">Requirements</a>
           </h6>
 <p>
@@ -99,7 +99,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.precondition_"></a><h6>
-<a name="id3209778"></a>
+<a name="id2956361"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
@@ -108,7 +108,7 @@
               maximum value.
             </li></ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.complexity"></a><h6>
-<a name="id3209844"></a>
+<a name="id2956426"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.range_algorithm_mutating_algorithms.random_shuffle.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - remove</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove.prototype"></a><h6>
-<a name="id3209956"></a>
+<a name="id2956538"></a>
             <a class="link" href="remove.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove.prototype">Prototype</a>
           </h6>
 <p>
@@ -67,7 +67,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove.description"></a><h6>
-<a name="id3210578"></a>
+<a name="id2957161"></a>
             <a class="link" href="remove.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove.description">Description</a>
           </h6>
 <p>
@@ -84,14 +84,14 @@
             are dereferenceable, but the elements are unspecified.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove.definition"></a><h6>
-<a name="id3210816"></a>
+<a name="id2957399"></a>
             <a class="link" href="remove.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">remove</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove.requirements"></a><h6>
-<a name="id3210890"></a>
+<a name="id2957473"></a>
             <a class="link" href="remove.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -114,7 +114,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove.complexity"></a><h6>
-<a name="id3211006"></a>
+<a name="id2957588"></a>
             <a class="link" href="remove.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - remove_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.prototype"></a><h6>
-<a name="id3211090"></a>
+<a name="id2957672"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -67,7 +67,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.description"></a><h6>
-<a name="id3211674"></a>
+<a name="id2958256"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.description">Description</a>
           </h6>
 <p>
@@ -83,14 +83,14 @@
             are unspecified.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.definition"></a><h6>
-<a name="id3211906"></a>
+<a name="id2958488"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">remove_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.requirements"></a><h6>
-<a name="id3211980"></a>
+<a name="id2958562"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -113,7 +113,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.complexity"></a><h6>
-<a name="id3212097"></a>
+<a name="id2958679"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.remove_if.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - replace</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace.prototype"></a><h6>
-<a name="id3212190"></a>
+<a name="id2958772"></a>
             <a class="link" href="replace.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace.description"></a><h6>
-<a name="id3212507"></a>
+<a name="id2959089"></a>
             <a class="link" href="replace.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace.description">Description</a>
           </h6>
 <p>
@@ -58,14 +58,14 @@
             Return a reference to <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace.definition"></a><h6>
-<a name="id3212588"></a>
+<a name="id2959171"></a>
             <a class="link" href="replace.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">replace</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace.requirements"></a><h6>
-<a name="id3212662"></a>
+<a name="id2959245"></a>
             <a class="link" href="replace.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -94,7 +94,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace.complexity"></a><h6>
-<a name="id3212814"></a>
+<a name="id2959397"></a>
             <a class="link" href="replace.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - replace_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.prototype"></a><h6>
-<a name="id3212924"></a>
+<a name="id2959506"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.description"></a><h6>
-<a name="id3213249"></a>
+<a name="id2959831"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             Returns a reference to <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.definition"></a><h6>
-<a name="id3213366"></a>
+<a name="id2959948"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">replace_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.requirements"></a><h6>
-<a name="id3213441"></a>
+<a name="id2960024"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -91,7 +91,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.complexity"></a><h6>
-<a name="id3213609"></a>
+<a name="id2960192"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.range_algorithm_mutating_algorithms.replace_if.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - rotate</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.prototype"></a><h6>
-<a name="id3213728"></a>
+<a name="id2960310"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.prototype">Prototype</a>
           </h6>
 <p>
@@ -45,7 +45,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.description"></a><h6>
-<a name="id3213989"></a>
+<a name="id2960572"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.description">Description</a>
           </h6>
 <p>
@@ -54,14 +54,14 @@
             and <code class="computeroutput"><span class="special">[</span><span class="identifier">middle</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">rng</span><span class="special">))</span></code>. Returns a reference to <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.definition"></a><h6>
-<a name="id3214117"></a>
+<a name="id2960700"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">rotate</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.requirements"></a><h6>
-<a name="id3214192"></a>
+<a name="id2960774"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -75,7 +75,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.precondition_"></a><h6>
-<a name="id3214256"></a>
+<a name="id2960838"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -87,7 +87,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.complexity"></a><h6>
-<a name="id3214366"></a>
+<a name="id2960949"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.range_algorithm_mutating_algorithms.rotate.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - sort</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.sort.prototype"></a><h6>
-<a name="id3214439"></a>
+<a name="id2961022"></a>
             <a class="link" href="sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.sort.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.sort.description"></a><h6>
-<a name="id3214822"></a>
+<a name="id2961405"></a>
             <a class="link" href="sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.sort.description">Description</a>
           </h6>
 <p>
@@ -72,14 +72,14 @@
             <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">false</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.sort.definition"></a><h6>
-<a name="id3215077"></a>
+<a name="id2961659"></a>
             <a class="link" href="sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.sort.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">sort</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.sort.requirements"></a><h6>
-<a name="id3215150"></a>
+<a name="id2961733"></a>
             <a class="link" href="sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.sort.requirements">Requirements</a>
           </h6>
 <p>
@@ -130,7 +130,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.sort.complexity"></a><h6>
-<a name="id3215387"></a>
+<a name="id2961969"></a>
             <a class="link" href="sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.sort.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - stable_partition</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.prototype"></a><h6>
-<a name="id3215508"></a>
+<a name="id2962090"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.prototype">Prototype</a>
           </h6>
 <p>
@@ -61,7 +61,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.description"></a><h6>
-<a name="id3216089"></a>
+<a name="id2962672"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.description">Description</a>
           </h6>
 <p>
@@ -71,7 +71,7 @@
             Once this function has completed all of the elements that satisfy <code class="computeroutput"><span class="identifier">pred</span></code> appear before all of the elements
             that fail to satisfy it. <code class="computeroutput"><span class="identifier">stable_partition</span></code>
             differs from <code class="computeroutput"><span class="identifier">partition</span></code>
- because it preserves relative order. It is table.
+ because it preserves relative order. It is stable.
           </p>
 <p>
             For the versions that return an iterator, the return value is the iterator
@@ -83,14 +83,14 @@
             the iterator to the first element that fails to satisfy <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.definition"></a><h6>
-<a name="id3216242"></a>
+<a name="id2962825"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">stable_partition</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.requirements"></a><h6>
-<a name="id3216318"></a>
+<a name="id2962900"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -108,7 +108,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.complexity"></a><h6>
-<a name="id3216409"></a>
+<a name="id2962991"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_partition.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - stable_sort</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.prototype"></a><h6>
-<a name="id3216584"></a>
+<a name="id2963166"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.description"></a><h6>
-<a name="id3216967"></a>
+<a name="id2963549"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.description">Description</a>
           </h6>
 <p>
@@ -72,14 +72,14 @@
             <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span><span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">false</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.definition"></a><h6>
-<a name="id3217221"></a>
+<a name="id2963804"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">stable_sort</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.requirements"></a><h6>
-<a name="id3217296"></a>
+<a name="id2963879"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.requirements">Requirements</a>
           </h6>
 <p>
@@ -130,7 +130,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.complexity"></a><h6>
-<a name="id3217533"></a>
+<a name="id2964116"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.range_algorithm_mutating_algorithms.stable_sort.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - transform</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.transform.prototype"></a><h6>
-<a name="id3217722"></a>
+<a name="id2964305"></a>
             <a class="link" href="transform.html#range.reference.algorithms.range_algorithm_mutating_algorithms.transform.prototype">Prototype</a>
           </h6>
 <p>
@@ -57,7 +57,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.transform.description"></a><h6>
-<a name="id3218064"></a>
+<a name="id2964646"></a>
             <a class="link" href="transform.html#range.reference.algorithms.range_algorithm_mutating_algorithms.transform.description">Description</a>
           </h6>
 <p>
@@ -93,14 +93,14 @@
             The return value is <code class="computeroutput"><span class="identifier">out</span> <span class="special">+</span> <span class="identifier">min</span><span class="special">(</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng1</span><span class="special">),</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng2</span><span class="special">))</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.transform.definition"></a><h6>
-<a name="id3218616"></a>
+<a name="id2965199"></a>
             <a class="link" href="transform.html#range.reference.algorithms.range_algorithm_mutating_algorithms.transform.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">transform</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.transform.requirements"></a><h6>
-<a name="id3218691"></a>
+<a name="id2965273"></a>
             <a class="link" href="transform.html#range.reference.algorithms.range_algorithm_mutating_algorithms.transform.requirements">Requirements</a>
           </h6>
 <p>
@@ -170,7 +170,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.transform.precondition_"></a><h6>
-<a name="id3219045"></a>
+<a name="id2965628"></a>
             <a class="link" href="transform.html#range.reference.algorithms.range_algorithm_mutating_algorithms.transform.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -202,7 +202,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.transform.complexity"></a><h6>
-<a name="id3219462"></a>
+<a name="id2966044"></a>
             <a class="link" href="transform.html#range.reference.algorithms.range_algorithm_mutating_algorithms.transform.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - unique</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.unique.prototype"></a><h6>
-<a name="id3219589"></a>
+<a name="id2966171"></a>
             <a class="link" href="unique.html#range.reference.algorithms.range_algorithm_mutating_algorithms.unique.prototype">Prototype</a>
           </h6>
 <p>
@@ -69,7 +69,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.unique.description"></a><h6>
-<a name="id3220621"></a>
+<a name="id2967204"></a>
             <a class="link" href="unique.html#range.reference.algorithms.range_algorithm_mutating_algorithms.unique.description">Description</a>
           </h6>
 <p>
@@ -87,14 +87,14 @@
             type.
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.unique.definition"></a><h6>
-<a name="id3220745"></a>
+<a name="id2967328"></a>
             <a class="link" href="unique.html#range.reference.algorithms.range_algorithm_mutating_algorithms.unique.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">unique</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.unique.requirements"></a><h6>
-<a name="id3220821"></a>
+<a name="id2967403"></a>
             <a class="link" href="unique.html#range.reference.algorithms.range_algorithm_mutating_algorithms.unique.requirements">Requirements</a>
           </h6>
 <p>
@@ -138,7 +138,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_mutating_algorithms.unique.complexity"></a><h6>
-<a name="id3221034"></a>
+<a name="id2967617"></a>
             <a class="link" href="unique.html#range.reference.algorithms.range_algorithm_mutating_algorithms.unique.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           erase</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.erase.prototype"></a><h6>
-<a name="id3255065"></a>
+<a name="id3001648"></a>
             <a class="link" href="erase.html#range.reference.algorithms.range_algorithm_new_algorithms.erase.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.erase.description"></a><h6>
-<a name="id3255222"></a>
+<a name="id3001804"></a>
             <a class="link" href="erase.html#range.reference.algorithms.range_algorithm_new_algorithms.erase.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.erase.definition"></a><h6>
-<a name="id3255282"></a>
+<a name="id3001865"></a>
             <a class="link" href="erase.html#range.reference.algorithms.range_algorithm_new_algorithms.erase.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.erase.requirements"></a><h6>
-<a name="id3255357"></a>
+<a name="id3001939"></a>
             <a class="link" href="erase.html#range.reference.algorithms.range_algorithm_new_algorithms.erase.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@@ -68,7 +68,7 @@
               erase of an iterator range.
             </li></ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.erase.complexity"></a><h6>
-<a name="id3255402"></a>
+<a name="id3001985"></a>
             <a class="link" href="erase.html#range.reference.algorithms.range_algorithm_new_algorithms.erase.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           for_each</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.for_each.prototype"></a><h6>
-<a name="id3255474"></a>
+<a name="id3002057"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_new_algorithms.for_each.prototype">Prototype</a>
           </h6>
 <p>
@@ -73,7 +73,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.for_each.description"></a><h6>
-<a name="id3256058"></a>
+<a name="id3002641"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_new_algorithms.for_each.description">Description</a>
           </h6>
 <p>
@@ -89,14 +89,14 @@
             It is safe to call this function with unequal length ranges.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.for_each.definition"></a><h6>
-<a name="id3256222"></a>
+<a name="id3002805"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_new_algorithms.for_each.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.for_each.requirements"></a><h6>
-<a name="id3256297"></a>
+<a name="id3002880"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_new_algorithms.for_each.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -126,7 +126,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.for_each.complexity"></a><h6>
-<a name="id3256453"></a>
+<a name="id3003035"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_new_algorithms.for_each.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           insert</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.insert.prototype"></a><h6>
-<a name="id3256563"></a>
+<a name="id3003146"></a>
             <a class="link" href="insert.html#range.reference.algorithms.range_algorithm_new_algorithms.insert.prototype">Prototype</a>
           </h6>
 <p>
@@ -45,7 +45,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.insert.description"></a><h6>
-<a name="id3256730"></a>
+<a name="id3003312"></a>
             <a class="link" href="insert.html#range.reference.algorithms.range_algorithm_new_algorithms.insert.description">Description</a>
           </h6>
 <p>
@@ -55,14 +55,14 @@
             <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.insert.definition"></a><h6>
-<a name="id3256802"></a>
+<a name="id3003385"></a>
             <a class="link" href="insert.html#range.reference.algorithms.range_algorithm_new_algorithms.insert.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">insert</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.insert.requirements"></a><h6>
-<a name="id3256876"></a>
+<a name="id3003459"></a>
             <a class="link" href="insert.html#range.reference.algorithms.range_algorithm_new_algorithms.insert.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -82,7 +82,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.insert.complexity"></a><h6>
-<a name="id3256971"></a>
+<a name="id3003554"></a>
             <a class="link" href="insert.html#range.reference.algorithms.range_algorithm_new_algorithms.insert.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           overwrite</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.overwrite.prototype"></a><h6>
-<a name="id3257045"></a>
+<a name="id3003628"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.range_algorithm_new_algorithms.overwrite.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.overwrite.description"></a><h6>
-<a name="id3257184"></a>
+<a name="id3003767"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.range_algorithm_new_algorithms.overwrite.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             into the range <code class="computeroutput"><span class="identifier">to</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.overwrite.definition"></a><h6>
-<a name="id3257245"></a>
+<a name="id3003828"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.range_algorithm_new_algorithms.overwrite.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">overwrite</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.overwrite.requirements"></a><h6>
-<a name="id3257320"></a>
+<a name="id3003902"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.range_algorithm_new_algorithms.overwrite.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -87,7 +87,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.overwrite.complexity"></a><h6>
-<a name="id3257490"></a>
+<a name="id3004073"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.range_algorithm_new_algorithms.overwrite.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           push_back</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_back.prototype"></a><h6>
-<a name="id3257564"></a>
+<a name="id3004146"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.range_algorithm_new_algorithms.push_back.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_back.description"></a><h6>
-<a name="id3257702"></a>
+<a name="id3004285"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.range_algorithm_new_algorithms.push_back.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             to the back of the container <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_back.definition"></a><h6>
-<a name="id3257764"></a>
+<a name="id3004346"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.range_algorithm_new_algorithms.push_back.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">push_back</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_back.requirements"></a><h6>
-<a name="id3257839"></a>
+<a name="id3004422"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.range_algorithm_new_algorithms.push_back.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -80,7 +80,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_back.complexity"></a><h6>
-<a name="id3257948"></a>
+<a name="id3004531"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.range_algorithm_new_algorithms.push_back.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           push_front</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_front.prototype"></a><h6>
-<a name="id3258022"></a>
+<a name="id3004604"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.range_algorithm_new_algorithms.push_front.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_front.description"></a><h6>
-<a name="id3258160"></a>
+<a name="id3004742"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.range_algorithm_new_algorithms.push_front.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             to the front of the container <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_front.definition"></a><h6>
-<a name="id3258221"></a>
+<a name="id3004804"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.range_algorithm_new_algorithms.push_front.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">push_front</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_front.requirements"></a><h6>
-<a name="id3258296"></a>
+<a name="id3004878"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.range_algorithm_new_algorithms.push_front.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -80,7 +80,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.push_front.complexity"></a><h6>
-<a name="id3258405"></a>
+<a name="id3004988"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.range_algorithm_new_algorithms.push_front.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           remove_erase</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.prototype"></a><h6>
-<a name="id3258479"></a>
+<a name="id3005062"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.description"></a><h6>
-<a name="id3258617"></a>
+<a name="id3005199"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.description">Description</a>
           </h6>
 <p>
@@ -54,14 +54,14 @@
             algorithm which merely rearranges elements.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.definition"></a><h6>
-<a name="id3258678"></a>
+<a name="id3005261"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.requirements"></a><h6>
-<a name="id3258753"></a>
+<a name="id3005336"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@@ -69,7 +69,7 @@
               erase of an iterator range.
             </li></ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.complexity"></a><h6>
-<a name="id3258800"></a>
+<a name="id3005383"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           remove_erase_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.prototype"></a><h6>
-<a name="id3258872"></a>
+<a name="id3005455"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.description"></a><h6>
-<a name="id3259002"></a>
+<a name="id3005584"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.description">Description</a>
           </h6>
 <p>
@@ -55,14 +55,14 @@
             algorithm which merely rearranges elements.
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.definition"></a><h6>
-<a name="id3259088"></a>
+<a name="id3005671"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.requirements"></a><h6>
-<a name="id3259162"></a>
+<a name="id3005744"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -76,7 +76,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.complexity"></a><h6>
-<a name="id3259234"></a>
+<a name="id3005816"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.range_algorithm_new_algorithms.remove_erase_if.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           Range Algorithm - adjacent_find</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.prototype"></a><h6>
-<a name="id3221186"></a>
+<a name="id2967769"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.prototype">Prototype</a>
           </h6>
 <p>
@@ -77,7 +77,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.description"></a><h6>
-<a name="id3222176"></a>
+<a name="id2968758"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.description">Description</a>
           </h6>
 <p>
@@ -98,14 +98,14 @@
             is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.definition"></a><h6>
-<a name="id3222390"></a>
+<a name="id2968973"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">adjacent_find</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.requirements"></a><h6>
-<a name="id3222465"></a>
+<a name="id2969047"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.requirements">Requirements</a>
           </h6>
 <p>
@@ -143,7 +143,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.complexity"></a><h6>
-<a name="id3222650"></a>
+<a name="id2969233"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.adjacent_find.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           binary_search</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.prototype"></a><h6>
-<a name="id3222758"></a>
+<a name="id2969340"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.description"></a><h6>
-<a name="id3223041"></a>
+<a name="id2969624"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             range <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.definition"></a><h6>
-<a name="id3223114"></a>
+<a name="id2969697"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">binary_search</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.requirements"></a><h6>
-<a name="id3223189"></a>
+<a name="id2969772"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.requirements">Requirements</a>
           </h6>
 <p>
@@ -111,7 +111,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.precondition_"></a><h6>
-<a name="id3223449"></a>
+<a name="id2970031"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -129,7 +129,7 @@
             order according to the function object <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.complexity"></a><h6>
-<a name="id3223548"></a>
+<a name="id2970130"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.binary_search.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           count</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.prototype"></a><h6>
-<a name="id3223724"></a>
+<a name="id2970306"></a>
             <a class="link" href="count.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.prototype">Prototype</a>
           </h6>
 <p>
@@ -45,7 +45,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.description"></a><h6>
-<a name="id3224023"></a>
+<a name="id2970606"></a>
             <a class="link" href="count.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.description">Description</a>
           </h6>
 <p>
@@ -55,14 +55,14 @@
             is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.definition"></a><h6>
-<a name="id3224115"></a>
+<a name="id2970698"></a>
             <a class="link" href="count.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">count</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.requirements"></a><h6>
-<a name="id3224190"></a>
+<a name="id2970772"></a>
             <a class="link" href="count.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -85,7 +85,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.complexity"></a><h6>
-<a name="id3224319"></a>
+<a name="id2970901"></a>
             <a class="link" href="count.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.count.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           equal</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.prototype"></a><h6>
-<a name="id3224390"></a>
+<a name="id2970973"></a>
             <a class="link" href="equal.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.prototype">Prototype</a>
           </h6>
 <p>
@@ -53,7 +53,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.description"></a><h6>
-<a name="id3224679"></a>
+<a name="id2971261"></a>
             <a class="link" href="equal.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.description">Description</a>
           </h6>
 <p>
@@ -71,14 +71,14 @@
             considered equal in the predicate version if <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">)</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.definition"></a><h6>
-<a name="id3224923"></a>
+<a name="id2971506"></a>
             <a class="link" href="equal.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">equal</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.requirements"></a><h6>
-<a name="id3224998"></a>
+<a name="id2971581"></a>
             <a class="link" href="equal.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.requirements">Requirements</a>
           </h6>
 <p>
@@ -139,7 +139,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.complexity"></a><h6>
-<a name="id3225296"></a>
+<a name="id2971878"></a>
             <a class="link" href="equal.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           equal_range</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.prototype"></a><h6>
-<a name="id3225397"></a>
+<a name="id2971979"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.prototype">Prototype</a>
           </h6>
 <p>
@@ -71,7 +71,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.description"></a><h6>
-<a name="id3226278"></a>
+<a name="id2972861"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.description">Description</a>
           </h6>
 <p>
@@ -85,14 +85,14 @@
             is determined by <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.definition"></a><h6>
-<a name="id3226432"></a>
+<a name="id2973015"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">equal_range</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.requirements"></a><h6>
-<a name="id3226507"></a>
+<a name="id2973089"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.requirements">Requirements</a>
           </h6>
 <p>
@@ -143,7 +143,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.precondition_"></a><h6>
-<a name="id3226766"></a>
+<a name="id2973348"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -155,7 +155,7 @@
             is ordered in ascending order according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.complexity"></a><h6>
-<a name="id3226848"></a>
+<a name="id2973430"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.equal_range.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           find</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.prototype"></a><h6>
-<a name="id3227540"></a>
+<a name="id2974122"></a>
             <a class="link" href="find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.prototype">Prototype</a>
           </h6>
 <p>
@@ -61,7 +61,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.description"></a><h6>
-<a name="id3228119"></a>
+<a name="id2974701"></a>
             <a class="link" href="find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.description">Description</a>
           </h6>
 <p>
@@ -72,14 +72,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.definition"></a><h6>
-<a name="id3228244"></a>
+<a name="id2974827"></a>
             <a class="link" href="find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.requirements"></a><h6>
-<a name="id3228320"></a>
+<a name="id2974902"></a>
             <a class="link" href="find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -100,7 +100,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.complexity"></a><h6>
-<a name="id3228437"></a>
+<a name="id2975020"></a>
             <a class="link" href="find.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           find_end</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.prototype"></a><h6>
-<a name="id3228510"></a>
+<a name="id2975092"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.prototype">Prototype</a>
           </h6>
 <p>
@@ -96,7 +96,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.description"></a><h6>
-<a name="id3229857"></a>
+<a name="id2976440"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.description">Description</a>
           </h6>
 <p>
@@ -111,14 +111,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.definition"></a><h6>
-<a name="id3229993"></a>
+<a name="id2976576"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find_end</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.requirements"></a><h6>
-<a name="id3230068"></a>
+<a name="id2976650"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.requirements">Requirements</a>
           </h6>
 <p>
@@ -178,7 +178,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.complexity"></a><h6>
-<a name="id3230367"></a>
+<a name="id2976949"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_end.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           find_first_of</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.prototype"></a><h6>
-<a name="id3230549"></a>
+<a name="id2977132"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.prototype">Prototype</a>
           </h6>
 <p>
@@ -96,7 +96,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.description"></a><h6>
-<a name="id3231897"></a>
+<a name="id2978480"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.description">Description</a>
           </h6>
 <p>
@@ -116,14 +116,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.definition"></a><h6>
-<a name="id3232039"></a>
+<a name="id2978621"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find_first_of</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.requirements"></a><h6>
-<a name="id3232114"></a>
+<a name="id2978697"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.requirements">Requirements</a>
           </h6>
 <p>
@@ -177,7 +177,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.complexity"></a><h6>
-<a name="id3232371"></a>
+<a name="id2978954"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_first_of.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           find_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.prototype"></a><h6>
-<a name="id3232469"></a>
+<a name="id2979052"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -61,7 +61,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.description"></a><h6>
-<a name="id3233050"></a>
+<a name="id2979633"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.description">Description</a>
           </h6>
 <p>
@@ -76,14 +76,14 @@
             defines found in the same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.definition"></a><h6>
-<a name="id3233187"></a>
+<a name="id2979770"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.requirements"></a><h6>
-<a name="id3233262"></a>
+<a name="id2979844"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -102,7 +102,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.precondition_"></a><h6>
-<a name="id3233364"></a>
+<a name="id2979947"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -110,7 +110,7 @@
             <code class="computeroutput"><span class="identifier">rng</span></code>, <code class="computeroutput"><span class="special">*</span><span class="identifier">i</span></code> is in the domain of <code class="computeroutput"><span class="identifier">UnaryPredicate</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.complexity"></a><h6>
-<a name="id3233440"></a>
+<a name="id2980022"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.find_if.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           for_each</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.prototype"></a><h6>
-<a name="id3226951"></a>
+<a name="id2973533"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.prototype">Prototype</a>
           </h6>
 <p>
@@ -49,7 +49,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.description"></a><h6>
-<a name="id3227179"></a>
+<a name="id2973762"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.description">Description</a>
           </h6>
 <p>
@@ -59,14 +59,14 @@
             <code class="computeroutput"><span class="identifier">fun</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.definition"></a><h6>
-<a name="id3227264"></a>
+<a name="id2973846"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.requirements"></a><h6>
-<a name="id3227338"></a>
+<a name="id2973920"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -90,7 +90,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.complexity"></a><h6>
-<a name="id3227457"></a>
+<a name="id2974039"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.for_each.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           lexicographical_compare</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.prototype"></a><h6>
-<a name="id3233525"></a>
+<a name="id2980107"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.prototype">Prototype</a>
           </h6>
 <p>
@@ -53,7 +53,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.description"></a><h6>
-<a name="id3233815"></a>
+<a name="id2980398"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.description">Description</a>
           </h6>
 <p>
@@ -73,14 +73,14 @@
             predicate versions.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.definition"></a><h6>
-<a name="id3233997"></a>
+<a name="id2980579"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">lexicographical_compare</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.requirements"></a><h6>
-<a name="id3234072"></a>
+<a name="id2980656"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.requirements">Requirements</a>
           </h6>
 <p>
@@ -145,7 +145,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.complexity"></a><h6>
-<a name="id3234440"></a>
+<a name="id2981022"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lexicographical_compare.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           lower_bound</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.prototype"></a><h6>
-<a name="id3234552"></a>
+<a name="id2981135"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.prototype">Prototype</a>
           </h6>
 <p>
@@ -61,7 +61,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.description"></a><h6>
-<a name="id3235132"></a>
+<a name="id2981715"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.description">Description</a>
           </h6>
 <p>
@@ -84,14 +84,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.definition"></a><h6>
-<a name="id3235333"></a>
+<a name="id2981915"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">lower_bound</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.requirements"></a><h6>
-<a name="id3235407"></a>
+<a name="id2981990"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.requirements">Requirements</a>
           </h6>
 <p>
@@ -142,7 +142,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.precondition_"></a><h6>
-<a name="id3235667"></a>
+<a name="id2982250"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -160,7 +160,7 @@
             order according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.complexity"></a><h6>
-<a name="id3235766"></a>
+<a name="id2982349"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.lower_bound.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           max_element</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.prototype"></a><h6>
-<a name="id3235916"></a>
+<a name="id2982499"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.prototype">Prototype</a>
           </h6>
 <p>
@@ -84,7 +84,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.description"></a><h6>
-<a name="id3236912"></a>
+<a name="id2983495"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.description">Description</a>
           </h6>
 <p>
@@ -98,14 +98,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.definition"></a><h6>
-<a name="id3237016"></a>
+<a name="id2983599"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">max_element</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.requirements"></a><h6>
-<a name="id3237090"></a>
+<a name="id2983673"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.requirements">Requirements</a>
           </h6>
 <p>
@@ -142,7 +142,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.complexity"></a><h6>
-<a name="id3237264"></a>
+<a name="id2983846"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.max_element.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           min_element</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.prototype"></a><h6>
-<a name="id3237372"></a>
+<a name="id2983954"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.prototype">Prototype</a>
           </h6>
 <p>
@@ -84,7 +84,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.description"></a><h6>
-<a name="id3238369"></a>
+<a name="id2984951"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.description">Description</a>
           </h6>
 <p>
@@ -98,14 +98,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.definition"></a><h6>
-<a name="id3238472"></a>
+<a name="id2985055"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">min_element</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.requirements"></a><h6>
-<a name="id3238547"></a>
+<a name="id2985130"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.requirements">Requirements</a>
           </h6>
 <p>
@@ -142,7 +142,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.complexity"></a><h6>
-<a name="id3238721"></a>
+<a name="id2985304"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.min_element.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           mismatch</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.prototype"></a><h6>
-<a name="id3238829"></a>
+<a name="id2985412"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.prototype">Prototype</a>
           </h6>
 <p>
@@ -106,7 +106,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.description"></a><h6>
-<a name="id3240549"></a>
+<a name="id2987131"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.description">Description</a>
           </h6>
 <p>
@@ -124,14 +124,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.definition"></a><h6>
-<a name="id3240690"></a>
+<a name="id2987273"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">mismatch</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.requirements"></a><h6>
-<a name="id3240764"></a>
+<a name="id2987347"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.requirements">Requirements</a>
           </h6>
 <p>
@@ -192,14 +192,14 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.precondition_"></a><h6>
-<a name="id3241062"></a>
+<a name="id2987644"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.precondition_">Precondition:</a>
           </h6>
 <p>
             <code class="computeroutput"><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng2</span><span class="special">)</span> <span class="special">&gt;=</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng1</span><span class="special">)</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.complexity"></a><h6>
-<a name="id3241138"></a>
+<a name="id2987721"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.mismatch.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           search</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.prototype"></a><h6>
-<a name="id3241211"></a>
+<a name="id2987794"></a>
             <a class="link" href="search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.prototype">Prototype</a>
           </h6>
 <p>
@@ -96,7 +96,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.description"></a><h6>
-<a name="id3242562"></a>
+<a name="id2989144"></a>
             <a class="link" href="search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.description">Description</a>
           </h6>
 <p>
@@ -115,14 +115,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.definition"></a><h6>
-<a name="id3242738"></a>
+<a name="id2989320"></a>
             <a class="link" href="search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">search</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.requirements"></a><h6>
-<a name="id3242812"></a>
+<a name="id2989395"></a>
             <a class="link" href="search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.requirements">Requirements</a>
           </h6>
 <p>
@@ -183,7 +183,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.complexity"></a><h6>
-<a name="id3243111"></a>
+<a name="id2989693"></a>
             <a class="link" href="search.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.search.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           upper_bound</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.prototype"></a><h6>
-<a name="id3243161"></a>
+<a name="id2989743"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.prototype">Prototype</a>
           </h6>
 <p>
@@ -61,7 +61,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.description"></a><h6>
-<a name="id3243740"></a>
+<a name="id2990323"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.description">Description</a>
           </h6>
 <p>
@@ -83,14 +83,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.definition"></a><h6>
-<a name="id3243945"></a>
+<a name="id2990527"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">upper_bound</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.requirements"></a><h6>
-<a name="id3244020"></a>
+<a name="id2990602"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.requirements">Requirements</a>
           </h6>
 <p>
@@ -141,7 +141,7 @@
             </li>
 </ul></div>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.precondition_"></a><h6>
-<a name="id3244279"></a>
+<a name="id2990862"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -159,7 +159,7 @@
             order according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.complexity"></a><h6>
-<a name="id3244377"></a>
+<a name="id2990960"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.range_algorithm_non_mutating_algorithms.upper_bound.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/accumulate.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           accumulate</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_numeric.accumulate.prototype"></a><h6>
-<a name="id3259323"></a>
+<a name="id3005906"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.prototype">Prototype</a>
           </h6>
 <p>
@@ -53,7 +53,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_numeric.accumulate.description"></a><h6>
-<a name="id3259589"></a>
+<a name="id3006172"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.description">Description</a>
           </h6>
 <p>
@@ -64,18 +64,18 @@
             The return value is the resultant value of the above algorithm.
           </p>
 <a name="range.reference.algorithms.range_numeric.accumulate.definition"></a><h6>
-<a name="id3259669"></a>
+<a name="id3006252"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_numeric.accumulate.requirements"></a><h6>
-<a name="id3259733"></a>
+<a name="id3006316"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.requirements">Requirements</a>
           </h6>
 <a name="range.reference.algorithms.range_numeric.accumulate.for_the_first_version"></a><h6>
-<a name="id3259756"></a>
+<a name="id3006339"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.for_the_first_version">For
             the first version</a>
           </h6>
@@ -100,7 +100,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_numeric.accumulate.for_the_second_version"></a><h6>
-<a name="id3259894"></a>
+<a name="id3006477"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.for_the_second_version">For
             the second version</a>
           </h6>
@@ -134,7 +134,7 @@
             </li>
 </ol></div>
 <a name="range.reference.algorithms.range_numeric.accumulate.complexity"></a><h6>
-<a name="id3260078"></a>
+<a name="id3006661"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.range_numeric.accumulate.complexity">Complexity</a>
           </h6>
 <p>

Copied: branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html (from r60898, /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html)
==============================================================================
--- /trunk/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html (original)
+++ branches/release/libs/range/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html 2010-04-04 16:00:13 EDT (Sun, 04 Apr 2010)
@@ -28,7 +28,7 @@
           adjacent_difference</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.range_numeric.adjacent_difference.prototype"></a><h6>
-<a name="id3260149"></a>
+<a name="id3006732"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.range_numeric.adjacent_difference.prototype">Prototype</a>
           </h6>
 <p>
@@ -55,7 +55,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.range_numeric.adjacent_difference.description"></a><h6>
-<a name="id3260417"></a>
+<a name="id3007000"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.range_numeric.adjacent_difference.description">Description</a>
           </h6>
 <p>
@@ -69,18 +69,18 @@
             instead of <code class="computeroutput"><span class="keyword">operator</span><span class="special">-()</span></code>.
           </p>
 <a name="range.reference.algorithms.range_numeric.adjacent_difference.definition"></a><h6>
-<a name="id3260522"></a>
+<a name="id3007105"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.range_numeric.adjacent_difference.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.range_numeric.adjacent_difference.requirements"></a><h6>
-<a name="id3260587"></a>
+<a name="id3007170"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.range_numeric.adjacent_difference.requirements">Requirements</a>