From a420ef96bc087f01e375ae91961a71b0baacdfef Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 5 Apr 2010 07:27:25 +0000 Subject: [PATCH 01/26] Rebuild the integer documentation. [SVN r61058] --- doc/html/index.html | 6 +- doc/html/quickbook_HTML.manifest | 1 + doc/html/range/concepts.html | 2 +- .../range/concepts/bidirectional_range.html | 18 ++-- doc/html/range/concepts/concept_checking.html | 4 +- doc/html/range/concepts/forward_range.html | 12 +-- doc/html/range/concepts/overview.html | 2 +- .../range/concepts/random_access_range.html | 14 +-- .../range/concepts/single_pass_range.html | 18 ++-- doc/html/range/examples.html | 2 +- doc/html/range/faq.html | 2 +- doc/html/range/history_ack.html | 2 +- doc/html/range/introduction.html | 2 +- doc/html/range/library_headers.html | 2 +- doc/html/range/mfc_atl.html | 6 +- doc/html/range/mfc_atl/atl_ranges.html | 2 +- doc/html/range/mfc_atl/const_ranges.html | 2 +- doc/html/range/mfc_atl/mfc_ranges.html | 2 +- doc/html/range/mfc_atl/references.html | 2 +- doc/html/range/mfc_atl/requirements.html | 2 +- doc/html/range/portability.html | 2 +- doc/html/range/reference.html | 2 +- doc/html/range/reference/adaptors.html | 2 +- .../adaptors_general_requirements.html | 2 +- .../adaptors/adaptors_introduction.html | 8 +- .../adaptors/adaptors_reference.html | 2 +- .../adaptors_reference/adjacent_filtered.html | 2 +- .../adaptors/adaptors_reference/copied.html | 2 +- .../adaptors/adaptors_reference/filtered.html | 2 +- .../adaptors/adaptors_reference/indexed.html | 2 +- .../adaptors_reference/indirected.html | 2 +- .../adaptors/adaptors_reference/map_keys.html | 2 +- .../adaptors_reference/map_values.html | 2 +- .../adaptors/adaptors_reference/replaced.html | 2 +- .../adaptors_reference/replaced_if.html | 2 +- .../adaptors/adaptors_reference/reversed.html | 2 +- .../adaptors/adaptors_reference/sliced.html | 2 +- .../adaptors/adaptors_reference/strided.html | 2 +- .../adaptors_reference/tokenized.html | 2 +- .../adaptors_reference/transformed.html | 2 +- .../adaptors/adaptors_reference/uniqued.html | 2 +- .../reference/adaptors/adaptors_synopsis.html | 2 +- doc/html/range/reference/algorithms.html | 2 +- .../reference/algorithms/heap_algorithms.html | 2 +- .../algorithms/heap_algorithms/make_heap.html | 12 +-- .../algorithms/heap_algorithms/pop_heap.html | 14 +-- .../algorithms/heap_algorithms/push_heap.html | 14 +-- .../algorithms/permutation_algorithms.html | 2 +- .../next_permutation.html | 12 +-- .../prev_permutation.html | 12 +-- .../range_algorithm_introduction.html | 2 +- .../range_algorithm_mutating_algorithms.html | 2 +- .../copy.html | 14 +-- .../copy_backward.html | 14 +-- .../fill.html | 12 +-- .../generate.html | 14 +-- .../inplace_merge.html | 18 ++-- .../merge.html | 18 ++-- .../nth_element.html | 12 +-- .../partial_sort.html | 12 +-- .../partition.html | 12 +-- .../random_shuffle.html | 14 +-- .../remove.html | 12 +-- .../remove_if.html | 12 +-- .../replace.html | 12 +-- .../replace_if.html | 12 +-- .../rotate.html | 14 +-- .../sort.html | 12 +-- .../stable_partition.html | 12 +-- .../stable_sort.html | 12 +-- .../transform.html | 14 +-- .../unique.html | 12 +-- .../range_algorithm_new_algorithms.html | 4 +- .../range_algorithm_new_algorithms/erase.html | 12 +-- .../for_each.html | 98 +++++-------------- .../insert.html | 18 ++-- .../overwrite.html | 18 ++-- .../push_back.html | 12 +-- .../push_front.html | 12 +-- .../remove_erase.html | 12 +-- .../remove_erase_if.html | 12 +-- ...nge_algorithm_non_mutating_algorithms.html | 2 +- .../adjacent_find.html | 12 +-- .../binary_search.html | 14 +-- .../count.html | 12 +-- .../equal.html | 12 +-- .../equal_range.html | 14 +-- .../find.html | 24 ++--- .../find_end.html | 42 ++------ .../find_first_of.html | 42 ++------ .../find_if.html | 26 ++--- .../for_each.html | 12 +-- .../lexicographical_compare.html | 12 +-- .../lower_bound.html | 26 ++--- .../max_element.html | 12 +-- .../min_element.html | 12 +-- .../mismatch.html | 14 +-- .../search.html | 12 +-- .../upper_bound.html | 26 ++--- .../reference/algorithms/range_numeric.html | 2 +- .../algorithms/range_numeric/accumulate.html | 16 +-- .../range_numeric/adjacent_difference.html | 18 ++-- .../range_numeric/inner_product.html | 18 ++-- .../algorithms/range_numeric/partial_sum.html | 18 ++-- .../reference/algorithms/set_algorithms.html | 2 +- .../algorithms/set_algorithms/includes.html | 14 +-- .../set_algorithms/set_difference.html | 14 +-- .../set_algorithms/set_intersection.html | 14 +-- .../set_symmetric_difference.html | 14 +-- .../algorithms/set_algorithms/set_union.html | 14 +-- doc/html/range/reference/extending.html | 2 +- .../range/reference/extending/method_1.html | 2 +- .../range/reference/extending/method_2.html | 2 +- .../range/reference/extending/method_3.html | 2 +- .../extending/method_3/method_3_1.html | 2 +- .../extending/method_3/method_3_2.html | 2 +- doc/html/range/reference/overview.html | 2 +- doc/html/range/reference/ranges.html | 2 +- .../reference/ranges/counting_range.html | 10 +- doc/html/range/reference/ranges/irange.html | 12 +-- .../range/reference/ranges/istream_range.html | 8 +- doc/html/range/reference/semantics.html | 4 +- .../range/reference/semantics/functions.html | 2 +- .../reference/semantics/metafunctions.html | 2 +- doc/html/range/reference/synopsis.html | 2 +- doc/html/range/style_guide.html | 2 +- doc/html/range/upgrade.html | 2 +- doc/html/range/upgrade/upgrade_from_1_34.html | 2 +- doc/html/range/upgrade/upgrade_from_1_42.html | 2 +- doc/html/range/utilities.html | 2 +- doc/html/range/utilities/iterator_range.html | 8 +- doc/html/range/utilities/join.html | 6 +- doc/html/range/utilities/sub_range.html | 4 +- 133 files changed, 542 insertions(+), 701 deletions(-) diff --git a/doc/html/index.html b/doc/html/index.html index 4f1a4a1..4acf487 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Range 2.0 - + @@ -30,7 +30,7 @@
-

+

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)

@@ -135,7 +135,7 @@

- +

Last revised: April 03, 2010 at 08:56:46 GMT

Last revised: April 04, 2010 at 23:38:19 GMT


diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index b3be8f5..982f745 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -91,6 +91,7 @@ range/reference/algorithms/range_algorithm_new_algorithms.html range/reference/algorithms/range_algorithm_new_algorithms/erase.html range/reference/algorithms/range_algorithm_new_algorithms/for_each.html range/reference/algorithms/range_algorithm_new_algorithms/insert.html +range/reference/algorithms/range_algorithm_new_algorithms/for_each.html range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html range/reference/algorithms/range_algorithm_new_algorithms/push_back.html range/reference/algorithms/range_algorithm_new_algorithms/push_front.html diff --git a/doc/html/range/concepts.html b/doc/html/range/concepts.html index c384122..c43b67c 100644 --- a/doc/html/range/concepts.html +++ b/doc/html/range/concepts.html @@ -3,7 +3,7 @@ Range Concepts - + diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 796ca14..b45f2dc 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -3,7 +3,7 @@ Bidirectional Range - + @@ -27,7 +27,7 @@ Bidirectional Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -75,7 +75,7 @@ Traversal Iterator.

- + Refinement of
@@ -83,7 +83,7 @@ Forward Range

- + Associated types
@@ -136,7 +136,7 @@
- + Valid expressions
@@ -221,7 +221,7 @@
- + Complexity guarantees
@@ -232,7 +232,7 @@ Forward Range.

- + Invariants
@@ -272,7 +272,7 @@
- + See also

diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index 37175b4..17c8795 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -3,7 +3,7 @@ Concept Checking - + @@ -79,7 +79,7 @@

- + See also

diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index 9076b68..7a96208 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -3,7 +3,7 @@ Forward Range - + @@ -27,7 +27,7 @@ Forward Range

- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,14 +73,14 @@ Traversal Iterator.

- + Refinement of

Single Pass Range

- + Associated types
@@ -132,7 +132,7 @@
- + See also

diff --git a/doc/html/range/concepts/overview.html b/doc/html/range/concepts/overview.html index 7cd19e8..c2bb4d1 100644 --- a/doc/html/range/concepts/overview.html +++ b/doc/html/range/concepts/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index 97b3171..fa7dc03 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -3,7 +3,7 @@ Random Access Range - + @@ -27,7 +27,7 @@ Random Access Range

- + Description

@@ -35,7 +35,7 @@ Access Traversal Iterator.

- + Refinement of
@@ -43,7 +43,7 @@ Bidirectional Range

- + Valid expressions
@@ -89,7 +89,7 @@
- + Expression semantics
@@ -139,7 +139,7 @@
- + Complexity guarantees
@@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

- + Invariants
diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 10669d1..0abd8fe 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -3,7 +3,7 @@ Single Pass Range - + @@ -27,7 +27,7 @@ Single Pass Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,7 +73,7 @@ Pass Iterator.

- + Associated types
@@ -126,7 +126,7 @@
- + Valid expressions
@@ -198,7 +198,7 @@
- + Expression semantics
@@ -266,7 +266,7 @@
- + Complexity guarantees
@@ -276,7 +276,7 @@ constant time.

- + Invariants
@@ -316,7 +316,7 @@
- + See also

diff --git a/doc/html/range/examples.html b/doc/html/range/examples.html index b272df8..f517040 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -3,7 +3,7 @@ Examples - + diff --git a/doc/html/range/faq.html b/doc/html/range/faq.html index 0c9d40b..a5ea15d 100644 --- a/doc/html/range/faq.html +++ b/doc/html/range/faq.html @@ -3,7 +3,7 @@ FAQ - + diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index 930b6b6..2401db3 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -3,7 +3,7 @@ History and Acknowledgement - + diff --git a/doc/html/range/introduction.html b/doc/html/range/introduction.html index 8bce31d..e28e9a9 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -3,7 +3,7 @@ Introduction - + diff --git a/doc/html/range/library_headers.html b/doc/html/range/library_headers.html index a5bd095..8f28283 100644 --- a/doc/html/range/library_headers.html +++ b/doc/html/range/library_headers.html @@ -3,7 +3,7 @@ Library Headers - + diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 8d5ed19..f475022 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -3,7 +3,7 @@ MFC/ATL (courtesy of Shunsuke Sogame) - + @@ -34,7 +34,7 @@

References
- + Introduction

@@ -100,7 +100,7 @@

- + Overview

diff --git a/doc/html/range/mfc_atl/atl_ranges.html b/doc/html/range/mfc_atl/atl_ranges.html index 65ee355..766375d 100644 --- a/doc/html/range/mfc_atl/atl_ranges.html +++ b/doc/html/range/mfc_atl/atl_ranges.html @@ -3,7 +3,7 @@ ATL Ranges - + diff --git a/doc/html/range/mfc_atl/const_ranges.html b/doc/html/range/mfc_atl/const_ranges.html index 2e047f6..222c6d8 100644 --- a/doc/html/range/mfc_atl/const_ranges.html +++ b/doc/html/range/mfc_atl/const_ranges.html @@ -3,7 +3,7 @@ const Ranges - + diff --git a/doc/html/range/mfc_atl/mfc_ranges.html b/doc/html/range/mfc_atl/mfc_ranges.html index af0c6e9..9e6d001 100644 --- a/doc/html/range/mfc_atl/mfc_ranges.html +++ b/doc/html/range/mfc_atl/mfc_ranges.html @@ -3,7 +3,7 @@ MFC Ranges - + diff --git a/doc/html/range/mfc_atl/references.html b/doc/html/range/mfc_atl/references.html index 124a538..8afe82a 100644 --- a/doc/html/range/mfc_atl/references.html +++ b/doc/html/range/mfc_atl/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/range/mfc_atl/requirements.html b/doc/html/range/mfc_atl/requirements.html index 131433f..c49ac8c 100644 --- a/doc/html/range/mfc_atl/requirements.html +++ b/doc/html/range/mfc_atl/requirements.html @@ -3,7 +3,7 @@ Requirements - + diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 901e0b1..63e3621 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -3,7 +3,7 @@ Portability - + diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index 70c17dc..a76673a 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index 5ab0ecd..bc68382 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -3,7 +3,7 @@ Range Adaptors - + diff --git a/doc/html/range/reference/adaptors/adaptors_general_requirements.html b/doc/html/range/reference/adaptors/adaptors_general_requirements.html index a815bae..ce2b17b 100644 --- a/doc/html/range/reference/adaptors/adaptors_general_requirements.html +++ b/doc/html/range/reference/adaptors/adaptors_general_requirements.html @@ -3,7 +3,7 @@ General Requirements - + diff --git a/doc/html/range/reference/adaptors/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html index efa54fd..a339728 100644 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ b/doc/html/range/reference/adaptors/adaptors_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

- + Composition of Adaptors
@@ -159,7 +159,7 @@ is the design solution to this problem.

- + Range Adaptor alternative to copy_if algorithm
@@ -176,7 +176,7 @@

- + Range Adaptor alternative to count_if algorithm
diff --git a/doc/html/range/reference/adaptors/adaptors_reference.html b/doc/html/range/reference/adaptors/adaptors_reference.html index d284888..5a3dae6 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference.html +++ b/doc/html/range/reference/adaptors/adaptors_reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html index fa763c8..df72e28 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html @@ -3,7 +3,7 @@ adjacent_filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/copied.html b/doc/html/range/reference/adaptors/adaptors_reference/copied.html index 650e29a..b488800 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/copied.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/copied.html @@ -3,7 +3,7 @@ copied - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html index 1551a9f..04d418d 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html @@ -3,7 +3,7 @@ filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html index d8c8674..03ec01b 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html @@ -3,7 +3,7 @@ indexed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html index adcd57a..391abcc 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html @@ -3,7 +3,7 @@ indirected - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html index 95c1746..7af39c9 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html @@ -3,7 +3,7 @@ map_keys - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html index 553a8f3..810ba7a 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html @@ -3,7 +3,7 @@ map_values - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html index 0990ede..6af8257 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html @@ -3,7 +3,7 @@ replaced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html index abcf00f..f916472 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html @@ -3,7 +3,7 @@ replaced_if - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html index 52f4cda..2ef6d5d 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html @@ -3,7 +3,7 @@ reversed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html index 9793092..8901fa0 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html @@ -3,7 +3,7 @@ sliced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/strided.html b/doc/html/range/reference/adaptors/adaptors_reference/strided.html index 6fcc281..ca37e60 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/strided.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/strided.html @@ -3,7 +3,7 @@ strided - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html index fc4bc42..0b294b2 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html @@ -3,7 +3,7 @@ tokenized - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html index 56a6170..1947b6d 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html @@ -3,7 +3,7 @@ transformed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html index 3b314ab..1f7d9fb 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html @@ -3,7 +3,7 @@ uniqued - + diff --git a/doc/html/range/reference/adaptors/adaptors_synopsis.html b/doc/html/range/reference/adaptors/adaptors_synopsis.html index d0fea59..202a114 100644 --- a/doc/html/range/reference/adaptors/adaptors_synopsis.html +++ b/doc/html/range/reference/adaptors/adaptors_synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index fc70d02..99e1dad 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -3,7 +3,7 @@ Range Algorithm - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms.html b/doc/html/range/reference/algorithms/heap_algorithms.html index 25c45e4..2cdbaaa 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms.html +++ b/doc/html/range/reference/algorithms/heap_algorithms.html @@ -3,7 +3,7 @@ Heap algorithms - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html index d8d4033..daf3ede 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html @@ -3,7 +3,7 @@ make_heap - + @@ -28,7 +28,7 @@ make_heap
- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -119,7 +119,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html index f1588b7..2fdd9a4 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html @@ -3,7 +3,7 @@ pop_heap - + @@ -28,7 +28,7 @@ pop_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html index 35b64ca..a8dadf9 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html @@ -3,7 +3,7 @@ push_heap - + @@ -28,7 +28,7 @@ push_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms.html b/doc/html/range/reference/algorithms/permutation_algorithms.html index 12e33f9..a9e2392 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms.html @@ -3,7 +3,7 @@ Permutation algorithms - + diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html index 8521343..4d7b26f 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html @@ -3,7 +3,7 @@ next_permutation - + @@ -28,7 +28,7 @@ next_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html index a1e0d1d..99ca8f6 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html @@ -3,7 +3,7 @@ prev_permutation - + @@ -28,7 +28,7 @@ prev_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_introduction.html b/doc/html/range/reference/algorithms/range_algorithm_introduction.html index 9f15ed5..f0aa6c4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_introduction.html +++ b/doc/html/range/reference/algorithms/range_algorithm_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html index 80710b0..fcd52d1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html @@ -3,7 +3,7 @@ Mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html index 0decd23..f8722a8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html @@ -3,7 +3,7 @@ Range Algorithm - copy - + @@ -28,7 +28,7 @@ Range Algorithm - copy

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -51,14 +51,14 @@ distance(source_rng)

- + Definition

Defined in the header file boost/range/algorithm/copy.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html index 541db9a..f37fe0c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html @@ -3,7 +3,7 @@ Range Algorithm - copy_backward - + @@ -28,7 +28,7 @@ Range Algorithm - copy_backward

- + Prototype

@@ -42,7 +42,7 @@

- + Description

@@ -60,14 +60,14 @@ denotes the end of the output sequence.

- + Definition

Defined in the header file boost/range/algorithm/copy_backward.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html index 4bb5340..71d7d01 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html @@ -3,7 +3,7 @@ Range Algorithm - fill - + @@ -28,7 +28,7 @@ Range Algorithm - fill

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ in the range rng.

- + Definition

Defined in the header file boost/range/algorithm/fill.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html index 1a5ba8a..1e41289 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html @@ -3,7 +3,7 @@ Range Algorithm - generate - + @@ -28,7 +28,7 @@ Range Algorithm - generate

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ Returns the resultant range.

- + Definition

Defined in the header file boost/range/algorithm/generate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html index fafc9d5..82521d9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html @@ -3,7 +3,7 @@ Range Algorithm - inplace_merge - + @@ -28,7 +28,7 @@ Range Algorithm - inplace_merge

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -72,14 +72,14 @@ input range is preserved.

- + Definition

Defined in the header file boost/range/algorithm/inplace_merge.hpp

- + Requirements

@@ -116,11 +116,11 @@ argument types.

- + Precondition:
- + For the non-predicate version:
@@ -143,7 +143,7 @@
- + For the predicate version:
@@ -164,7 +164,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html index 9bd570e..7077cd8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html @@ -3,7 +3,7 @@ Range Algorithm - merge - + @@ -28,7 +28,7 @@ Range Algorithm - merge

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -76,14 +76,14 @@ version uses the predicate instead of operator<().

- + Definition

Defined in the header file boost/range/algorithm/merge.hpp

- + Requirements

@@ -151,11 +151,11 @@

- + Precondition:
- + For the non-predicate version:
@@ -190,7 +190,7 @@
- + For the predicate version:
@@ -221,7 +221,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html index b8d27f0..24006c0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html @@ -3,7 +3,7 @@ Range Algorithm - nth_element - + @@ -28,7 +28,7 @@ Range Algorithm - nth_element

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -66,14 +66,14 @@ is the same as the element that would be in that position if rng has been sorted.

- + Definition

Defined in the header file boost/range/algorithm/nth_element.hpp

- + Requirements

@@ -124,7 +124,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html index d218c43..0fc0343 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html @@ -3,7 +3,7 @@ Range Algorithm - partial_sort - + @@ -28,7 +28,7 @@ Range Algorithm - partial_sort

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -71,14 +71,14 @@ predicate instead.

- + Definition

Defined in the header file boost/range/algorithm/partial_sort.hpp

- + Requirements

@@ -129,7 +129,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html index 4136a2a..76f6f5e 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html @@ -3,7 +3,7 @@ Range Algorithm - partition - + @@ -28,7 +28,7 @@ Range Algorithm - partition

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -81,14 +81,14 @@ corresponds to the middle iterator.

- + Definition

Defined in the header file boost/range/algorithm/partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html index 190f66f..908aff4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html @@ -3,7 +3,7 @@ Range Algorithm - random_shuffle - + @@ -28,7 +28,7 @@ Range Algorithm - random_shuffle

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the shuffles range.

- + Definition

Defined in the header file boost/range/algorithm/random_shuffle.hpp

- + Requirements

@@ -99,7 +99,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html index 4cb906c..22e7f61 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html @@ -3,7 +3,7 @@ Range Algorithm - remove - + @@ -28,7 +28,7 @@ Range Algorithm - remove

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -84,14 +84,14 @@ are dereferenceable, but the elements are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html index 9896adc..c984606 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html @@ -3,7 +3,7 @@ Range Algorithm - remove_if - + @@ -28,7 +28,7 @@ Range Algorithm - remove_if

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -83,14 +83,14 @@ are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html index ab4232d..463fb05 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html @@ -3,7 +3,7 @@ Range Algorithm - replace - + @@ -28,7 +28,7 @@ Range Algorithm - replace

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,14 +58,14 @@ Return a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html index 7677651..c1e8e7e 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html @@ -3,7 +3,7 @@ Range Algorithm - replace_if - + @@ -28,7 +28,7 @@ Range Algorithm - replace_if

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html index 55faad4..dd045fe 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html @@ -3,7 +3,7 @@ Range Algorithm - rotate - + @@ -28,7 +28,7 @@ Range Algorithm - rotate

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -54,14 +54,14 @@ and [middle, end(rng)). Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/rotate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html index 290f8e7..bfe26e0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html @@ -3,7 +3,7 @@ Range Algorithm - sort - + @@ -28,7 +28,7 @@ Range Algorithm - sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y, x) == false.

- + Definition

Defined in the header file boost/range/algorithm/sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html index eb0032a..5a7904f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html @@ -3,7 +3,7 @@ Range Algorithm - stable_partition - + @@ -28,7 +28,7 @@ Range Algorithm - stable_partition

- + Prototype

@@ -61,7 +61,7 @@

- + Description

@@ -83,14 +83,14 @@ the iterator to the first element that fails to satisfy pred.

- + Definition

Defined in the header file boost/range/algorithm/stable_partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html index 984024d..7459b12 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html @@ -3,7 +3,7 @@ Range Algorithm - stable_sort - + @@ -28,7 +28,7 @@ Range Algorithm - stable_sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y,x) == false.

- + Definition

Defined in the header file boost/range/algorithm/stable_sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html index 58da4ca..f574116 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html @@ -3,7 +3,7 @@ Range Algorithm - transform - + @@ -28,7 +28,7 @@ Range Algorithm - transform

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -93,14 +93,14 @@ The return value is out + min(distance(rng1), distance(rng2)).

- + Definition

Defined in the header file boost/range/algorithm/transform.hpp

- + Requirements

@@ -170,7 +170,7 @@

- + Precondition:

@@ -202,7 +202,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html index aaa5525..47bce04 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html @@ -3,7 +3,7 @@ Range Algorithm - unique - + @@ -28,7 +28,7 @@ Range Algorithm - unique

- + Prototype

@@ -69,7 +69,7 @@

- + Description

@@ -87,14 +87,14 @@ type.

- + Definition

Defined in the header file boost/range/algorithm/unique.hpp

- + Requirements

@@ -138,7 +138,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html index 7b34570..54db92f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html @@ -3,7 +3,7 @@ New algorithms - + @@ -34,6 +34,8 @@ for_each

insert
+
+ for_each
overwrite
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html index 3520dba..eca6ad8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html @@ -3,7 +3,7 @@ erase - + @@ -28,7 +28,7 @@ erase
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -68,7 +68,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html index 4a1cb75..b621761 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html @@ -3,11 +3,11 @@ for_each - + - - + + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext
@@ -28,110 +28,56 @@ for_each
- + Prototype

-
template<
-    class SinglePassRange1,
-    class SinglePassRange2,
-    class BinaryFunction
-    >
-BinaryFunction for_each(const SinglePassRange1& rng1,
-                        const SinglePassRange2& rng2,
-                        BinaryFunction fn);
-
-template<
-    class SinglePassRange1,
-    class SinglePassRange2,
-    class BinaryFunction
-    >
-BinaryFunction for_each(const SinglePassRange1& rng1,
-                        SinglePassRange2& rng2,
-                        BinaryFunction fn);
-
-template<
-    class SinglePassRange1,
-    class SinglePassRange2,
-    class BinaryFunction
-    >
-BinaryFunction for_each(SinglePassRange1& rng1,
-                        const SinglePassRange2& rng2,
-                        BinaryFunction fn);
-
-template<
-    class SinglePassRange1,
-    class SinglePassRange2,
-    class BinaryFunction
-    >
-BinaryFunction for_each(SinglePassRange1& rng1,
-                        SinglePassRange2& rng2,
-                        BinaryFunction fn);
+
template<class SinglePassRange, class Value>
+iota(SinglePassRange& rng, Value x);
 

- + Description

- for_each traverses forward - through rng1 and rng2 simultaneously. For each iteration, - the element x is used - from rng1 and the corresponding - element y is used from - rng2 to invoke fn(x,y). -

-

- Iteration is stopped upon reaching the end of the shorter of rng1, or rng2. - It is safe to call this function with unequal length ranges. + iota traverses forward + through rng, each element + y in rng + is assigned a value equivalent to x + + boost::distance(boost::begin(rng), it)

- + Definition

- Defined in the header file boost/range/algorithm_ext/for_each.hpp + Defined in the header file boost/range/algorithm_ext/iota.hpp

- + Requirements
  1. -SinglePassRange1 is +SinglePassRange is a model of the Single Pass Range Concept.
  2. -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
  3. -
  4. -BinaryFunction is a - model of the BinaryFunctionConcept. -
  5. -
  6. -SinglePassRange1's - value type is convertible to BinaryFunction's - first argument type. -
  7. -
  8. -SinglepassRange2's - value type is convertible to BinaryFunction's - second argument type. +Value is a model of + the Incrementable Concept.
- + Complexity

- Linear. Exactly min(distance(rng1), distance(rng2)) - applications of BinaryFunction. + Linear. Exactly distance(rng) assignments into rng.

@@ -144,7 +90,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html index fc06253..977a7c9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html @@ -3,11 +3,11 @@ insert - + - + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ insert
- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/insert.hpp

- + Requirements
    @@ -82,7 +82,7 @@
- + Complexity

@@ -100,7 +100,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html index b856c39..659e9a3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html @@ -3,10 +3,10 @@ overwrite - + - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ overwrite
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ into the range to.

- + Definition

Defined in the header file boost/range/algorithm_ext/overwrite.hpp

- + Requirements
    @@ -87,7 +87,7 @@
- + Complexity

@@ -105,7 +105,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html index 26741e2..4fcd6ac 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -28,7 +28,7 @@ push_back
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the back of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_back.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html index 4afd63c..0a57bc5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -28,7 +28,7 @@ push_front

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the front of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_front.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html index f80666a..6dd9a90 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html @@ -3,7 +3,7 @@ remove_erase - + @@ -28,7 +28,7 @@ remove_erase

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -54,14 +54,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -69,7 +69,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html index 0f4c190..97d7675 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html @@ -3,7 +3,7 @@ remove_erase_if - + @@ -28,7 +28,7 @@ remove_erase_if

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -55,14 +55,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
    @@ -76,7 +76,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html index 87820b8..2e8a2d1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html @@ -3,7 +3,7 @@ Non-mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html index e45a101..63c4509 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html @@ -3,7 +3,7 @@ Range Algorithm - adjacent_find - + @@ -28,7 +28,7 @@ Range Algorithm - adjacent_find

- + Prototype

@@ -77,7 +77,7 @@

- + Description

@@ -98,14 +98,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/adjacent_find.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html index 247d8bc..31286b2 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html @@ -3,7 +3,7 @@ binary_search - + @@ -28,7 +28,7 @@ binary_search

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ range rng.

- + Definition

Defined in the header file boost/range/algorithm/binary_search.hpp

- + Requirements

@@ -111,7 +111,7 @@

- + Precondition:

@@ -129,7 +129,7 @@ order according to the function object pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html index bdfc489..3848c7d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html @@ -3,7 +3,7 @@ count - + @@ -28,7 +28,7 @@ count

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/count.hpp

- + Requirements
    @@ -85,7 +85,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html index d6d54a1..4c404f8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html @@ -3,7 +3,7 @@ equal - + @@ -28,7 +28,7 @@ equal

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -71,14 +71,14 @@ considered equal in the predicate version if pred(x,y) is true.

- + Definition

Defined in the header file boost/range/algorithm/equal.hpp

- + Requirements

@@ -139,7 +139,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html index 94bd133..b0daaaa 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html @@ -3,7 +3,7 @@ equal_range - + @@ -28,7 +28,7 @@ equal_range

- + Prototype

@@ -71,7 +71,7 @@

- + Description

@@ -85,14 +85,14 @@ is determined by pred.

- + Definition

Defined in the header file boost/range/algorithm/equal_range.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Precondition:

@@ -155,7 +155,7 @@ is ordered in ascending order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html index 3e45381..61fcff7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html @@ -3,7 +3,7 @@ find - + @@ -28,7 +28,7 @@ find

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<SinglePassRange>::type find(SinglePassRange& rng, Value val); -template<class SinglePassRange, class Value> -typename range_iterator<const SinglePassRange>::type -find(const SinglePassRange& rng, Value val); - template< range_return_value re, class SinglePassRange, @@ -49,19 +45,11 @@ > typename range_return<SinglePassRange, re>::type find(SinglePassRange& rng, Value val); - -template< - range_return_value re, - class SinglePassRange, - class Value - > -typename range_return<const SinglePassRange, re>::type -find(const SinglePassRange& rng, Value val);

- + Description

@@ -72,14 +60,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find.hpp

- + Requirements
    @@ -100,7 +88,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html index 9412d18..9e34f52 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html @@ -3,7 +3,7 @@ find_end - + @@ -28,7 +28,7 @@ find_end

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<ForwardRange1>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2); -template<class ForwardRange1, class ForwardRange2> -typename range_iterator<const ForwardRange1>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2); - template< class ForwardRange1, class ForwardRange2, @@ -50,15 +46,6 @@ typename range_iterator<ForwardRange1>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); -template< - class ForwardRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_iterator<const ForwardRange1>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - - template< range_return_value re, class ForwardRange1, @@ -67,14 +54,6 @@ typename range_return<ForwardRange1, re>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2); -template< - range_return_value re, - class ForwardRange1, - class ForwardRange2 - > -typename range_return<const ForwardRange1, re>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2); - template< range_return_value re, class ForwardRange1, @@ -83,20 +62,11 @@ > typename range_return<ForwardRange1, re>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - -template< - range_return_value re, - class ForwardRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_return<const ForwardRange1, re>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

- + Description

@@ -111,14 +81,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_end.hpp

- + Requirements

@@ -178,7 +148,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html index 5f15b42..53869de 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html @@ -3,7 +3,7 @@ find_first_of - + @@ -28,7 +28,7 @@ find_first_of

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<SinglePassRange1>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2); -template<class SinglePassRange1, class ForwardRange2> -typename range_iterator<const SinglePassRange1>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2); - template< class SinglePassRange1, class ForwardRange2, @@ -50,15 +46,6 @@ typename range_iterator<SinglePassRange1>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); -template< - class SinglePassRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_iterator<const SinglePassRange1>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - - template< range_return_value re, class SinglePassRange1, @@ -67,14 +54,6 @@ typename range_return<SinglePassRange1, re>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2); -template< - range_return_value re, - class SinglePassRange1, - class ForwardRange2 - > -typename range_return<const SinglePassRange1, re>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2); - template< range_return_value re, class SinglePassRange1, @@ -83,20 +62,11 @@ > typename range_return<SinglePassRange1, re>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - -template< - range_return_value re, - class SinglePassRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_return<const SinglePassRange1, re>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

- + Description

@@ -116,14 +86,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_first_of.hpp

- + Requirements

@@ -177,7 +147,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html index 424b833..2c70400 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -28,7 +28,7 @@ find_if

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<SinglePassRange>::type find_if(SinglePassRange& rng, UnaryPredicate pred); -template<class SinglePassRange, class UnaryPredicate> -typename range_iterator<const SinglePassRange>::type -find_if(const SinglePassRange& rng, UnaryPredicate pred); - template< range_return_value re, class SinglePassRange, @@ -49,19 +45,11 @@ > typename range_return<SinglePassRange, re>::type find_if(SinglePassRange& rng, UnaryPredicate pred); - -template< - range_return_value re, - class SinglePassRange, - class UnaryPredicate - > -typename range_return<const SinglePassRange, re>::type -find_if(const SinglePassRange& rng, UnaryPredicate pred);

- + Description

@@ -76,14 +64,14 @@ defines found in the same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_if.hpp

- + Requirements
    @@ -102,7 +90,7 @@
- + Precondition:

@@ -110,7 +98,7 @@ rng, *i is in the domain of UnaryPredicate.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html index 3c85cc0..b0984fd 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -59,14 +59,14 @@ fun(x).

- + Definition

Defined in the header file boost/range/algorithm/for_each.hpp

- + Requirements
    @@ -90,7 +90,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html index 0cf9505..359fafd 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html @@ -3,7 +3,7 @@ lexicographical_compare - + @@ -28,7 +28,7 @@ lexicographical_compare

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -73,14 +73,14 @@ predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html index 4e1f526..041d0c9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html @@ -3,7 +3,7 @@ lower_bound - + @@ -28,7 +28,7 @@ lower_bound

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<ForwardRange>::type lower_bound(ForwardRange& rng, Value val); -template<class ForwardRange, class Value> -typename range_iterator<const ForwardRange>::type -lower_bound(const ForwardRange& rng, Value val); - template< range_return_value re, class ForwardRange, @@ -49,19 +45,11 @@ > typename range_return<ForwardRange, re>::type lower_bound(ForwardRange& rng, Value val); - -template< - range_return_value re, - class ForwardRange, - class Value - > -typename range_return<const ForwardRange, re>::type -lower_bound(const ForwardRange& rng, Value val);

- + Description

@@ -84,14 +72,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/lower_bound.hpp

- + Requirements

@@ -142,7 +130,7 @@

- + Precondition:

@@ -160,7 +148,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html index 8ca03f7..b737e2f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html @@ -3,7 +3,7 @@ max_element - + @@ -28,7 +28,7 @@ max_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/max_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html index 08903d1..36d638d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html @@ -3,7 +3,7 @@ min_element - + @@ -28,7 +28,7 @@ min_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/min_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html index 5a168da..4fa63b8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html @@ -3,7 +3,7 @@ mismatch - + @@ -28,7 +28,7 @@ mismatch

- + Prototype

@@ -106,7 +106,7 @@

- + Description

@@ -124,14 +124,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/mismatch.hpp

- + Requirements

@@ -192,14 +192,14 @@

- + Precondition:

distance(rng2) >= distance(rng1)

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html index 1dcf8c0..eb0ab4a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html @@ -3,7 +3,7 @@ search - + @@ -28,7 +28,7 @@ search

- + Prototype

@@ -96,7 +96,7 @@

- + Description

@@ -115,14 +115,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/search.hpp

- + Requirements

@@ -183,7 +183,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html index 8db1558..a2e50f9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html @@ -3,7 +3,7 @@ upper_bound - + @@ -28,7 +28,7 @@ upper_bound

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<ForwardRange>::type upper_bound(ForwardRange& rng, Value val); -template<class ForwardRange, class Value> -typename range_iterator<const ForwardRange>::type -upper_bound(const ForwardRange& rng, Value val); - template< range_return_value re, class ForwardRange, @@ -49,19 +45,11 @@ > typename range_return<ForwardRange, re>::type upper_bound(ForwardRange& rng, Value val); - -template< - range_return_value re, - class ForwardRange, - class Value - > -typename range_return<const ForwardRange, re>::type -upper_bound(const ForwardRange& rng, Value val);

- + Description

@@ -83,14 +71,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/upper_bound.hpp

- + Requirements

@@ -141,7 +129,7 @@

- + Precondition:

@@ -159,7 +147,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric.html b/doc/html/range/reference/algorithms/range_numeric.html index c6c6767..9da4d83 100644 --- a/doc/html/range/reference/algorithms/range_numeric.html +++ b/doc/html/range/reference/algorithms/range_numeric.html @@ -3,7 +3,7 @@ Numeric algorithms - + diff --git a/doc/html/range/reference/algorithms/range_numeric/accumulate.html b/doc/html/range/reference/algorithms/range_numeric/accumulate.html index 448b1fa..81c5f00 100644 --- a/doc/html/range/reference/algorithms/range_numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/range_numeric/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -28,7 +28,7 @@ accumulate

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -64,18 +64,18 @@ The return value is the resultant value of the above algorithm.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -100,7 +100,7 @@
- + For the second version
@@ -134,7 +134,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html index 8c76593..77e1701 100644 --- a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html @@ -3,7 +3,7 @@ adjacent_difference - + @@ -28,7 +28,7 @@ adjacent_difference

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -69,18 +69,18 @@ instead of operator-().

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -111,7 +111,7 @@
- + For the second version
@@ -146,7 +146,7 @@
- + Precondition:

@@ -154,7 +154,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/inner_product.html b/doc/html/range/reference/algorithms/range_numeric/inner_product.html index 6d48b14..4937875 100644 --- a/doc/html/range/reference/algorithms/range_numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/range_numeric/inner_product.html @@ -3,7 +3,7 @@ inner_product - + @@ -28,7 +28,7 @@ inner_product

- + Prototype

@@ -54,7 +54,7 @@

- + Description

@@ -67,18 +67,18 @@ algorithm please see inner_product.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -113,7 +113,7 @@
- + For the second version
@@ -162,14 +162,14 @@
- + Precondition:

distance(rng2) >= distance(rng1) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html index b89e58e..bf87851 100644 --- a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html @@ -3,7 +3,7 @@ partial_sum - + @@ -28,7 +28,7 @@ partial_sum

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,18 +58,18 @@ in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -99,7 +99,7 @@
- + For the second version
@@ -128,7 +128,7 @@
- + Precondition:

@@ -136,7 +136,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms.html b/doc/html/range/reference/algorithms/set_algorithms.html index b9888f5..447b470 100644 --- a/doc/html/range/reference/algorithms/set_algorithms.html +++ b/doc/html/range/reference/algorithms/set_algorithms.html @@ -3,7 +3,7 @@ Set algorithms - + diff --git a/doc/html/range/reference/algorithms/set_algorithms/includes.html b/doc/html/range/reference/algorithms/set_algorithms/includes.html index 015474a..b20c2d6 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/includes.html +++ b/doc/html/range/reference/algorithms/set_algorithms/includes.html @@ -3,7 +3,7 @@ includes - + @@ -28,7 +28,7 @@ includes

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -60,14 +60,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Precondition:

@@ -163,7 +163,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html index 58d8a54..a9b324c 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html @@ -3,7 +3,7 @@ set_difference - + @@ -28,7 +28,7 @@ set_difference

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html index 65840cd..fc93925 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html @@ -3,7 +3,7 @@ set_intersection - + @@ -28,7 +28,7 @@ set_intersection

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html index a25e8e4..69d560e 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html @@ -3,7 +3,7 @@ set_symmetric_difference - + @@ -28,7 +28,7 @@ set_symmetric_difference

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -75,14 +75,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -168,7 +168,7 @@

- + Precondition:

@@ -186,7 +186,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_union.html b/doc/html/range/reference/algorithms/set_algorithms/set_union.html index 90c343c..074991a 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_union.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_union.html @@ -3,7 +3,7 @@ set_union - + @@ -28,7 +28,7 @@ set_union

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -70,14 +70,14 @@ in the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -163,7 +163,7 @@

- + Precondition:

@@ -181,7 +181,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index fc32e83..37f4882 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -3,7 +3,7 @@ Extending the library - + diff --git a/doc/html/range/reference/extending/method_1.html b/doc/html/range/reference/extending/method_1.html index 3283d10..217524c 100644 --- a/doc/html/range/reference/extending/method_1.html +++ b/doc/html/range/reference/extending/method_1.html @@ -3,7 +3,7 @@ Method 1: provide member functions and nested types - + diff --git a/doc/html/range/reference/extending/method_2.html b/doc/html/range/reference/extending/method_2.html index f4f3524..eae4cbd 100644 --- a/doc/html/range/reference/extending/method_2.html +++ b/doc/html/range/reference/extending/method_2.html @@ -3,7 +3,7 @@ Method 2: provide free-standing functions and specialize metafunctions - + diff --git a/doc/html/range/reference/extending/method_3.html b/doc/html/range/reference/extending/method_3.html index f841237..3594ff8 100644 --- a/doc/html/range/reference/extending/method_3.html +++ b/doc/html/range/reference/extending/method_3.html @@ -3,7 +3,7 @@ Method 3: provide range adaptor implementations - + diff --git a/doc/html/range/reference/extending/method_3/method_3_1.html b/doc/html/range/reference/extending/method_3/method_3_1.html index e995bee..9370d65 100644 --- a/doc/html/range/reference/extending/method_3/method_3_1.html +++ b/doc/html/range/reference/extending/method_3/method_3_1.html @@ -3,7 +3,7 @@ Method 3.1: Implement a Range Adaptor without arguments - + diff --git a/doc/html/range/reference/extending/method_3/method_3_2.html b/doc/html/range/reference/extending/method_3/method_3_2.html index f0bae90..f153d0e 100644 --- a/doc/html/range/reference/extending/method_3/method_3_2.html +++ b/doc/html/range/reference/extending/method_3/method_3_2.html @@ -3,7 +3,7 @@ Method 3.2: Implement a Range Adaptor with arguments - + diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html index ae0bbf0..8db874f 100644 --- a/doc/html/range/reference/overview.html +++ b/doc/html/range/reference/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index 2e16372..6e4ad0a 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -3,7 +3,7 @@ Provided Ranges - + diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index b556488..50a40a7 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -3,7 +3,7 @@ counting_range - + @@ -27,7 +27,7 @@ counting_range

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -58,14 +58,14 @@ (from Boost.Iterator).

- + Definition

Defined in header file boost/range/counting_range.hpp

- + Requirements
  1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index f4565c0..6411426 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -3,7 +3,7 @@ irange - + @@ -27,7 +27,7 @@ irange
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -58,14 +58,14 @@ parameters denoted a half-open range.

- + Definition

Defined in the header file boost/range/irange.hpp

- + Requirements
    @@ -79,7 +79,7 @@
- + Complexity

diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index e7d81d8..d5a97f0 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -3,7 +3,7 @@ istream_range - + @@ -27,7 +27,7 @@ istream_range

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

- + Definition

diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html index fbb1aa8..e7f24a5 100644 --- a/doc/html/range/reference/semantics.html +++ b/doc/html/range/reference/semantics.html @@ -3,7 +3,7 @@ Semantics - + @@ -31,7 +31,7 @@

Functions
- + notation
diff --git a/doc/html/range/reference/semantics/functions.html b/doc/html/range/reference/semantics/functions.html index 232b680..16bb7fb 100644 --- a/doc/html/range/reference/semantics/functions.html +++ b/doc/html/range/reference/semantics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/range/reference/semantics/metafunctions.html b/doc/html/range/reference/semantics/metafunctions.html index 6df4902..cc2f4bd 100644 --- a/doc/html/range/reference/semantics/metafunctions.html +++ b/doc/html/range/reference/semantics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/range/reference/synopsis.html b/doc/html/range/reference/synopsis.html index 248e8c1..c950490 100644 --- a/doc/html/range/reference/synopsis.html +++ b/doc/html/range/reference/synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index f064884..d6cde37 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -3,7 +3,7 @@ Terminology and style guidelines - + diff --git a/doc/html/range/upgrade.html b/doc/html/range/upgrade.html index ad53c37..27ddd2b 100644 --- a/doc/html/range/upgrade.html +++ b/doc/html/range/upgrade.html @@ -3,7 +3,7 @@ Upgrade version of Boost.Range - + diff --git a/doc/html/range/upgrade/upgrade_from_1_34.html b/doc/html/range/upgrade/upgrade_from_1_34.html index dfc4c52..587555c 100644 --- a/doc/html/range/upgrade/upgrade_from_1_34.html +++ b/doc/html/range/upgrade/upgrade_from_1_34.html @@ -3,7 +3,7 @@ Upgrade from version 1.34 - + diff --git a/doc/html/range/upgrade/upgrade_from_1_42.html b/doc/html/range/upgrade/upgrade_from_1_42.html index 3fbc2d2..74059e4 100644 --- a/doc/html/range/upgrade/upgrade_from_1_42.html +++ b/doc/html/range/upgrade/upgrade_from_1_42.html @@ -3,7 +3,7 @@ Upgrade from version 1.42 - + diff --git a/doc/html/range/utilities.html b/doc/html/range/utilities.html index d9caa5f..c7bbf57 100644 --- a/doc/html/range/utilities.html +++ b/doc/html/range/utilities.html @@ -3,7 +3,7 @@ Utilities - + diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html index 07efc15..a73e99a 100644 --- a/doc/html/range/utilities/iterator_range.html +++ b/doc/html/range/utilities/iterator_range.html @@ -3,7 +3,7 @@ Class iterator_range - + @@ -47,7 +47,7 @@ limitation is simply propogated from the underlying iterator type.

- + Synopsis

@@ -187,7 +187,7 @@ iterators from the same container.

- + Details member functions
@@ -218,7 +218,7 @@

- + Details functions
diff --git a/doc/html/range/utilities/join.html b/doc/html/range/utilities/join.html index c2c9e15..2656ca3 100644 --- a/doc/html/range/utilities/join.html +++ b/doc/html/range/utilities/join.html @@ -3,7 +3,7 @@ Function join - + @@ -39,7 +39,7 @@ if the end of a range has been reached internally during traversal.

- + Synposis

@@ -65,7 +65,7 @@

- + Example

diff --git a/doc/html/range/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html index 0b474d7..94b4d85 100644 --- a/doc/html/range/utilities/sub_range.html +++ b/doc/html/range/utilities/sub_range.html @@ -3,7 +3,7 @@ Class sub_range - + @@ -35,7 +35,7 @@ is.

- + Synopsis

From c6c4634acab14a8d2e390365453f6f57320a3da0 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 5 Apr 2010 08:51:43 +0000 Subject: [PATCH 02/26] Revert accidental commit to range. [SVN r61064] --- doc/html/index.html | 6 +- doc/html/quickbook_HTML.manifest | 1 - doc/html/range/concepts.html | 2 +- .../range/concepts/bidirectional_range.html | 18 ++-- doc/html/range/concepts/concept_checking.html | 4 +- doc/html/range/concepts/forward_range.html | 12 +-- doc/html/range/concepts/overview.html | 2 +- .../range/concepts/random_access_range.html | 14 +-- .../range/concepts/single_pass_range.html | 18 ++-- doc/html/range/examples.html | 2 +- doc/html/range/faq.html | 2 +- doc/html/range/history_ack.html | 2 +- doc/html/range/introduction.html | 2 +- doc/html/range/library_headers.html | 2 +- doc/html/range/mfc_atl.html | 6 +- doc/html/range/mfc_atl/atl_ranges.html | 2 +- doc/html/range/mfc_atl/const_ranges.html | 2 +- doc/html/range/mfc_atl/mfc_ranges.html | 2 +- doc/html/range/mfc_atl/references.html | 2 +- doc/html/range/mfc_atl/requirements.html | 2 +- doc/html/range/portability.html | 2 +- doc/html/range/reference.html | 2 +- doc/html/range/reference/adaptors.html | 2 +- .../adaptors_general_requirements.html | 2 +- .../adaptors/adaptors_introduction.html | 8 +- .../adaptors/adaptors_reference.html | 2 +- .../adaptors_reference/adjacent_filtered.html | 2 +- .../adaptors/adaptors_reference/copied.html | 2 +- .../adaptors/adaptors_reference/filtered.html | 2 +- .../adaptors/adaptors_reference/indexed.html | 2 +- .../adaptors_reference/indirected.html | 2 +- .../adaptors/adaptors_reference/map_keys.html | 2 +- .../adaptors_reference/map_values.html | 2 +- .../adaptors/adaptors_reference/replaced.html | 2 +- .../adaptors_reference/replaced_if.html | 2 +- .../adaptors/adaptors_reference/reversed.html | 2 +- .../adaptors/adaptors_reference/sliced.html | 2 +- .../adaptors/adaptors_reference/strided.html | 2 +- .../adaptors_reference/tokenized.html | 2 +- .../adaptors_reference/transformed.html | 2 +- .../adaptors/adaptors_reference/uniqued.html | 2 +- .../reference/adaptors/adaptors_synopsis.html | 2 +- doc/html/range/reference/algorithms.html | 2 +- .../reference/algorithms/heap_algorithms.html | 2 +- .../algorithms/heap_algorithms/make_heap.html | 12 +-- .../algorithms/heap_algorithms/pop_heap.html | 14 +-- .../algorithms/heap_algorithms/push_heap.html | 14 +-- .../algorithms/permutation_algorithms.html | 2 +- .../next_permutation.html | 12 +-- .../prev_permutation.html | 12 +-- .../range_algorithm_introduction.html | 2 +- .../range_algorithm_mutating_algorithms.html | 2 +- .../copy.html | 14 +-- .../copy_backward.html | 14 +-- .../fill.html | 12 +-- .../generate.html | 14 +-- .../inplace_merge.html | 18 ++-- .../merge.html | 18 ++-- .../nth_element.html | 12 +-- .../partial_sort.html | 12 +-- .../partition.html | 12 +-- .../random_shuffle.html | 14 +-- .../remove.html | 12 +-- .../remove_if.html | 12 +-- .../replace.html | 12 +-- .../replace_if.html | 12 +-- .../rotate.html | 14 +-- .../sort.html | 12 +-- .../stable_partition.html | 12 +-- .../stable_sort.html | 12 +-- .../transform.html | 14 +-- .../unique.html | 12 +-- .../range_algorithm_new_algorithms.html | 4 +- .../range_algorithm_new_algorithms/erase.html | 12 +-- .../for_each.html | 98 ++++++++++++++----- .../insert.html | 18 ++-- .../overwrite.html | 18 ++-- .../push_back.html | 12 +-- .../push_front.html | 12 +-- .../remove_erase.html | 12 +-- .../remove_erase_if.html | 12 +-- ...nge_algorithm_non_mutating_algorithms.html | 2 +- .../adjacent_find.html | 12 +-- .../binary_search.html | 14 +-- .../count.html | 12 +-- .../equal.html | 12 +-- .../equal_range.html | 14 +-- .../find.html | 24 +++-- .../find_end.html | 42 ++++++-- .../find_first_of.html | 42 ++++++-- .../find_if.html | 26 +++-- .../for_each.html | 12 +-- .../lexicographical_compare.html | 12 +-- .../lower_bound.html | 26 +++-- .../max_element.html | 12 +-- .../min_element.html | 12 +-- .../mismatch.html | 14 +-- .../search.html | 12 +-- .../upper_bound.html | 26 +++-- .../reference/algorithms/range_numeric.html | 2 +- .../algorithms/range_numeric/accumulate.html | 16 +-- .../range_numeric/adjacent_difference.html | 18 ++-- .../range_numeric/inner_product.html | 18 ++-- .../algorithms/range_numeric/partial_sum.html | 18 ++-- .../reference/algorithms/set_algorithms.html | 2 +- .../algorithms/set_algorithms/includes.html | 14 +-- .../set_algorithms/set_difference.html | 14 +-- .../set_algorithms/set_intersection.html | 14 +-- .../set_symmetric_difference.html | 14 +-- .../algorithms/set_algorithms/set_union.html | 14 +-- doc/html/range/reference/extending.html | 2 +- .../range/reference/extending/method_1.html | 2 +- .../range/reference/extending/method_2.html | 2 +- .../range/reference/extending/method_3.html | 2 +- .../extending/method_3/method_3_1.html | 2 +- .../extending/method_3/method_3_2.html | 2 +- doc/html/range/reference/overview.html | 2 +- doc/html/range/reference/ranges.html | 2 +- .../reference/ranges/counting_range.html | 10 +- doc/html/range/reference/ranges/irange.html | 12 +-- .../range/reference/ranges/istream_range.html | 8 +- doc/html/range/reference/semantics.html | 4 +- .../range/reference/semantics/functions.html | 2 +- .../reference/semantics/metafunctions.html | 2 +- doc/html/range/reference/synopsis.html | 2 +- doc/html/range/style_guide.html | 2 +- doc/html/range/upgrade.html | 2 +- doc/html/range/upgrade/upgrade_from_1_34.html | 2 +- doc/html/range/upgrade/upgrade_from_1_42.html | 2 +- doc/html/range/utilities.html | 2 +- doc/html/range/utilities/iterator_range.html | 8 +- doc/html/range/utilities/join.html | 6 +- doc/html/range/utilities/sub_range.html | 4 +- 133 files changed, 701 insertions(+), 542 deletions(-) diff --git a/doc/html/index.html b/doc/html/index.html index 4acf487..4f1a4a1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Range 2.0 - + @@ -30,7 +30,7 @@

-

+

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)

@@ -135,7 +135,7 @@

- +

Last revised: April 04, 2010 at 23:38:19 GMT

Last revised: April 03, 2010 at 08:56:46 GMT


diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index 982f745..b3be8f5 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -91,7 +91,6 @@ range/reference/algorithms/range_algorithm_new_algorithms.html range/reference/algorithms/range_algorithm_new_algorithms/erase.html range/reference/algorithms/range_algorithm_new_algorithms/for_each.html range/reference/algorithms/range_algorithm_new_algorithms/insert.html -range/reference/algorithms/range_algorithm_new_algorithms/for_each.html range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html range/reference/algorithms/range_algorithm_new_algorithms/push_back.html range/reference/algorithms/range_algorithm_new_algorithms/push_front.html diff --git a/doc/html/range/concepts.html b/doc/html/range/concepts.html index c43b67c..c384122 100644 --- a/doc/html/range/concepts.html +++ b/doc/html/range/concepts.html @@ -3,7 +3,7 @@ Range Concepts - + diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index b45f2dc..796ca14 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -3,7 +3,7 @@ Bidirectional Range - + @@ -27,7 +27,7 @@ Bidirectional Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -75,7 +75,7 @@ Traversal Iterator.

- + Refinement of
@@ -83,7 +83,7 @@ Forward Range

- + Associated types
@@ -136,7 +136,7 @@
- + Valid expressions
@@ -221,7 +221,7 @@
- + Complexity guarantees
@@ -232,7 +232,7 @@ Forward Range.

- + Invariants
@@ -272,7 +272,7 @@
- + See also

diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index 17c8795..37175b4 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -3,7 +3,7 @@ Concept Checking - + @@ -79,7 +79,7 @@

- + See also

diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index 7a96208..9076b68 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -3,7 +3,7 @@ Forward Range - + @@ -27,7 +27,7 @@ Forward Range

- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,14 +73,14 @@ Traversal Iterator.

- + Refinement of

Single Pass Range

- + Associated types
@@ -132,7 +132,7 @@
- + See also

diff --git a/doc/html/range/concepts/overview.html b/doc/html/range/concepts/overview.html index c2bb4d1..7cd19e8 100644 --- a/doc/html/range/concepts/overview.html +++ b/doc/html/range/concepts/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index fa7dc03..97b3171 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -3,7 +3,7 @@ Random Access Range - + @@ -27,7 +27,7 @@ Random Access Range

- + Description

@@ -35,7 +35,7 @@ Access Traversal Iterator.

- + Refinement of
@@ -43,7 +43,7 @@ Bidirectional Range

- + Valid expressions
@@ -89,7 +89,7 @@
- + Expression semantics
@@ -139,7 +139,7 @@
- + Complexity guarantees
@@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

- + Invariants
diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 0abd8fe..10669d1 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -3,7 +3,7 @@ Single Pass Range - + @@ -27,7 +27,7 @@ Single Pass Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,7 +73,7 @@ Pass Iterator.

- + Associated types
@@ -126,7 +126,7 @@
- + Valid expressions
@@ -198,7 +198,7 @@
- + Expression semantics
@@ -266,7 +266,7 @@
- + Complexity guarantees
@@ -276,7 +276,7 @@ constant time.

- + Invariants
@@ -316,7 +316,7 @@
- + See also

diff --git a/doc/html/range/examples.html b/doc/html/range/examples.html index f517040..b272df8 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -3,7 +3,7 @@ Examples - + diff --git a/doc/html/range/faq.html b/doc/html/range/faq.html index a5ea15d..0c9d40b 100644 --- a/doc/html/range/faq.html +++ b/doc/html/range/faq.html @@ -3,7 +3,7 @@ FAQ - + diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index 2401db3..930b6b6 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -3,7 +3,7 @@ History and Acknowledgement - + diff --git a/doc/html/range/introduction.html b/doc/html/range/introduction.html index e28e9a9..8bce31d 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -3,7 +3,7 @@ Introduction - + diff --git a/doc/html/range/library_headers.html b/doc/html/range/library_headers.html index 8f28283..a5bd095 100644 --- a/doc/html/range/library_headers.html +++ b/doc/html/range/library_headers.html @@ -3,7 +3,7 @@ Library Headers - + diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index f475022..8d5ed19 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -3,7 +3,7 @@ MFC/ATL (courtesy of Shunsuke Sogame) - + @@ -34,7 +34,7 @@

References
- + Introduction

@@ -100,7 +100,7 @@

- + Overview

diff --git a/doc/html/range/mfc_atl/atl_ranges.html b/doc/html/range/mfc_atl/atl_ranges.html index 766375d..65ee355 100644 --- a/doc/html/range/mfc_atl/atl_ranges.html +++ b/doc/html/range/mfc_atl/atl_ranges.html @@ -3,7 +3,7 @@ ATL Ranges - + diff --git a/doc/html/range/mfc_atl/const_ranges.html b/doc/html/range/mfc_atl/const_ranges.html index 222c6d8..2e047f6 100644 --- a/doc/html/range/mfc_atl/const_ranges.html +++ b/doc/html/range/mfc_atl/const_ranges.html @@ -3,7 +3,7 @@ const Ranges - + diff --git a/doc/html/range/mfc_atl/mfc_ranges.html b/doc/html/range/mfc_atl/mfc_ranges.html index 9e6d001..af0c6e9 100644 --- a/doc/html/range/mfc_atl/mfc_ranges.html +++ b/doc/html/range/mfc_atl/mfc_ranges.html @@ -3,7 +3,7 @@ MFC Ranges - + diff --git a/doc/html/range/mfc_atl/references.html b/doc/html/range/mfc_atl/references.html index 8afe82a..124a538 100644 --- a/doc/html/range/mfc_atl/references.html +++ b/doc/html/range/mfc_atl/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/range/mfc_atl/requirements.html b/doc/html/range/mfc_atl/requirements.html index c49ac8c..131433f 100644 --- a/doc/html/range/mfc_atl/requirements.html +++ b/doc/html/range/mfc_atl/requirements.html @@ -3,7 +3,7 @@ Requirements - + diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 63e3621..901e0b1 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -3,7 +3,7 @@ Portability - + diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index a76673a..70c17dc 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index bc68382..5ab0ecd 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -3,7 +3,7 @@ Range Adaptors - + diff --git a/doc/html/range/reference/adaptors/adaptors_general_requirements.html b/doc/html/range/reference/adaptors/adaptors_general_requirements.html index ce2b17b..a815bae 100644 --- a/doc/html/range/reference/adaptors/adaptors_general_requirements.html +++ b/doc/html/range/reference/adaptors/adaptors_general_requirements.html @@ -3,7 +3,7 @@ General Requirements - + diff --git a/doc/html/range/reference/adaptors/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html index a339728..efa54fd 100644 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ b/doc/html/range/reference/adaptors/adaptors_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

- + Composition of Adaptors
@@ -159,7 +159,7 @@ is the design solution to this problem.

- + Range Adaptor alternative to copy_if algorithm
@@ -176,7 +176,7 @@

- + Range Adaptor alternative to count_if algorithm
diff --git a/doc/html/range/reference/adaptors/adaptors_reference.html b/doc/html/range/reference/adaptors/adaptors_reference.html index 5a3dae6..d284888 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference.html +++ b/doc/html/range/reference/adaptors/adaptors_reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html index df72e28..fa763c8 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html @@ -3,7 +3,7 @@ adjacent_filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/copied.html b/doc/html/range/reference/adaptors/adaptors_reference/copied.html index b488800..650e29a 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/copied.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/copied.html @@ -3,7 +3,7 @@ copied - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html index 04d418d..1551a9f 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html @@ -3,7 +3,7 @@ filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html index 03ec01b..d8c8674 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html @@ -3,7 +3,7 @@ indexed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html index 391abcc..adcd57a 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html @@ -3,7 +3,7 @@ indirected - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html index 7af39c9..95c1746 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html @@ -3,7 +3,7 @@ map_keys - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html index 810ba7a..553a8f3 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html @@ -3,7 +3,7 @@ map_values - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html index 6af8257..0990ede 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html @@ -3,7 +3,7 @@ replaced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html index f916472..abcf00f 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html @@ -3,7 +3,7 @@ replaced_if - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html index 2ef6d5d..52f4cda 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html @@ -3,7 +3,7 @@ reversed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html index 8901fa0..9793092 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html @@ -3,7 +3,7 @@ sliced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/strided.html b/doc/html/range/reference/adaptors/adaptors_reference/strided.html index ca37e60..6fcc281 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/strided.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/strided.html @@ -3,7 +3,7 @@ strided - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html index 0b294b2..fc4bc42 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html @@ -3,7 +3,7 @@ tokenized - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html index 1947b6d..56a6170 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html @@ -3,7 +3,7 @@ transformed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html index 1f7d9fb..3b314ab 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html @@ -3,7 +3,7 @@ uniqued - + diff --git a/doc/html/range/reference/adaptors/adaptors_synopsis.html b/doc/html/range/reference/adaptors/adaptors_synopsis.html index 202a114..d0fea59 100644 --- a/doc/html/range/reference/adaptors/adaptors_synopsis.html +++ b/doc/html/range/reference/adaptors/adaptors_synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index 99e1dad..fc70d02 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -3,7 +3,7 @@ Range Algorithm - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms.html b/doc/html/range/reference/algorithms/heap_algorithms.html index 2cdbaaa..25c45e4 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms.html +++ b/doc/html/range/reference/algorithms/heap_algorithms.html @@ -3,7 +3,7 @@ Heap algorithms - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html index daf3ede..d8d4033 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html @@ -3,7 +3,7 @@ make_heap - + @@ -28,7 +28,7 @@ make_heap
- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -119,7 +119,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html index 2fdd9a4..f1588b7 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html @@ -3,7 +3,7 @@ pop_heap - + @@ -28,7 +28,7 @@ pop_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html index a8dadf9..35b64ca 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html @@ -3,7 +3,7 @@ push_heap - + @@ -28,7 +28,7 @@ push_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms.html b/doc/html/range/reference/algorithms/permutation_algorithms.html index a9e2392..12e33f9 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms.html @@ -3,7 +3,7 @@ Permutation algorithms - + diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html index 4d7b26f..8521343 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html @@ -3,7 +3,7 @@ next_permutation - + @@ -28,7 +28,7 @@ next_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html index 99ca8f6..a1e0d1d 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html @@ -3,7 +3,7 @@ prev_permutation - + @@ -28,7 +28,7 @@ prev_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_introduction.html b/doc/html/range/reference/algorithms/range_algorithm_introduction.html index f0aa6c4..9f15ed5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_introduction.html +++ b/doc/html/range/reference/algorithms/range_algorithm_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html index fcd52d1..80710b0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html @@ -3,7 +3,7 @@ Mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html index f8722a8..0decd23 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html @@ -3,7 +3,7 @@ Range Algorithm - copy - + @@ -28,7 +28,7 @@ Range Algorithm - copy

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -51,14 +51,14 @@ distance(source_rng)

- + Definition

Defined in the header file boost/range/algorithm/copy.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html index f37fe0c..541db9a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html @@ -3,7 +3,7 @@ Range Algorithm - copy_backward - + @@ -28,7 +28,7 @@ Range Algorithm - copy_backward

- + Prototype

@@ -42,7 +42,7 @@

- + Description

@@ -60,14 +60,14 @@ denotes the end of the output sequence.

- + Definition

Defined in the header file boost/range/algorithm/copy_backward.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html index 71d7d01..4bb5340 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html @@ -3,7 +3,7 @@ Range Algorithm - fill - + @@ -28,7 +28,7 @@ Range Algorithm - fill

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ in the range rng.

- + Definition

Defined in the header file boost/range/algorithm/fill.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html index 1e41289..1a5ba8a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html @@ -3,7 +3,7 @@ Range Algorithm - generate - + @@ -28,7 +28,7 @@ Range Algorithm - generate

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ Returns the resultant range.

- + Definition

Defined in the header file boost/range/algorithm/generate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html index 82521d9..fafc9d5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html @@ -3,7 +3,7 @@ Range Algorithm - inplace_merge - + @@ -28,7 +28,7 @@ Range Algorithm - inplace_merge

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -72,14 +72,14 @@ input range is preserved.

- + Definition

Defined in the header file boost/range/algorithm/inplace_merge.hpp

- + Requirements

@@ -116,11 +116,11 @@ argument types.

- + Precondition:
- + For the non-predicate version:
@@ -143,7 +143,7 @@
- + For the predicate version:
@@ -164,7 +164,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html index 7077cd8..9bd570e 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html @@ -3,7 +3,7 @@ Range Algorithm - merge - + @@ -28,7 +28,7 @@ Range Algorithm - merge

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -76,14 +76,14 @@ version uses the predicate instead of operator<().

- + Definition

Defined in the header file boost/range/algorithm/merge.hpp

- + Requirements

@@ -151,11 +151,11 @@

- + Precondition:
- + For the non-predicate version:
@@ -190,7 +190,7 @@
- + For the predicate version:
@@ -221,7 +221,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html index 24006c0..b8d27f0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html @@ -3,7 +3,7 @@ Range Algorithm - nth_element - + @@ -28,7 +28,7 @@ Range Algorithm - nth_element

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -66,14 +66,14 @@ is the same as the element that would be in that position if rng has been sorted.

- + Definition

Defined in the header file boost/range/algorithm/nth_element.hpp

- + Requirements

@@ -124,7 +124,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html index 0fc0343..d218c43 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html @@ -3,7 +3,7 @@ Range Algorithm - partial_sort - + @@ -28,7 +28,7 @@ Range Algorithm - partial_sort

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -71,14 +71,14 @@ predicate instead.

- + Definition

Defined in the header file boost/range/algorithm/partial_sort.hpp

- + Requirements

@@ -129,7 +129,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html index 76f6f5e..4136a2a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html @@ -3,7 +3,7 @@ Range Algorithm - partition - + @@ -28,7 +28,7 @@ Range Algorithm - partition

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -81,14 +81,14 @@ corresponds to the middle iterator.

- + Definition

Defined in the header file boost/range/algorithm/partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html index 908aff4..190f66f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html @@ -3,7 +3,7 @@ Range Algorithm - random_shuffle - + @@ -28,7 +28,7 @@ Range Algorithm - random_shuffle

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the shuffles range.

- + Definition

Defined in the header file boost/range/algorithm/random_shuffle.hpp

- + Requirements

@@ -99,7 +99,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html index 22e7f61..4cb906c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html @@ -3,7 +3,7 @@ Range Algorithm - remove - + @@ -28,7 +28,7 @@ Range Algorithm - remove

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -84,14 +84,14 @@ are dereferenceable, but the elements are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html index c984606..9896adc 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html @@ -3,7 +3,7 @@ Range Algorithm - remove_if - + @@ -28,7 +28,7 @@ Range Algorithm - remove_if

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -83,14 +83,14 @@ are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html index 463fb05..ab4232d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html @@ -3,7 +3,7 @@ Range Algorithm - replace - + @@ -28,7 +28,7 @@ Range Algorithm - replace

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,14 +58,14 @@ Return a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html index c1e8e7e..7677651 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html @@ -3,7 +3,7 @@ Range Algorithm - replace_if - + @@ -28,7 +28,7 @@ Range Algorithm - replace_if

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html index dd045fe..55faad4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html @@ -3,7 +3,7 @@ Range Algorithm - rotate - + @@ -28,7 +28,7 @@ Range Algorithm - rotate

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -54,14 +54,14 @@ and [middle, end(rng)). Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/rotate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html index bfe26e0..290f8e7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html @@ -3,7 +3,7 @@ Range Algorithm - sort - + @@ -28,7 +28,7 @@ Range Algorithm - sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y, x) == false.

- + Definition

Defined in the header file boost/range/algorithm/sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html index 5a7904f..eb0032a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html @@ -3,7 +3,7 @@ Range Algorithm - stable_partition - + @@ -28,7 +28,7 @@ Range Algorithm - stable_partition

- + Prototype

@@ -61,7 +61,7 @@

- + Description

@@ -83,14 +83,14 @@ the iterator to the first element that fails to satisfy pred.

- + Definition

Defined in the header file boost/range/algorithm/stable_partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html index 7459b12..984024d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html @@ -3,7 +3,7 @@ Range Algorithm - stable_sort - + @@ -28,7 +28,7 @@ Range Algorithm - stable_sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y,x) == false.

- + Definition

Defined in the header file boost/range/algorithm/stable_sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html index f574116..58da4ca 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html @@ -3,7 +3,7 @@ Range Algorithm - transform - + @@ -28,7 +28,7 @@ Range Algorithm - transform

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -93,14 +93,14 @@ The return value is out + min(distance(rng1), distance(rng2)).

- + Definition

Defined in the header file boost/range/algorithm/transform.hpp

- + Requirements

@@ -170,7 +170,7 @@

- + Precondition:

@@ -202,7 +202,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html index 47bce04..aaa5525 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html @@ -3,7 +3,7 @@ Range Algorithm - unique - + @@ -28,7 +28,7 @@ Range Algorithm - unique

- + Prototype

@@ -69,7 +69,7 @@

- + Description

@@ -87,14 +87,14 @@ type.

- + Definition

Defined in the header file boost/range/algorithm/unique.hpp

- + Requirements

@@ -138,7 +138,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html index 54db92f..7b34570 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html @@ -3,7 +3,7 @@ New algorithms - + @@ -34,8 +34,6 @@ for_each

insert
-
- for_each
overwrite
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html index eca6ad8..3520dba 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html @@ -3,7 +3,7 @@ erase - + @@ -28,7 +28,7 @@ erase
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -68,7 +68,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html index b621761..4a1cb75 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html @@ -3,11 +3,11 @@ for_each - + - - + + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext
@@ -28,56 +28,110 @@ for_each
- + Prototype

-
template<class SinglePassRange, class Value>
-iota(SinglePassRange& rng, Value x);
+
template<
+    class SinglePassRange1,
+    class SinglePassRange2,
+    class BinaryFunction
+    >
+BinaryFunction for_each(const SinglePassRange1& rng1,
+                        const SinglePassRange2& rng2,
+                        BinaryFunction fn);
+
+template<
+    class SinglePassRange1,
+    class SinglePassRange2,
+    class BinaryFunction
+    >
+BinaryFunction for_each(const SinglePassRange1& rng1,
+                        SinglePassRange2& rng2,
+                        BinaryFunction fn);
+
+template<
+    class SinglePassRange1,
+    class SinglePassRange2,
+    class BinaryFunction
+    >
+BinaryFunction for_each(SinglePassRange1& rng1,
+                        const SinglePassRange2& rng2,
+                        BinaryFunction fn);
+
+template<
+    class SinglePassRange1,
+    class SinglePassRange2,
+    class BinaryFunction
+    >
+BinaryFunction for_each(SinglePassRange1& rng1,
+                        SinglePassRange2& rng2,
+                        BinaryFunction fn);
 

- + Description

- iota traverses forward - through rng, each element - y in rng - is assigned a value equivalent to x - + boost::distance(boost::begin(rng), it) + for_each traverses forward + through rng1 and rng2 simultaneously. For each iteration, + the element x is used + from rng1 and the corresponding + element y is used from + rng2 to invoke fn(x,y). +

+

+ Iteration is stopped upon reaching the end of the shorter of rng1, or rng2. + It is safe to call this function with unequal length ranges.

- + Definition

- Defined in the header file boost/range/algorithm_ext/iota.hpp + Defined in the header file boost/range/algorithm_ext/for_each.hpp

- + Requirements
  1. -SinglePassRange is +SinglePassRange1 is a model of the Single Pass Range Concept.
  2. -Value is a model of - the Incrementable Concept. +SinglePassRange2 is + a model of the Single + Pass Range Concept. +
  3. +
  4. +BinaryFunction is a + model of the BinaryFunctionConcept. +
  5. +
  6. +SinglePassRange1's + value type is convertible to BinaryFunction's + first argument type. +
  7. +
  8. +SinglepassRange2's + value type is convertible to BinaryFunction's + second argument type.
- + Complexity

- Linear. Exactly distance(rng) assignments into rng. + Linear. Exactly min(distance(rng1), distance(rng2)) + applications of BinaryFunction.

@@ -90,7 +144,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html index 977a7c9..fc06253 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html @@ -3,11 +3,11 @@ insert - + - + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ insert
- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/insert.hpp

- + Requirements
    @@ -82,7 +82,7 @@
- + Complexity

@@ -100,7 +100,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html index 659e9a3..b856c39 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html @@ -3,10 +3,10 @@ overwrite - + - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ overwrite
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ into the range to.

- + Definition

Defined in the header file boost/range/algorithm_ext/overwrite.hpp

- + Requirements
    @@ -87,7 +87,7 @@
- + Complexity

@@ -105,7 +105,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html index 4fcd6ac..26741e2 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -28,7 +28,7 @@ push_back
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the back of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_back.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html index 0a57bc5..4afd63c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -28,7 +28,7 @@ push_front

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the front of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_front.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html index 6dd9a90..f80666a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html @@ -3,7 +3,7 @@ remove_erase - + @@ -28,7 +28,7 @@ remove_erase

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -54,14 +54,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -69,7 +69,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html index 97d7675..0f4c190 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html @@ -3,7 +3,7 @@ remove_erase_if - + @@ -28,7 +28,7 @@ remove_erase_if

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -55,14 +55,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
    @@ -76,7 +76,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html index 2e8a2d1..87820b8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html @@ -3,7 +3,7 @@ Non-mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html index 63c4509..e45a101 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html @@ -3,7 +3,7 @@ Range Algorithm - adjacent_find - + @@ -28,7 +28,7 @@ Range Algorithm - adjacent_find

- + Prototype

@@ -77,7 +77,7 @@

- + Description

@@ -98,14 +98,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/adjacent_find.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html index 31286b2..247d8bc 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html @@ -3,7 +3,7 @@ binary_search - + @@ -28,7 +28,7 @@ binary_search

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ range rng.

- + Definition

Defined in the header file boost/range/algorithm/binary_search.hpp

- + Requirements

@@ -111,7 +111,7 @@

- + Precondition:

@@ -129,7 +129,7 @@ order according to the function object pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html index 3848c7d..bdfc489 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html @@ -3,7 +3,7 @@ count - + @@ -28,7 +28,7 @@ count

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/count.hpp

- + Requirements
    @@ -85,7 +85,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html index 4c404f8..d6d54a1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html @@ -3,7 +3,7 @@ equal - + @@ -28,7 +28,7 @@ equal

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -71,14 +71,14 @@ considered equal in the predicate version if pred(x,y) is true.

- + Definition

Defined in the header file boost/range/algorithm/equal.hpp

- + Requirements

@@ -139,7 +139,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html index b0daaaa..94bd133 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html @@ -3,7 +3,7 @@ equal_range - + @@ -28,7 +28,7 @@ equal_range

- + Prototype

@@ -71,7 +71,7 @@

- + Description

@@ -85,14 +85,14 @@ is determined by pred.

- + Definition

Defined in the header file boost/range/algorithm/equal_range.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Precondition:

@@ -155,7 +155,7 @@ is ordered in ascending order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html index 61fcff7..3e45381 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html @@ -3,7 +3,7 @@ find - + @@ -28,7 +28,7 @@ find

- + Prototype

@@ -38,6 +38,10 @@ typename range_iterator<SinglePassRange>::type find(SinglePassRange& rng, Value val); +template<class SinglePassRange, class Value> +typename range_iterator<const SinglePassRange>::type +find(const SinglePassRange& rng, Value val); + template< range_return_value re, class SinglePassRange, @@ -45,11 +49,19 @@ > typename range_return<SinglePassRange, re>::type find(SinglePassRange& rng, Value val); + +template< + range_return_value re, + class SinglePassRange, + class Value + > +typename range_return<const SinglePassRange, re>::type +find(const SinglePassRange& rng, Value val);

- + Description

@@ -60,14 +72,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find.hpp

- + Requirements
    @@ -88,7 +100,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html index 9e34f52..9412d18 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html @@ -3,7 +3,7 @@ find_end - + @@ -28,7 +28,7 @@ find_end

- + Prototype

@@ -38,6 +38,10 @@ typename range_iterator<ForwardRange1>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2); +template<class ForwardRange1, class ForwardRange2> +typename range_iterator<const ForwardRange1>::type +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2); + template< class ForwardRange1, class ForwardRange2, @@ -46,6 +50,15 @@ typename range_iterator<ForwardRange1>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); +template< + class ForwardRange1, + class ForwardRange2, + class BinaryPredicate + > +typename range_iterator<const ForwardRange1>::type +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); + + template< range_return_value re, class ForwardRange1, @@ -54,6 +67,14 @@ typename range_return<ForwardRange1, re>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2); +template< + range_return_value re, + class ForwardRange1, + class ForwardRange2 + > +typename range_return<const ForwardRange1, re>::type +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2); + template< range_return_value re, class ForwardRange1, @@ -62,11 +83,20 @@ > typename range_return<ForwardRange1, re>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); + +template< + range_return_value re, + class ForwardRange1, + class ForwardRange2, + class BinaryPredicate + > +typename range_return<const ForwardRange1, re>::type +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

- + Description

@@ -81,14 +111,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_end.hpp

- + Requirements

@@ -148,7 +178,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html index 53869de..5f15b42 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html @@ -3,7 +3,7 @@ find_first_of - + @@ -28,7 +28,7 @@ find_first_of

- + Prototype

@@ -38,6 +38,10 @@ typename range_iterator<SinglePassRange1>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2); +template<class SinglePassRange1, class ForwardRange2> +typename range_iterator<const SinglePassRange1>::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2); + template< class SinglePassRange1, class ForwardRange2, @@ -46,6 +50,15 @@ typename range_iterator<SinglePassRange1>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); +template< + class SinglePassRange1, + class ForwardRange2, + class BinaryPredicate + > +typename range_iterator<const SinglePassRange1>::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); + + template< range_return_value re, class SinglePassRange1, @@ -54,6 +67,14 @@ typename range_return<SinglePassRange1, re>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2); +template< + range_return_value re, + class SinglePassRange1, + class ForwardRange2 + > +typename range_return<const SinglePassRange1, re>::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2); + template< range_return_value re, class SinglePassRange1, @@ -62,11 +83,20 @@ > typename range_return<SinglePassRange1, re>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); + +template< + range_return_value re, + class SinglePassRange1, + class ForwardRange2, + class BinaryPredicate + > +typename range_return<const SinglePassRange1, re>::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

- + Description

@@ -86,14 +116,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_first_of.hpp

- + Requirements

@@ -147,7 +177,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html index 2c70400..424b833 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -28,7 +28,7 @@ find_if

- + Prototype

@@ -38,6 +38,10 @@ typename range_iterator<SinglePassRange>::type find_if(SinglePassRange& rng, UnaryPredicate pred); +template<class SinglePassRange, class UnaryPredicate> +typename range_iterator<const SinglePassRange>::type +find_if(const SinglePassRange& rng, UnaryPredicate pred); + template< range_return_value re, class SinglePassRange, @@ -45,11 +49,19 @@ > typename range_return<SinglePassRange, re>::type find_if(SinglePassRange& rng, UnaryPredicate pred); + +template< + range_return_value re, + class SinglePassRange, + class UnaryPredicate + > +typename range_return<const SinglePassRange, re>::type +find_if(const SinglePassRange& rng, UnaryPredicate pred);

- + Description

@@ -64,14 +76,14 @@ defines found in the same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_if.hpp

- + Requirements
    @@ -90,7 +102,7 @@
- + Precondition:

@@ -98,7 +110,7 @@ rng, *i is in the domain of UnaryPredicate.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html index b0984fd..3c85cc0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -59,14 +59,14 @@ fun(x).

- + Definition

Defined in the header file boost/range/algorithm/for_each.hpp

- + Requirements
    @@ -90,7 +90,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html index 359fafd..0cf9505 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html @@ -3,7 +3,7 @@ lexicographical_compare - + @@ -28,7 +28,7 @@ lexicographical_compare

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -73,14 +73,14 @@ predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html index 041d0c9..4e1f526 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html @@ -3,7 +3,7 @@ lower_bound - + @@ -28,7 +28,7 @@ lower_bound

- + Prototype

@@ -38,6 +38,10 @@ typename range_iterator<ForwardRange>::type lower_bound(ForwardRange& rng, Value val); +template<class ForwardRange, class Value> +typename range_iterator<const ForwardRange>::type +lower_bound(const ForwardRange& rng, Value val); + template< range_return_value re, class ForwardRange, @@ -45,11 +49,19 @@ > typename range_return<ForwardRange, re>::type lower_bound(ForwardRange& rng, Value val); + +template< + range_return_value re, + class ForwardRange, + class Value + > +typename range_return<const ForwardRange, re>::type +lower_bound(const ForwardRange& rng, Value val);

- + Description

@@ -72,14 +84,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/lower_bound.hpp

- + Requirements

@@ -130,7 +142,7 @@

- + Precondition:

@@ -148,7 +160,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html index b737e2f..8ca03f7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html @@ -3,7 +3,7 @@ max_element - + @@ -28,7 +28,7 @@ max_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/max_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html index 36d638d..08903d1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html @@ -3,7 +3,7 @@ min_element - + @@ -28,7 +28,7 @@ min_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/min_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html index 4fa63b8..5a168da 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html @@ -3,7 +3,7 @@ mismatch - + @@ -28,7 +28,7 @@ mismatch

- + Prototype

@@ -106,7 +106,7 @@

- + Description

@@ -124,14 +124,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/mismatch.hpp

- + Requirements

@@ -192,14 +192,14 @@

- + Precondition:

distance(rng2) >= distance(rng1)

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html index eb0ab4a..1dcf8c0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html @@ -3,7 +3,7 @@ search - + @@ -28,7 +28,7 @@ search

- + Prototype

@@ -96,7 +96,7 @@

- + Description

@@ -115,14 +115,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/search.hpp

- + Requirements

@@ -183,7 +183,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html index a2e50f9..8db1558 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html @@ -3,7 +3,7 @@ upper_bound - + @@ -28,7 +28,7 @@ upper_bound

- + Prototype

@@ -38,6 +38,10 @@ typename range_iterator<ForwardRange>::type upper_bound(ForwardRange& rng, Value val); +template<class ForwardRange, class Value> +typename range_iterator<const ForwardRange>::type +upper_bound(const ForwardRange& rng, Value val); + template< range_return_value re, class ForwardRange, @@ -45,11 +49,19 @@ > typename range_return<ForwardRange, re>::type upper_bound(ForwardRange& rng, Value val); + +template< + range_return_value re, + class ForwardRange, + class Value + > +typename range_return<const ForwardRange, re>::type +upper_bound(const ForwardRange& rng, Value val);

- + Description

@@ -71,14 +83,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/upper_bound.hpp

- + Requirements

@@ -129,7 +141,7 @@

- + Precondition:

@@ -147,7 +159,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric.html b/doc/html/range/reference/algorithms/range_numeric.html index 9da4d83..c6c6767 100644 --- a/doc/html/range/reference/algorithms/range_numeric.html +++ b/doc/html/range/reference/algorithms/range_numeric.html @@ -3,7 +3,7 @@ Numeric algorithms - + diff --git a/doc/html/range/reference/algorithms/range_numeric/accumulate.html b/doc/html/range/reference/algorithms/range_numeric/accumulate.html index 81c5f00..448b1fa 100644 --- a/doc/html/range/reference/algorithms/range_numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/range_numeric/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -28,7 +28,7 @@ accumulate

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -64,18 +64,18 @@ The return value is the resultant value of the above algorithm.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -100,7 +100,7 @@
- + For the second version
@@ -134,7 +134,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html index 77e1701..8c76593 100644 --- a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html @@ -3,7 +3,7 @@ adjacent_difference - + @@ -28,7 +28,7 @@ adjacent_difference

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -69,18 +69,18 @@ instead of operator-().

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -111,7 +111,7 @@
- + For the second version
@@ -146,7 +146,7 @@
- + Precondition:

@@ -154,7 +154,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/inner_product.html b/doc/html/range/reference/algorithms/range_numeric/inner_product.html index 4937875..6d48b14 100644 --- a/doc/html/range/reference/algorithms/range_numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/range_numeric/inner_product.html @@ -3,7 +3,7 @@ inner_product - + @@ -28,7 +28,7 @@ inner_product

- + Prototype

@@ -54,7 +54,7 @@

- + Description

@@ -67,18 +67,18 @@ algorithm please see inner_product.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -113,7 +113,7 @@
- + For the second version
@@ -162,14 +162,14 @@
- + Precondition:

distance(rng2) >= distance(rng1) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html index bf87851..b89e58e 100644 --- a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html @@ -3,7 +3,7 @@ partial_sum - + @@ -28,7 +28,7 @@ partial_sum

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,18 +58,18 @@ in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -99,7 +99,7 @@
- + For the second version
@@ -128,7 +128,7 @@
- + Precondition:

@@ -136,7 +136,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms.html b/doc/html/range/reference/algorithms/set_algorithms.html index 447b470..b9888f5 100644 --- a/doc/html/range/reference/algorithms/set_algorithms.html +++ b/doc/html/range/reference/algorithms/set_algorithms.html @@ -3,7 +3,7 @@ Set algorithms - + diff --git a/doc/html/range/reference/algorithms/set_algorithms/includes.html b/doc/html/range/reference/algorithms/set_algorithms/includes.html index b20c2d6..015474a 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/includes.html +++ b/doc/html/range/reference/algorithms/set_algorithms/includes.html @@ -3,7 +3,7 @@ includes - + @@ -28,7 +28,7 @@ includes

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -60,14 +60,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Precondition:

@@ -163,7 +163,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html index a9b324c..58d8a54 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html @@ -3,7 +3,7 @@ set_difference - + @@ -28,7 +28,7 @@ set_difference

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html index fc93925..65840cd 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html @@ -3,7 +3,7 @@ set_intersection - + @@ -28,7 +28,7 @@ set_intersection

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html index 69d560e..a25e8e4 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html @@ -3,7 +3,7 @@ set_symmetric_difference - + @@ -28,7 +28,7 @@ set_symmetric_difference

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -75,14 +75,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -168,7 +168,7 @@

- + Precondition:

@@ -186,7 +186,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_union.html b/doc/html/range/reference/algorithms/set_algorithms/set_union.html index 074991a..90c343c 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_union.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_union.html @@ -3,7 +3,7 @@ set_union - + @@ -28,7 +28,7 @@ set_union

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -70,14 +70,14 @@ in the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -163,7 +163,7 @@

- + Precondition:

@@ -181,7 +181,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index 37f4882..fc32e83 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -3,7 +3,7 @@ Extending the library - + diff --git a/doc/html/range/reference/extending/method_1.html b/doc/html/range/reference/extending/method_1.html index 217524c..3283d10 100644 --- a/doc/html/range/reference/extending/method_1.html +++ b/doc/html/range/reference/extending/method_1.html @@ -3,7 +3,7 @@ Method 1: provide member functions and nested types - + diff --git a/doc/html/range/reference/extending/method_2.html b/doc/html/range/reference/extending/method_2.html index eae4cbd..f4f3524 100644 --- a/doc/html/range/reference/extending/method_2.html +++ b/doc/html/range/reference/extending/method_2.html @@ -3,7 +3,7 @@ Method 2: provide free-standing functions and specialize metafunctions - + diff --git a/doc/html/range/reference/extending/method_3.html b/doc/html/range/reference/extending/method_3.html index 3594ff8..f841237 100644 --- a/doc/html/range/reference/extending/method_3.html +++ b/doc/html/range/reference/extending/method_3.html @@ -3,7 +3,7 @@ Method 3: provide range adaptor implementations - + diff --git a/doc/html/range/reference/extending/method_3/method_3_1.html b/doc/html/range/reference/extending/method_3/method_3_1.html index 9370d65..e995bee 100644 --- a/doc/html/range/reference/extending/method_3/method_3_1.html +++ b/doc/html/range/reference/extending/method_3/method_3_1.html @@ -3,7 +3,7 @@ Method 3.1: Implement a Range Adaptor without arguments - + diff --git a/doc/html/range/reference/extending/method_3/method_3_2.html b/doc/html/range/reference/extending/method_3/method_3_2.html index f153d0e..f0bae90 100644 --- a/doc/html/range/reference/extending/method_3/method_3_2.html +++ b/doc/html/range/reference/extending/method_3/method_3_2.html @@ -3,7 +3,7 @@ Method 3.2: Implement a Range Adaptor with arguments - + diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html index 8db874f..ae0bbf0 100644 --- a/doc/html/range/reference/overview.html +++ b/doc/html/range/reference/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index 6e4ad0a..2e16372 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -3,7 +3,7 @@ Provided Ranges - + diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 50a40a7..b556488 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -3,7 +3,7 @@ counting_range - + @@ -27,7 +27,7 @@ counting_range

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -58,14 +58,14 @@ (from Boost.Iterator).

- + Definition

Defined in header file boost/range/counting_range.hpp

- + Requirements
  1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index 6411426..f4565c0 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -3,7 +3,7 @@ irange - + @@ -27,7 +27,7 @@ irange
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -58,14 +58,14 @@ parameters denoted a half-open range.

- + Definition

Defined in the header file boost/range/irange.hpp

- + Requirements
    @@ -79,7 +79,7 @@
- + Complexity

diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index d5a97f0..e7d81d8 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -3,7 +3,7 @@ istream_range - + @@ -27,7 +27,7 @@ istream_range

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

- + Definition

diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html index e7f24a5..fbb1aa8 100644 --- a/doc/html/range/reference/semantics.html +++ b/doc/html/range/reference/semantics.html @@ -3,7 +3,7 @@ Semantics - + @@ -31,7 +31,7 @@

Functions
- + notation
diff --git a/doc/html/range/reference/semantics/functions.html b/doc/html/range/reference/semantics/functions.html index 16bb7fb..232b680 100644 --- a/doc/html/range/reference/semantics/functions.html +++ b/doc/html/range/reference/semantics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/range/reference/semantics/metafunctions.html b/doc/html/range/reference/semantics/metafunctions.html index cc2f4bd..6df4902 100644 --- a/doc/html/range/reference/semantics/metafunctions.html +++ b/doc/html/range/reference/semantics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/range/reference/synopsis.html b/doc/html/range/reference/synopsis.html index c950490..248e8c1 100644 --- a/doc/html/range/reference/synopsis.html +++ b/doc/html/range/reference/synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index d6cde37..f064884 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -3,7 +3,7 @@ Terminology and style guidelines - + diff --git a/doc/html/range/upgrade.html b/doc/html/range/upgrade.html index 27ddd2b..ad53c37 100644 --- a/doc/html/range/upgrade.html +++ b/doc/html/range/upgrade.html @@ -3,7 +3,7 @@ Upgrade version of Boost.Range - + diff --git a/doc/html/range/upgrade/upgrade_from_1_34.html b/doc/html/range/upgrade/upgrade_from_1_34.html index 587555c..dfc4c52 100644 --- a/doc/html/range/upgrade/upgrade_from_1_34.html +++ b/doc/html/range/upgrade/upgrade_from_1_34.html @@ -3,7 +3,7 @@ Upgrade from version 1.34 - + diff --git a/doc/html/range/upgrade/upgrade_from_1_42.html b/doc/html/range/upgrade/upgrade_from_1_42.html index 74059e4..3fbc2d2 100644 --- a/doc/html/range/upgrade/upgrade_from_1_42.html +++ b/doc/html/range/upgrade/upgrade_from_1_42.html @@ -3,7 +3,7 @@ Upgrade from version 1.42 - + diff --git a/doc/html/range/utilities.html b/doc/html/range/utilities.html index c7bbf57..d9caa5f 100644 --- a/doc/html/range/utilities.html +++ b/doc/html/range/utilities.html @@ -3,7 +3,7 @@ Utilities - + diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html index a73e99a..07efc15 100644 --- a/doc/html/range/utilities/iterator_range.html +++ b/doc/html/range/utilities/iterator_range.html @@ -3,7 +3,7 @@ Class iterator_range - + @@ -47,7 +47,7 @@ limitation is simply propogated from the underlying iterator type.

- + Synopsis

@@ -187,7 +187,7 @@ iterators from the same container.

- + Details member functions
@@ -218,7 +218,7 @@

- + Details functions
diff --git a/doc/html/range/utilities/join.html b/doc/html/range/utilities/join.html index 2656ca3..c2c9e15 100644 --- a/doc/html/range/utilities/join.html +++ b/doc/html/range/utilities/join.html @@ -3,7 +3,7 @@ Function join - + @@ -39,7 +39,7 @@ if the end of a range has been reached internally during traversal.

- + Synposis

@@ -65,7 +65,7 @@

- + Example

diff --git a/doc/html/range/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html index 94b4d85..0b474d7 100644 --- a/doc/html/range/utilities/sub_range.html +++ b/doc/html/range/utilities/sub_range.html @@ -3,7 +3,7 @@ Class sub_range - + @@ -35,7 +35,7 @@ is.

- + Synopsis

From 3a6c6c6bcdcd0a6951cd594288a12d21e42668e7 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 5 Apr 2010 09:54:34 +0000 Subject: [PATCH 03/26] Boost.Range fix to the skip_iterator constructor used by adjacent_filter. On the templatised constructor the m_range variable was uninitialized. This may explain some of the failures for adjacent_filtered and uniqued on Intel compilers. [SVN r61066] --- include/boost/range/adaptor/adjacent_filtered.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/range/adaptor/adjacent_filtered.hpp b/include/boost/range/adaptor/adjacent_filtered.hpp index 4f0bb75..4a7a809 100644 --- a/include/boost/range/adaptor/adjacent_filtered.hpp +++ b/include/boost/range/adaptor/adjacent_filtered.hpp @@ -38,7 +38,7 @@ namespace boost typedef boost::iterator_adaptor< skip_iterator, Iter > base_t; - R* range; + R* m_range; public: typedef Iter wrapped_iter_t; @@ -52,21 +52,21 @@ namespace boost typedef std::input_iterator_tag iterator_category; explicit skip_iterator( R* r, Iter i ) - : base_t(i), range(r) {} + : base_t(i), m_range(r) {} template< class OtherIter, class R2> skip_iterator( const skip_iterator& other ) - : base_t( other.base() ) {} + : base_t( other.base() ), m_range(other.m_range) {} - R* get_range() const { return range; } + R* get_range() const { return m_range; } private: friend class boost::iterator_core_access; void increment() { - BOOST_ASSERT( range != 0 ); - range->increment_impl( this->base_reference() ); + BOOST_ASSERT( m_range != 0 ); + m_range->increment_impl( this->base_reference() ); } // From 704ce0186a6a8f7deb076a22becdc6b6ac4f1498 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 5 Apr 2010 14:12:24 +0000 Subject: [PATCH 04/26] Boost.Range fix to the combine function that did not show as a defect on most compilers. This iteration also makes the code compatible with more compilers. [SVN r61071] --- include/boost/range/combine.hpp | 272 +++++++++++++++----------------- test/combine.cpp | 20 +-- 2 files changed, 140 insertions(+), 152 deletions(-) diff --git a/include/boost/range/combine.hpp b/include/boost/range/combine.hpp index 31a540b..8b1be00 100755 --- a/include/boost/range/combine.hpp +++ b/include/boost/range/combine.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -14,40 +15,48 @@ namespace boost { - namespace detail + namespace range_detail { struct void_ { typedef void_ type; }; } - template<> struct range_iterator + template<> struct range_iterator< ::boost::range_detail::void_ > { - typedef tuples::null_type type; + typedef ::boost::tuples::null_type type; }; - namespace detail + namespace range_detail { - inline tuples::null_type range_begin( void_& ) - { return tuples::null_type(); } + inline ::boost::tuples::null_type range_begin( ::boost::range_detail::void_& ) + { return ::boost::tuples::null_type(); } - inline tuples::null_type range_end( void_& ) - { return tuples::null_type(); } + inline ::boost::tuples::null_type range_begin( const ::boost::range_detail::void_& ) + { return ::boost::tuples::null_type(); } + + inline ::boost::tuples::null_type range_end( ::boost::range_detail::void_& ) + { return ::boost::tuples::null_type(); } + + inline ::boost::tuples::null_type range_end( const ::boost::range_detail::void_& ) + { return ::boost::tuples::null_type(); } template< class T > struct tuple_iter { - typedef typename mpl::eval_if_c< is_same::value, - mpl::identity, - range_iterator >::type - type; + typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::eval_if_c< + ::boost::is_same::value, + ::boost::mpl::identity< ::boost::tuples::null_type >, + ::boost::range_iterator + >::type type; }; template< class Rng1, class Rng2 > struct tuple_range { - typedef typename mpl::eval_if_c< is_same::value, - void_, - mpl::identity >::type - type; + typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::eval_if_c< + ::boost::is_same::value, + ::boost::range_detail::void_, + ::boost::mpl::identity + >::type type; }; template @@ -57,36 +66,37 @@ namespace boost class R3, class R4, class R5, - class R6 + class R6 > struct generate_tuple { - typedef boost::tuple< typename tuple_iter::type, - typename tuple_iter::type, - typename tuple_iter::type, - typename tuple_iter::type, - typename tuple_iter::type, - typename tuple_iter::type > - type; + typedef ::boost::tuples::tuple< + BOOST_DEDUCED_TYPENAME tuple_iter::type, + BOOST_DEDUCED_TYPENAME tuple_iter::type, + BOOST_DEDUCED_TYPENAME tuple_iter::type, + BOOST_DEDUCED_TYPENAME tuple_iter::type, + BOOST_DEDUCED_TYPENAME tuple_iter::type, + BOOST_DEDUCED_TYPENAME tuple_iter::type + > type; static type begin( R1& r1, R2& r2, R3& r3, R4& r4, R5& r5, R6& r6 ) { - return make_tuple( boost::begin(r1), - boost::begin(r2), - boost::begin(r3), - boost::begin(r4), - boost::begin(r5), - boost::begin(r6) ); + return ::boost::tuples::make_tuple( ::boost::begin(r1), + ::boost::begin(r2), + ::boost::begin(r3), + ::boost::begin(r4), + ::boost::begin(r5), + ::boost::begin(r6) ); } static type end( R1& r1, R2& r2, R3& r3, R4& r4, R5& r5, R6& r6 ) { - return make_tuple( boost::end(r1), - boost::end(r2), - boost::end(r3), - boost::end(r4), - boost::end(r5), - boost::end(r6) ); + return ::boost::tuples::make_tuple( ::boost::end(r1), + ::boost::end(r2), + ::boost::end(r3), + ::boost::end(r4), + ::boost::end(r5), + ::boost::end(r6) ); } }; @@ -101,54 +111,52 @@ namespace boost > struct zip_rng : iterator_range< - zip_iterator< typename generate_tuple::type > - > + zip_iterator< + BOOST_DEDUCED_TYPENAME generate_tuple::type + > + > { private: - typedef generate_tuple - generator; - typedef typename generator::type - tuple; - typedef zip_iterator - zip_iter; - typedef iterator_range - base; + typedef generate_tuple generator_t; + typedef BOOST_DEDUCED_TYPENAME generator_t::type tuple_t; + typedef zip_iterator zip_iter_t; + typedef iterator_range base_t; public: zip_rng( R1& r1, R2& r2, R3& r3, R4& r4, R5& r5, R6& r6 ) - : base( zip_iter( generator::begin(r1,r2,r3,r4,r5,r6) ), - zip_iter( generator::end(r1,r2,r3,r4,r5,r6) ) ) + : base_t( zip_iter_t( generator_t::begin(r1,r2,r3,r4,r5,r6) ), + zip_iter_t( generator_t::end(r1,r2,r3,r4,r5,r6) ) ) { - BOOST_ASSERT(boost::distance(r1) <= boost::distance(r2)); - BOOST_ASSERT(boost::distance(r1) <= boost::distance(r3)); - BOOST_ASSERT(boost::distance(r1) <= boost::distance(r4)); - BOOST_ASSERT(boost::distance(r1) <= boost::distance(r5)); - BOOST_ASSERT(boost::distance(r1) <= boost::distance(r6)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r2)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r3)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r4)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r5)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r6)); } template< class Zip, class Rng > zip_rng( Zip& z, Rng& r ) - : base( zip_iter( generator::begin( z, r ) ), - zip_iter( generator::end( z, r ) ) ) + : base_t( zip_iter_t( generator_t::begin( z, r ) ), + zip_iter_t( generator_t::end( z, r ) ) ) { // @todo: tuple::begin( should be overloaded for this situation } - struct tuple_length : tuples::length + struct tuple_length : ::boost::tuples::length { }; template< unsigned N > struct get { template< class Z, class R > - static typename tuples::element::type begin( Z& z, R& ) + static BOOST_DEDUCED_TYPENAME ::boost::tuples::element::type begin( Z& z, R& ) { return get( z.begin().get_iterator_tuple() ); } template< class Z, class R > - static typename tuples::element::type end( Z& z, R& r ) + static BOOST_DEDUCED_TYPENAME ::boost::tuples::element::type end( Z& z, R& r ) { return get( z.end().get_iterator_tuple() ); } @@ -157,64 +165,70 @@ namespace boost }; template< class Rng1, class Rng2 > - struct zip_range - : iterator_range< - zip_iterator< - tuple< typename range_iterator::type, - typename range_iterator::type > - > > + struct zip_range + : iterator_range< + zip_iterator< + ::boost::tuples::tuple< + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type + > + > + > { private: - typedef zip_iterator< - tuple< typename range_iterator::type, - typename range_iterator::type > + typedef zip_iterator< + ::boost::tuples::tuple< + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type > - zip_iter; - typedef iterator_range - base; + > zip_iter_t; + typedef iterator_range base_t; public: zip_range( Rng1& r1, Rng2& r2 ) - : base( zip_iter( make_tuple(boost::begin(r1), - boost::begin(r2)) ), - zip_iter( make_tuple(boost::end(r1), - boost::end(r2)) ) ) + : base_t( zip_iter_t( ::boost::tuples::make_tuple(::boost::begin(r1), + ::boost::begin(r2)) ), + zip_iter_t( ::boost::tuples::make_tuple(::boost::end(r1), + ::boost::end(r2)) ) ) { - BOOST_ASSERT(boost::distance(r1) <= boost::distance(r2)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r2)); } }; template< class Rng1, class Rng2, class Rng3 > - struct zip_range3 - : iterator_range< - zip_iterator< - tuple< typename range_iterator::type, - typename range_iterator::type, - typename range_iterator::type > - > > + struct zip_range3 + : iterator_range< + zip_iterator< + ::boost::tuples::tuple< + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type + > + > + > { private: - typedef zip_iterator< - tuple< typename range_iterator::type, - typename range_iterator::type, - typename range_iterator::type > - > - zip_iter; - typedef iterator_range - base; + typedef zip_iterator< + ::boost::tuples::tuple< + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME ::boost::range_iterator::type + > + > zip_iter_t; + typedef iterator_range base_t; public: zip_range3( Rng1& r1, Rng2& r2, Rng3& r3 ) - : base( zip_iter( make_tuple(boost::begin(r1), - boost::begin(r2), - boost::begin(r3)) ), - zip_iter( make_tuple(boost::end(r1), - boost::end(r2), - boost::end(r3)) ) - ) + : base_t( zip_iter_t( ::boost::tuples::make_tuple(::boost::begin(r1), + ::boost::begin(r2), + ::boost::begin(r3)) ), + zip_iter_t( ::boost::tuples::make_tuple(::boost::end(r1), + ::boost::end(r2), + ::boost::end(r3)) ) + ) { - BOOST_ASSERT(distance(r1) <= distance(r2)); - BOOST_ASSERT(distance(r1) <= distance(r3)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r2)); + BOOST_ASSERT(::boost::distance(r1) <= ::boost::distance(r3)); } }; @@ -222,89 +236,61 @@ namespace boost struct combine_tag {}; template< class Rng > - inline zip_rng + inline zip_rng operator&( combine_tag, Rng& r ) { return zip_rng(r); } template< class Rng > - inline iterator_range + inline iterator_range operator&( combine_tag, const Rng& r ) { return iterator_range(r); } template - < - class R1, + < + class R1, class R2, class R3, class R4, class R5, class Rng > - inline typename zip_rng::next - operator&( const zip_rng& zip, + inline BOOST_DEDUCED_TYPENAME zip_rng::next + operator&( const zip_rng& zip, Rng& r ) { return zip_rng::next( zip, r ); } - // - // This one should be able to be made generic - // - // template - // < - // class R1, - // class R2 = void, - // class R3 = void, - // class R4 = void, - // class R5 = void, - // class R6 = void - // > - // inline zip_range::type - // x - // - // - /* - template< class Rng1, class Rng2, class Rng3 > - inline zip_range3 - operator&( const zip_range& r1, const Rng3& r3 ) - { - return zip_range3( - }*/ - - } // namespace 'detail' + } // namespace range_detail template< class Rng1, class Rng2 > - inline detail::zip_range combine( Rng1& r1, Rng2& r2 ) + inline ::boost::range_detail::zip_range combine( Rng1& r1, Rng2& r2 ) { - return detail::zip_range(r1,r2); + return ::boost::range_detail::zip_range(r1, r2); } template< class Rng1, class Rng2 > - inline detail::zip_range combine( const Rng1& r1, Rng2& r2 ) + inline ::boost::range_detail::zip_range combine( const Rng1& r1, Rng2& r2 ) { - return detail::zip_range(r1,r2); + return ::boost::range_detail::zip_range(r1, r2); } template< class Rng1, class Rng2 > - inline detail::zip_range combine( Rng1& r1, const Rng2& r2 ) + inline ::boost::range_detail::zip_range combine( Rng1& r1, const Rng2& r2 ) { - return detail::zip_range(r1,r2); + return ::boost::range_detail::zip_range(r1, r2); } template< class Rng1, class Rng2 > - inline detail::zip_range combine( const Rng1& r1, const Rng2& r2 ) + inline ::boost::range_detail::zip_range combine( const Rng1& r1, const Rng2& r2 ) { - return detail::zip_range(r1,r2); + return ::boost::range_detail::zip_range(r1, r2); } - // - // @todo: find a solution that scales better - // instead of adding 6 overloads! - // -} +} // namespace boost #endif diff --git a/test/combine.cpp b/test/combine.cpp index 9e29a11..c020626 100644 --- a/test/combine.cpp +++ b/test/combine.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -26,23 +26,25 @@ struct add }; template< class CombinedRng > -void apply( const CombinedRng& r ) +void apply( const CombinedRng& r ) { std::vector v; - for( typename boost::range_iterator::type - i = boost::begin(r), - e = boost::end(r); - i != e; ++i ) + typedef BOOST_DEDUCED_TYPENAME boost::range_iterator::type iterator_t; + + iterator_t e = boost::end(r); + for (iterator_t i = boost::begin(r); i != e; ++i) { - } } void test_combine() { std::vector v1, v2, v3; - v1 = boost::assign::list_of(1)(2)(3)(4); - v2 = boost::assign::list_of(1)(2)(3)(4); + for (int i = 1; i <= 4; ++i) + { + v1.push_back(i); + v2.push_back(i); + } int i1, i2; BOOST_FOREACH( boost::tie( i1, i2 ), boost::combine(v1,v2) ) From 6e2e1d592bbda248a8d6e8cc4fc9468d095e9952 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 5 Apr 2010 17:36:10 +0000 Subject: [PATCH 05/26] Boost.Range - fixed documentation Jamfile defect and added the algorithm extension iota to the documentation. [SVN r61072] --- doc/Jamfile.v2 | 18 ++------ doc/boost_range.qbk | 18 ++++---- doc/html/index.html | 6 +-- doc/html/quickbook_HTML.manifest | 1 + doc/html/range/concepts.html | 2 +- .../range/concepts/bidirectional_range.html | 20 ++++----- doc/html/range/concepts/concept_checking.html | 10 ++--- doc/html/range/concepts/forward_range.html | 14 +++---- doc/html/range/concepts/overview.html | 2 +- .../range/concepts/random_access_range.html | 16 +++---- .../range/concepts/single_pass_range.html | 20 ++++----- doc/html/range/examples.html | 2 +- doc/html/range/faq.html | 2 +- doc/html/range/history_ack.html | 2 +- doc/html/range/introduction.html | 6 +-- doc/html/range/library_headers.html | 2 +- doc/html/range/mfc_atl.html | 6 +-- doc/html/range/mfc_atl/atl_ranges.html | 2 +- doc/html/range/mfc_atl/const_ranges.html | 2 +- doc/html/range/mfc_atl/mfc_ranges.html | 2 +- doc/html/range/mfc_atl/references.html | 2 +- doc/html/range/mfc_atl/requirements.html | 2 +- doc/html/range/portability.html | 2 +- doc/html/range/reference.html | 2 +- doc/html/range/reference/adaptors.html | 2 +- .../adaptors_general_requirements.html | 2 +- .../adaptors/adaptors_introduction.html | 8 ++-- .../adaptors/adaptors_reference.html | 2 +- .../adaptors_reference/adjacent_filtered.html | 2 +- .../adaptors/adaptors_reference/copied.html | 2 +- .../adaptors/adaptors_reference/filtered.html | 2 +- .../adaptors/adaptors_reference/indexed.html | 2 +- .../adaptors_reference/indirected.html | 2 +- .../adaptors/adaptors_reference/map_keys.html | 2 +- .../adaptors_reference/map_values.html | 2 +- .../adaptors/adaptors_reference/replaced.html | 2 +- .../adaptors_reference/replaced_if.html | 2 +- .../adaptors/adaptors_reference/reversed.html | 2 +- .../adaptors/adaptors_reference/sliced.html | 2 +- .../adaptors/adaptors_reference/strided.html | 2 +- .../adaptors_reference/tokenized.html | 2 +- .../adaptors_reference/transformed.html | 2 +- .../adaptors/adaptors_reference/uniqued.html | 2 +- .../reference/adaptors/adaptors_synopsis.html | 2 +- doc/html/range/reference/algorithms.html | 2 +- .../reference/algorithms/heap_algorithms.html | 2 +- .../algorithms/heap_algorithms/make_heap.html | 12 +++--- .../algorithms/heap_algorithms/pop_heap.html | 14 +++---- .../algorithms/heap_algorithms/push_heap.html | 14 +++---- .../algorithms/permutation_algorithms.html | 2 +- .../next_permutation.html | 12 +++--- .../prev_permutation.html | 12 +++--- .../range_algorithm_introduction.html | 2 +- .../range_algorithm_mutating_algorithms.html | 2 +- .../copy.html | 14 +++---- .../copy_backward.html | 14 +++---- .../fill.html | 12 +++--- .../generate.html | 14 +++---- .../inplace_merge.html | 18 ++++---- .../merge.html | 18 ++++---- .../nth_element.html | 12 +++--- .../partial_sort.html | 12 +++--- .../partition.html | 12 +++--- .../random_shuffle.html | 14 +++---- .../remove.html | 12 +++--- .../remove_if.html | 12 +++--- .../replace.html | 12 +++--- .../replace_if.html | 12 +++--- .../rotate.html | 14 +++---- .../sort.html | 12 +++--- .../stable_partition.html | 12 +++--- .../stable_sort.html | 12 +++--- .../transform.html | 14 +++---- .../unique.html | 12 +++--- .../range_algorithm_new_algorithms.html | 4 +- .../range_algorithm_new_algorithms/erase.html | 12 +++--- .../for_each.html | 12 +++--- .../insert.html | 18 ++++---- .../overwrite.html | 18 ++++---- .../push_back.html | 12 +++--- .../push_front.html | 12 +++--- .../remove_erase.html | 12 +++--- .../remove_erase_if.html | 12 +++--- ...nge_algorithm_non_mutating_algorithms.html | 2 +- .../adjacent_find.html | 12 +++--- .../binary_search.html | 14 +++---- .../count.html | 12 +++--- .../equal.html | 12 +++--- .../equal_range.html | 14 +++---- .../find.html | 24 +++-------- .../find_end.html | 42 +++---------------- .../find_first_of.html | 42 +++---------------- .../find_if.html | 26 ++++-------- .../for_each.html | 12 +++--- .../lexicographical_compare.html | 12 +++--- .../lower_bound.html | 26 ++++-------- .../max_element.html | 12 +++--- .../min_element.html | 12 +++--- .../mismatch.html | 14 +++---- .../search.html | 12 +++--- .../upper_bound.html | 26 ++++-------- .../reference/algorithms/range_numeric.html | 2 +- .../algorithms/range_numeric/accumulate.html | 16 +++---- .../range_numeric/adjacent_difference.html | 18 ++++---- .../range_numeric/inner_product.html | 18 ++++---- .../algorithms/range_numeric/partial_sum.html | 18 ++++---- .../reference/algorithms/set_algorithms.html | 2 +- .../algorithms/set_algorithms/includes.html | 14 +++---- .../set_algorithms/set_difference.html | 14 +++---- .../set_algorithms/set_intersection.html | 14 +++---- .../set_symmetric_difference.html | 14 +++---- .../algorithms/set_algorithms/set_union.html | 14 +++---- doc/html/range/reference/extending.html | 2 +- .../range/reference/extending/method_1.html | 4 +- .../range/reference/extending/method_2.html | 2 +- .../range/reference/extending/method_3.html | 2 +- .../extending/method_3/method_3_1.html | 2 +- .../extending/method_3/method_3_2.html | 2 +- doc/html/range/reference/overview.html | 2 +- doc/html/range/reference/ranges.html | 2 +- .../reference/ranges/counting_range.html | 10 ++--- doc/html/range/reference/ranges/irange.html | 12 +++--- .../range/reference/ranges/istream_range.html | 8 ++-- doc/html/range/reference/semantics.html | 4 +- .../range/reference/semantics/functions.html | 2 +- .../reference/semantics/metafunctions.html | 2 +- doc/html/range/reference/synopsis.html | 2 +- doc/html/range/style_guide.html | 4 +- doc/html/range/upgrade.html | 2 +- doc/html/range/upgrade/upgrade_from_1_34.html | 2 +- doc/html/range/upgrade/upgrade_from_1_42.html | 2 +- doc/html/range/utilities.html | 4 +- doc/html/range/utilities/iterator_range.html | 10 ++--- doc/html/range/utilities/join.html | 6 +-- doc/html/range/utilities/sub_range.html | 4 +- doc/reference/algorithm_ext/iota.qbk | 2 +- 136 files changed, 552 insertions(+), 669 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index e286110..5195b32 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -8,20 +8,12 @@ #// For more information, see http://www.boost.org/libs/range/ #// - -#use-project boost : $(BOOST_ROOT) ; - project boost/libs/range/doc ; -import boostbook : boostbook ; -#import quickbook ; +using boostbook ; using quickbook ; path-constant images_location : html ; -#xml boost_range : boost_range.qbk ; - -#boostbook standalone - boostbook quickbook : boost_range.qbk @@ -34,11 +26,7 @@ boostbook quickbook toc.section.depth=3 toc.max.depth=3 generate.section.toc.level=4 - -# generate.section.toc.level=4 -# chunk.first.sections=7 -# toc.section.depth=10 - pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html - pdf:img.src.path=$(images_location)/ + pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html + pdf:img.src.path=$(images_location)/ ; diff --git a/doc/boost_range.qbk b/doc/boost_range.qbk index 45af6c4..1d56b82 100644 --- a/doc/boost_range.qbk +++ b/doc/boost_range.qbk @@ -64,17 +64,17 @@ [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]] -[def __bidirectional_traversal_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators Bidirectional Traversal Iterator]] -[def __random_access_traversal_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#random-access-traversal-iterators-lib-random-access-traversal-iterators Random Access Traversal Iterator]] -[def __new_style_iterators__ [@../../libs/iterator/doc/new-iter-concepts.html new style iterators]] -[def __iterator_concepts__ [@../../libs/iterator/doc/iterator_concepts.html Iterator concepts]] +[def __single_pass_iterator__ [@boost:/libs/iterator/doc/new-iter-concepts.html#singls-pass-iterators-lib-single-pass-iterators Single Pass Iterator]] +[def __forward_traversal_iterator__ [@boost:/libs/iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators Forward Traversal Iterator]] +[def __bidirectional_traversal_iterator__ [@boost:/libs/iterator/doc/new-iter-concepts.html#bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators Bidirectional Traversal Iterator]] +[def __random_access_traversal_iterator__ [@boost:/libs/iterator/doc/new-iter-concepts.html#random-access-traversal-iterators-lib-random-access-traversal-iterators Random Access Traversal Iterator]] +[def __new_style_iterators__ [@boost:/libs/iterator/doc/new-iter-concepts.html new style iterators]] +[def __iterator_concepts__ [@boost:/libs/iterator/doc/iterator_concepts.html Iterator concepts]] [def __container__ [@http://www.sgi.com/Technology/STL/Container.html Container]] -[def __metafunctions__ [@../../libs/mpl/doc/refmanual/metafunction.html metafunctions]] -[def __concept_check__ [@../../libs/concept_check/index.html Boost Concept Check library]] -[def __boost_array__ [@../../libs/array/index.html boost::array]] +[def __metafunctions__ [@boost:/libs/mpl/doc/refmanual/metafunction.html metafunctions]] +[def __concept_check__ [@boost:/libs/concept_check/index.html Boost Concept Check library]] +[def __boost_array__ [@boost:/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]] diff --git a/doc/html/index.html b/doc/html/index.html index 4f1a4a1..f5bb91c 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Range 2.0 - + @@ -30,7 +30,7 @@

-

+

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)

@@ -135,7 +135,7 @@

- +

Last revised: April 03, 2010 at 08:56:46 GMT

Last revised: April 05, 2010 at 17:25:33 GMT


diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index b3be8f5..67e69fa 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -91,6 +91,7 @@ range/reference/algorithms/range_algorithm_new_algorithms.html range/reference/algorithms/range_algorithm_new_algorithms/erase.html range/reference/algorithms/range_algorithm_new_algorithms/for_each.html range/reference/algorithms/range_algorithm_new_algorithms/insert.html +range/reference/algorithms/range_algorithm_new_algorithms/iota.html range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html range/reference/algorithms/range_algorithm_new_algorithms/push_back.html range/reference/algorithms/range_algorithm_new_algorithms/push_front.html diff --git a/doc/html/range/concepts.html b/doc/html/range/concepts.html index c384122..c43b67c 100644 --- a/doc/html/range/concepts.html +++ b/doc/html/range/concepts.html @@ -3,7 +3,7 @@ Range Concepts - + diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 796ca14..0fc965b 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -3,7 +3,7 @@ Bidirectional Range - + @@ -27,7 +27,7 @@ Bidirectional Range
- + Notation
@@ -65,17 +65,17 @@
- + 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 + of Bidirectional Traversal Iterator.

- + Refinement of
@@ -83,7 +83,7 @@ Forward Range

- + Associated types
@@ -136,7 +136,7 @@
- + Valid expressions
@@ -221,7 +221,7 @@
- + Complexity guarantees
@@ -232,7 +232,7 @@ Forward Range.

- + Invariants
@@ -272,7 +272,7 @@
- + See also

diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index 37175b4..a4aa1d9 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -3,7 +3,7 @@ Concept Checking - + @@ -29,7 +29,7 @@

Each of the range concepts has a corresponding concept checking class in the file <boost/range/concepts.hpp>. - These classes may be used in conjunction with the Boost + These classes may be used in conjunction with the Boost Concept Check library to ensure 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 @@ -79,17 +79,17 @@

- + See also

Range Terminology and style guidelines

- Iterator concepts + Iterator concepts

- Boost Concept Check library + Boost Concept Check library

diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index 9076b68..f82d8c5 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -3,7 +3,7 @@ Forward Range - + @@ -27,7 +27,7 @@ Forward Range
- + Notation
@@ -65,22 +65,22 @@
- + Description

- A range X where boost::range_iterator<X>::type is a model of Forward + A range X where boost::range_iterator<X>::type is a model of Forward Traversal Iterator.

- + Refinement of

Single Pass Range

- + Associated types
@@ -132,7 +132,7 @@
- + See also

diff --git a/doc/html/range/concepts/overview.html b/doc/html/range/concepts/overview.html index 7cd19e8..c2bb4d1 100644 --- a/doc/html/range/concepts/overview.html +++ b/doc/html/range/concepts/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index 97b3171..cc5d88e 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -3,7 +3,7 @@ Random Access Range - + @@ -27,15 +27,15 @@ Random Access Range

- + Description

- A range X where boost::range_iterator<X>::type is a model of Random + A range X where boost::range_iterator<X>::type is a model of Random Access Traversal Iterator.

- + Refinement of
@@ -43,7 +43,7 @@ Bidirectional Range

- + Valid expressions
@@ -89,7 +89,7 @@
- + Expression semantics
@@ -139,7 +139,7 @@
- + Complexity guarantees
@@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

- + Invariants
diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 10669d1..9cb3123 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -3,7 +3,7 @@ Single Pass Range - + @@ -27,7 +27,7 @@ Single Pass Range
- + Notation
@@ -65,15 +65,15 @@
- + Description

- A range X where boost::range_iterator<X>::type is a model of Single + A range X where boost::range_iterator<X>::type is a model of Single Pass Iterator.

- + Associated types
@@ -126,7 +126,7 @@
- + Valid expressions
@@ -198,7 +198,7 @@
- + Expression semantics
@@ -266,7 +266,7 @@
- + Complexity guarantees
@@ -276,7 +276,7 @@ constant time.

- + Invariants
@@ -316,7 +316,7 @@
- + See also

diff --git a/doc/html/range/examples.html b/doc/html/range/examples.html index b272df8..f517040 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -3,7 +3,7 @@ Examples - + diff --git a/doc/html/range/faq.html b/doc/html/range/faq.html index 0c9d40b..a5ea15d 100644 --- a/doc/html/range/faq.html +++ b/doc/html/range/faq.html @@ -3,7 +3,7 @@ FAQ - + diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index 930b6b6..2401db3 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -3,7 +3,7 @@ History and Acknowledgement - + diff --git a/doc/html/range/introduction.html b/doc/html/range/introduction.html index 8bce31d..e41a60c 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -50,7 +50,7 @@ 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 + metafunctions and free-standing functions so syntactic and/or semantic differences can be removed.

@@ -130,7 +130,7 @@

- By using the free-standing functions and metafunctions, + 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 versions of find() since we cannot forward a non-const rvalue with reference arguments (see this article diff --git a/doc/html/range/library_headers.html b/doc/html/range/library_headers.html index a5bd095..8f28283 100644 --- a/doc/html/range/library_headers.html +++ b/doc/html/range/library_headers.html @@ -3,7 +3,7 @@ Library Headers - + diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 8d5ed19..338e860 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -3,7 +3,7 @@ MFC/ATL (courtesy of Shunsuke Sogame) - + @@ -34,7 +34,7 @@

References
- + Introduction

@@ -100,7 +100,7 @@

- + Overview

diff --git a/doc/html/range/mfc_atl/atl_ranges.html b/doc/html/range/mfc_atl/atl_ranges.html index 65ee355..766375d 100644 --- a/doc/html/range/mfc_atl/atl_ranges.html +++ b/doc/html/range/mfc_atl/atl_ranges.html @@ -3,7 +3,7 @@ ATL Ranges - + diff --git a/doc/html/range/mfc_atl/const_ranges.html b/doc/html/range/mfc_atl/const_ranges.html index 2e047f6..222c6d8 100644 --- a/doc/html/range/mfc_atl/const_ranges.html +++ b/doc/html/range/mfc_atl/const_ranges.html @@ -3,7 +3,7 @@ const Ranges - + diff --git a/doc/html/range/mfc_atl/mfc_ranges.html b/doc/html/range/mfc_atl/mfc_ranges.html index af0c6e9..9e6d001 100644 --- a/doc/html/range/mfc_atl/mfc_ranges.html +++ b/doc/html/range/mfc_atl/mfc_ranges.html @@ -3,7 +3,7 @@ MFC Ranges - + diff --git a/doc/html/range/mfc_atl/references.html b/doc/html/range/mfc_atl/references.html index 124a538..8afe82a 100644 --- a/doc/html/range/mfc_atl/references.html +++ b/doc/html/range/mfc_atl/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/range/mfc_atl/requirements.html b/doc/html/range/mfc_atl/requirements.html index 131433f..c49ac8c 100644 --- a/doc/html/range/mfc_atl/requirements.html +++ b/doc/html/range/mfc_atl/requirements.html @@ -3,7 +3,7 @@ Requirements - + diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 901e0b1..63e3621 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -3,7 +3,7 @@ Portability - + diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index 70c17dc..a76673a 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index 5ab0ecd..bc68382 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -3,7 +3,7 @@ Range Adaptors - + diff --git a/doc/html/range/reference/adaptors/adaptors_general_requirements.html b/doc/html/range/reference/adaptors/adaptors_general_requirements.html index a815bae..ce2b17b 100644 --- a/doc/html/range/reference/adaptors/adaptors_general_requirements.html +++ b/doc/html/range/reference/adaptors/adaptors_general_requirements.html @@ -3,7 +3,7 @@ General Requirements - + diff --git a/doc/html/range/reference/adaptors/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html index efa54fd..3d61175 100644 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ b/doc/html/range/reference/adaptors/adaptors_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

- + Composition of Adaptors
@@ -159,7 +159,7 @@ is the design solution to this problem.

- + Range Adaptor alternative to copy_if algorithm
@@ -176,7 +176,7 @@

- + Range Adaptor alternative to count_if algorithm
diff --git a/doc/html/range/reference/adaptors/adaptors_reference.html b/doc/html/range/reference/adaptors/adaptors_reference.html index d284888..5a3dae6 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference.html +++ b/doc/html/range/reference/adaptors/adaptors_reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html index fa763c8..df72e28 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html @@ -3,7 +3,7 @@ adjacent_filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/copied.html b/doc/html/range/reference/adaptors/adaptors_reference/copied.html index 650e29a..b488800 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/copied.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/copied.html @@ -3,7 +3,7 @@ copied - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html index 1551a9f..04d418d 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html @@ -3,7 +3,7 @@ filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html index d8c8674..03ec01b 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html @@ -3,7 +3,7 @@ indexed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html index adcd57a..391abcc 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html @@ -3,7 +3,7 @@ indirected - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html index 95c1746..7af39c9 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html @@ -3,7 +3,7 @@ map_keys - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html index 553a8f3..810ba7a 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html @@ -3,7 +3,7 @@ map_values - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html index 0990ede..6af8257 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html @@ -3,7 +3,7 @@ replaced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html index abcf00f..f916472 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html @@ -3,7 +3,7 @@ replaced_if - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html index 52f4cda..2ef6d5d 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html @@ -3,7 +3,7 @@ reversed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html index 9793092..8901fa0 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html @@ -3,7 +3,7 @@ sliced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/strided.html b/doc/html/range/reference/adaptors/adaptors_reference/strided.html index 6fcc281..ca37e60 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/strided.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/strided.html @@ -3,7 +3,7 @@ strided - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html index fc4bc42..0b294b2 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html @@ -3,7 +3,7 @@ tokenized - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html index 56a6170..1947b6d 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html @@ -3,7 +3,7 @@ transformed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html index 3b314ab..1f7d9fb 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html @@ -3,7 +3,7 @@ uniqued - + diff --git a/doc/html/range/reference/adaptors/adaptors_synopsis.html b/doc/html/range/reference/adaptors/adaptors_synopsis.html index d0fea59..202a114 100644 --- a/doc/html/range/reference/adaptors/adaptors_synopsis.html +++ b/doc/html/range/reference/adaptors/adaptors_synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index fc70d02..99e1dad 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -3,7 +3,7 @@ Range Algorithm - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms.html b/doc/html/range/reference/algorithms/heap_algorithms.html index 25c45e4..2cdbaaa 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms.html +++ b/doc/html/range/reference/algorithms/heap_algorithms.html @@ -3,7 +3,7 @@ Heap algorithms - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html index d8d4033..083df4a 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html @@ -3,7 +3,7 @@ make_heap - + @@ -28,7 +28,7 @@ make_heap
- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -119,7 +119,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html index f1588b7..2e45c55 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html @@ -3,7 +3,7 @@ pop_heap - + @@ -28,7 +28,7 @@ pop_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html index 35b64ca..9bcf219 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html @@ -3,7 +3,7 @@ push_heap - + @@ -28,7 +28,7 @@ push_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms.html b/doc/html/range/reference/algorithms/permutation_algorithms.html index 12e33f9..a9e2392 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms.html @@ -3,7 +3,7 @@ Permutation algorithms - + diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html index 8521343..0a212cf 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html @@ -3,7 +3,7 @@ next_permutation - + @@ -28,7 +28,7 @@ next_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html index a1e0d1d..06b9d1d 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html @@ -3,7 +3,7 @@ prev_permutation - + @@ -28,7 +28,7 @@ prev_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_introduction.html b/doc/html/range/reference/algorithms/range_algorithm_introduction.html index 9f15ed5..f0aa6c4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_introduction.html +++ b/doc/html/range/reference/algorithms/range_algorithm_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html index 80710b0..fcd52d1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html @@ -3,7 +3,7 @@ Mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html index 0decd23..e88c627 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html @@ -3,7 +3,7 @@ Range Algorithm - copy - + @@ -28,7 +28,7 @@ Range Algorithm - copy

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -51,14 +51,14 @@ distance(source_rng)

- + Definition

Defined in the header file boost/range/algorithm/copy.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html index 541db9a..14d13c6 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html @@ -3,7 +3,7 @@ Range Algorithm - copy_backward - + @@ -28,7 +28,7 @@ Range Algorithm - copy_backward

- + Prototype

@@ -42,7 +42,7 @@

- + Description

@@ -60,14 +60,14 @@ denotes the end of the output sequence.

- + Definition

Defined in the header file boost/range/algorithm/copy_backward.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html index 4bb5340..f28518c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html @@ -3,7 +3,7 @@ Range Algorithm - fill - + @@ -28,7 +28,7 @@ Range Algorithm - fill

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ in the range rng.

- + Definition

Defined in the header file boost/range/algorithm/fill.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html index 1a5ba8a..68efa6a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html @@ -3,7 +3,7 @@ Range Algorithm - generate - + @@ -28,7 +28,7 @@ Range Algorithm - generate

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ Returns the resultant range.

- + Definition

Defined in the header file boost/range/algorithm/generate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html index fafc9d5..46ef629 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html @@ -3,7 +3,7 @@ Range Algorithm - inplace_merge - + @@ -28,7 +28,7 @@ Range Algorithm - inplace_merge

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -72,14 +72,14 @@ input range is preserved.

- + Definition

Defined in the header file boost/range/algorithm/inplace_merge.hpp

- + Requirements

@@ -116,11 +116,11 @@ argument types.

- + Precondition:
- + For the non-predicate version:
@@ -143,7 +143,7 @@
- + For the predicate version:
@@ -164,7 +164,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html index 9bd570e..5747eef 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html @@ -3,7 +3,7 @@ Range Algorithm - merge - + @@ -28,7 +28,7 @@ Range Algorithm - merge

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -76,14 +76,14 @@ version uses the predicate instead of operator<().

- + Definition

Defined in the header file boost/range/algorithm/merge.hpp

- + Requirements

@@ -151,11 +151,11 @@

- + Precondition:
- + For the non-predicate version:
@@ -190,7 +190,7 @@
- + For the predicate version:
@@ -221,7 +221,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html index b8d27f0..75f8d71 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html @@ -3,7 +3,7 @@ Range Algorithm - nth_element - + @@ -28,7 +28,7 @@ Range Algorithm - nth_element

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -66,14 +66,14 @@ is the same as the element that would be in that position if rng has been sorted.

- + Definition

Defined in the header file boost/range/algorithm/nth_element.hpp

- + Requirements

@@ -124,7 +124,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html index d218c43..1112ef2 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html @@ -3,7 +3,7 @@ Range Algorithm - partial_sort - + @@ -28,7 +28,7 @@ Range Algorithm - partial_sort

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -71,14 +71,14 @@ predicate instead.

- + Definition

Defined in the header file boost/range/algorithm/partial_sort.hpp

- + Requirements

@@ -129,7 +129,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html index 4136a2a..50b7b16 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html @@ -3,7 +3,7 @@ Range Algorithm - partition - + @@ -28,7 +28,7 @@ Range Algorithm - partition

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -81,14 +81,14 @@ corresponds to the middle iterator.

- + Definition

Defined in the header file boost/range/algorithm/partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html index 190f66f..023d799 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html @@ -3,7 +3,7 @@ Range Algorithm - random_shuffle - + @@ -28,7 +28,7 @@ Range Algorithm - random_shuffle

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the shuffles range.

- + Definition

Defined in the header file boost/range/algorithm/random_shuffle.hpp

- + Requirements

@@ -99,7 +99,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html index 4cb906c..65ab605 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html @@ -3,7 +3,7 @@ Range Algorithm - remove - + @@ -28,7 +28,7 @@ Range Algorithm - remove

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -84,14 +84,14 @@ are dereferenceable, but the elements are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html index 9896adc..227aeb0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html @@ -3,7 +3,7 @@ Range Algorithm - remove_if - + @@ -28,7 +28,7 @@ Range Algorithm - remove_if

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -83,14 +83,14 @@ are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html index ab4232d..e07aebb 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html @@ -3,7 +3,7 @@ Range Algorithm - replace - + @@ -28,7 +28,7 @@ Range Algorithm - replace

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,14 +58,14 @@ Return a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html index 7677651..fcf01b9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html @@ -3,7 +3,7 @@ Range Algorithm - replace_if - + @@ -28,7 +28,7 @@ Range Algorithm - replace_if

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html index 55faad4..e4c574f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html @@ -3,7 +3,7 @@ Range Algorithm - rotate - + @@ -28,7 +28,7 @@ Range Algorithm - rotate

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -54,14 +54,14 @@ and [middle, end(rng)). Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/rotate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html index 290f8e7..31adcdf 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html @@ -3,7 +3,7 @@ Range Algorithm - sort - + @@ -28,7 +28,7 @@ Range Algorithm - sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y, x) == false.

- + Definition

Defined in the header file boost/range/algorithm/sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html index eb0032a..a549bc5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html @@ -3,7 +3,7 @@ Range Algorithm - stable_partition - + @@ -28,7 +28,7 @@ Range Algorithm - stable_partition

- + Prototype

@@ -61,7 +61,7 @@

- + Description

@@ -83,14 +83,14 @@ the iterator to the first element that fails to satisfy pred.

- + Definition

Defined in the header file boost/range/algorithm/stable_partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html index 984024d..e02cfa3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html @@ -3,7 +3,7 @@ Range Algorithm - stable_sort - + @@ -28,7 +28,7 @@ Range Algorithm - stable_sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y,x) == false.

- + Definition

Defined in the header file boost/range/algorithm/stable_sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html index 58da4ca..82c53ea 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html @@ -3,7 +3,7 @@ Range Algorithm - transform - + @@ -28,7 +28,7 @@ Range Algorithm - transform

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -93,14 +93,14 @@ The return value is out + min(distance(rng1), distance(rng2)).

- + Definition

Defined in the header file boost/range/algorithm/transform.hpp

- + Requirements

@@ -170,7 +170,7 @@

- + Precondition:

@@ -202,7 +202,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html index aaa5525..13f388f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html @@ -3,7 +3,7 @@ Range Algorithm - unique - + @@ -28,7 +28,7 @@ Range Algorithm - unique

- + Prototype

@@ -69,7 +69,7 @@

- + Description

@@ -87,14 +87,14 @@ type.

- + Definition

Defined in the header file boost/range/algorithm/unique.hpp

- + Requirements

@@ -138,7 +138,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html index 7b34570..7976d61 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html @@ -3,7 +3,7 @@ New algorithms - + @@ -34,6 +34,8 @@ for_each

insert
+
+ iota
overwrite
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html index 3520dba..e3d64a6 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html @@ -3,7 +3,7 @@ erase - + @@ -28,7 +28,7 @@ erase
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -68,7 +68,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html index 4a1cb75..dfe62c3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -73,7 +73,7 @@

- + Description

@@ -89,14 +89,14 @@ It is safe to call this function with unequal length ranges.

- + Definition

Defined in the header file boost/range/algorithm_ext/for_each.hpp

- + Requirements
    @@ -126,7 +126,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html index fc06253..e0aa512 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html @@ -3,11 +3,11 @@ insert - + - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ insert
- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/insert.hpp

- + Requirements
    @@ -82,7 +82,7 @@
- + Complexity

@@ -100,7 +100,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html index b856c39..189151b 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html @@ -3,10 +3,10 @@ overwrite - + - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ overwrite
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ into the range to.

- + Definition

Defined in the header file boost/range/algorithm_ext/overwrite.hpp

- + Requirements
    @@ -87,7 +87,7 @@
- + Complexity

@@ -105,7 +105,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html index 26741e2..1357275 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -28,7 +28,7 @@ push_back
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the back of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_back.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html index 4afd63c..d91db73 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -28,7 +28,7 @@ push_front

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the front of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_front.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html index f80666a..5963cab 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html @@ -3,7 +3,7 @@ remove_erase - + @@ -28,7 +28,7 @@ remove_erase

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -54,14 +54,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -69,7 +69,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html index 0f4c190..4469f02 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html @@ -3,7 +3,7 @@ remove_erase_if - + @@ -28,7 +28,7 @@ remove_erase_if

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -55,14 +55,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
    @@ -76,7 +76,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html index 87820b8..2e8a2d1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html @@ -3,7 +3,7 @@ Non-mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html index e45a101..d14634a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html @@ -3,7 +3,7 @@ Range Algorithm - adjacent_find - + @@ -28,7 +28,7 @@ Range Algorithm - adjacent_find

- + Prototype

@@ -77,7 +77,7 @@

- + Description

@@ -98,14 +98,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/adjacent_find.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html index 247d8bc..e87ccbe 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html @@ -3,7 +3,7 @@ binary_search - + @@ -28,7 +28,7 @@ binary_search

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ range rng.

- + Definition

Defined in the header file boost/range/algorithm/binary_search.hpp

- + Requirements

@@ -111,7 +111,7 @@

- + Precondition:

@@ -129,7 +129,7 @@ order according to the function object pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html index bdfc489..3e36aa5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html @@ -3,7 +3,7 @@ count - + @@ -28,7 +28,7 @@ count

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/count.hpp

- + Requirements
    @@ -85,7 +85,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html index d6d54a1..bb6187c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html @@ -3,7 +3,7 @@ equal - + @@ -28,7 +28,7 @@ equal

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -71,14 +71,14 @@ considered equal in the predicate version if pred(x,y) is true.

- + Definition

Defined in the header file boost/range/algorithm/equal.hpp

- + Requirements

@@ -139,7 +139,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html index 94bd133..8ba9948 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html @@ -3,7 +3,7 @@ equal_range - + @@ -28,7 +28,7 @@ equal_range

- + Prototype

@@ -71,7 +71,7 @@

- + Description

@@ -85,14 +85,14 @@ is determined by pred.

- + Definition

Defined in the header file boost/range/algorithm/equal_range.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Precondition:

@@ -155,7 +155,7 @@ is ordered in ascending order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html index 3e45381..05db375 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html @@ -3,7 +3,7 @@ find - + @@ -28,7 +28,7 @@ find

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<SinglePassRange>::type find(SinglePassRange& rng, Value val); -template<class SinglePassRange, class Value> -typename range_iterator<const SinglePassRange>::type -find(const SinglePassRange& rng, Value val); - template< range_return_value re, class SinglePassRange, @@ -49,19 +45,11 @@ > typename range_return<SinglePassRange, re>::type find(SinglePassRange& rng, Value val); - -template< - range_return_value re, - class SinglePassRange, - class Value - > -typename range_return<const SinglePassRange, re>::type -find(const SinglePassRange& rng, Value val);

- + Description

@@ -72,14 +60,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find.hpp

- + Requirements
    @@ -100,7 +88,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html index 9412d18..b5ab6b0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html @@ -3,7 +3,7 @@ find_end - + @@ -28,7 +28,7 @@ find_end

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<ForwardRange1>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2); -template<class ForwardRange1, class ForwardRange2> -typename range_iterator<const ForwardRange1>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2); - template< class ForwardRange1, class ForwardRange2, @@ -50,15 +46,6 @@ typename range_iterator<ForwardRange1>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); -template< - class ForwardRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_iterator<const ForwardRange1>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - - template< range_return_value re, class ForwardRange1, @@ -67,14 +54,6 @@ typename range_return<ForwardRange1, re>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2); -template< - range_return_value re, - class ForwardRange1, - class ForwardRange2 - > -typename range_return<const ForwardRange1, re>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2); - template< range_return_value re, class ForwardRange1, @@ -83,20 +62,11 @@ > typename range_return<ForwardRange1, re>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - -template< - range_return_value re, - class ForwardRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_return<const ForwardRange1, re>::type -find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

- + Description

@@ -111,14 +81,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_end.hpp

- + Requirements

@@ -178,7 +148,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html index 5f15b42..a8de6a4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html @@ -3,7 +3,7 @@ find_first_of - + @@ -28,7 +28,7 @@ find_first_of

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<SinglePassRange1>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2); -template<class SinglePassRange1, class ForwardRange2> -typename range_iterator<const SinglePassRange1>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2); - template< class SinglePassRange1, class ForwardRange2, @@ -50,15 +46,6 @@ typename range_iterator<SinglePassRange1>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); -template< - class SinglePassRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_iterator<const SinglePassRange1>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - - template< range_return_value re, class SinglePassRange1, @@ -67,14 +54,6 @@ typename range_return<SinglePassRange1, re>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2); -template< - range_return_value re, - class SinglePassRange1, - class ForwardRange2 - > -typename range_return<const SinglePassRange1, re>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2); - template< range_return_value re, class SinglePassRange1, @@ -83,20 +62,11 @@ > typename range_return<SinglePassRange1, re>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred); - -template< - range_return_value re, - class SinglePassRange1, - class ForwardRange2, - class BinaryPredicate - > -typename range_return<const SinglePassRange1, re>::type -find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

- + Description

@@ -116,14 +86,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_first_of.hpp

- + Requirements

@@ -177,7 +147,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html index 424b833..07df166 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -28,7 +28,7 @@ find_if

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<SinglePassRange>::type find_if(SinglePassRange& rng, UnaryPredicate pred); -template<class SinglePassRange, class UnaryPredicate> -typename range_iterator<const SinglePassRange>::type -find_if(const SinglePassRange& rng, UnaryPredicate pred); - template< range_return_value re, class SinglePassRange, @@ -49,19 +45,11 @@ > typename range_return<SinglePassRange, re>::type find_if(SinglePassRange& rng, UnaryPredicate pred); - -template< - range_return_value re, - class SinglePassRange, - class UnaryPredicate - > -typename range_return<const SinglePassRange, re>::type -find_if(const SinglePassRange& rng, UnaryPredicate pred);

- + Description

@@ -76,14 +64,14 @@ defines found in the same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_if.hpp

- + Requirements
    @@ -102,7 +90,7 @@
- + Precondition:

@@ -110,7 +98,7 @@ rng, *i is in the domain of UnaryPredicate.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html index 3c85cc0..f90bdc6 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -59,14 +59,14 @@ fun(x).

- + Definition

Defined in the header file boost/range/algorithm/for_each.hpp

- + Requirements
    @@ -90,7 +90,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html index 0cf9505..d10629d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html @@ -3,7 +3,7 @@ lexicographical_compare - + @@ -28,7 +28,7 @@ lexicographical_compare

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -73,14 +73,14 @@ predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html index 4e1f526..3eaa4e3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html @@ -3,7 +3,7 @@ lower_bound - + @@ -28,7 +28,7 @@ lower_bound

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<ForwardRange>::type lower_bound(ForwardRange& rng, Value val); -template<class ForwardRange, class Value> -typename range_iterator<const ForwardRange>::type -lower_bound(const ForwardRange& rng, Value val); - template< range_return_value re, class ForwardRange, @@ -49,19 +45,11 @@ > typename range_return<ForwardRange, re>::type lower_bound(ForwardRange& rng, Value val); - -template< - range_return_value re, - class ForwardRange, - class Value - > -typename range_return<const ForwardRange, re>::type -lower_bound(const ForwardRange& rng, Value val);

- + Description

@@ -84,14 +72,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/lower_bound.hpp

- + Requirements

@@ -142,7 +130,7 @@

- + Precondition:

@@ -160,7 +148,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html index 8ca03f7..552d3af 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html @@ -3,7 +3,7 @@ max_element - + @@ -28,7 +28,7 @@ max_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/max_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html index 08903d1..675196b 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html @@ -3,7 +3,7 @@ min_element - + @@ -28,7 +28,7 @@ min_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/min_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html index 5a168da..572dd69 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html @@ -3,7 +3,7 @@ mismatch - + @@ -28,7 +28,7 @@ mismatch

- + Prototype

@@ -106,7 +106,7 @@

- + Description

@@ -124,14 +124,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/mismatch.hpp

- + Requirements

@@ -192,14 +192,14 @@

- + Precondition:

distance(rng2) >= distance(rng1)

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html index 1dcf8c0..03b528c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html @@ -3,7 +3,7 @@ search - + @@ -28,7 +28,7 @@ search

- + Prototype

@@ -96,7 +96,7 @@

- + Description

@@ -115,14 +115,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/search.hpp

- + Requirements

@@ -183,7 +183,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html index 8db1558..e73149f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html @@ -3,7 +3,7 @@ upper_bound - + @@ -28,7 +28,7 @@ upper_bound

- + Prototype

@@ -38,10 +38,6 @@ typename range_iterator<ForwardRange>::type upper_bound(ForwardRange& rng, Value val); -template<class ForwardRange, class Value> -typename range_iterator<const ForwardRange>::type -upper_bound(const ForwardRange& rng, Value val); - template< range_return_value re, class ForwardRange, @@ -49,19 +45,11 @@ > typename range_return<ForwardRange, re>::type upper_bound(ForwardRange& rng, Value val); - -template< - range_return_value re, - class ForwardRange, - class Value - > -typename range_return<const ForwardRange, re>::type -upper_bound(const ForwardRange& rng, Value val);

- + Description

@@ -83,14 +71,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/upper_bound.hpp

- + Requirements

@@ -141,7 +129,7 @@

- + Precondition:

@@ -159,7 +147,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric.html b/doc/html/range/reference/algorithms/range_numeric.html index c6c6767..9da4d83 100644 --- a/doc/html/range/reference/algorithms/range_numeric.html +++ b/doc/html/range/reference/algorithms/range_numeric.html @@ -3,7 +3,7 @@ Numeric algorithms - + diff --git a/doc/html/range/reference/algorithms/range_numeric/accumulate.html b/doc/html/range/reference/algorithms/range_numeric/accumulate.html index 448b1fa..9351f90 100644 --- a/doc/html/range/reference/algorithms/range_numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/range_numeric/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -28,7 +28,7 @@ accumulate

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -64,18 +64,18 @@ The return value is the resultant value of the above algorithm.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -100,7 +100,7 @@
- + For the second version
@@ -134,7 +134,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html index 8c76593..6680e82 100644 --- a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html @@ -3,7 +3,7 @@ adjacent_difference - + @@ -28,7 +28,7 @@ adjacent_difference

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -69,18 +69,18 @@ instead of operator-().

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -111,7 +111,7 @@
- + For the second version
@@ -146,7 +146,7 @@
- + Precondition:

@@ -154,7 +154,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/inner_product.html b/doc/html/range/reference/algorithms/range_numeric/inner_product.html index 6d48b14..d2591e2 100644 --- a/doc/html/range/reference/algorithms/range_numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/range_numeric/inner_product.html @@ -3,7 +3,7 @@ inner_product - + @@ -28,7 +28,7 @@ inner_product

- + Prototype

@@ -54,7 +54,7 @@

- + Description

@@ -67,18 +67,18 @@ algorithm please see inner_product.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -113,7 +113,7 @@
- + For the second version
@@ -162,14 +162,14 @@
- + Precondition:

distance(rng2) >= distance(rng1) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html index b89e58e..b1aa0bf 100644 --- a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html @@ -3,7 +3,7 @@ partial_sum - + @@ -28,7 +28,7 @@ partial_sum

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,18 +58,18 @@ in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -99,7 +99,7 @@
- + For the second version
@@ -128,7 +128,7 @@
- + Precondition:

@@ -136,7 +136,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms.html b/doc/html/range/reference/algorithms/set_algorithms.html index b9888f5..447b470 100644 --- a/doc/html/range/reference/algorithms/set_algorithms.html +++ b/doc/html/range/reference/algorithms/set_algorithms.html @@ -3,7 +3,7 @@ Set algorithms - + diff --git a/doc/html/range/reference/algorithms/set_algorithms/includes.html b/doc/html/range/reference/algorithms/set_algorithms/includes.html index 015474a..b8fabe5 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/includes.html +++ b/doc/html/range/reference/algorithms/set_algorithms/includes.html @@ -3,7 +3,7 @@ includes - + @@ -28,7 +28,7 @@ includes

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -60,14 +60,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Precondition:

@@ -163,7 +163,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html index 58d8a54..95531ed 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html @@ -3,7 +3,7 @@ set_difference - + @@ -28,7 +28,7 @@ set_difference

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html index 65840cd..7367d86 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html @@ -3,7 +3,7 @@ set_intersection - + @@ -28,7 +28,7 @@ set_intersection

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html index a25e8e4..52b58b7 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html @@ -3,7 +3,7 @@ set_symmetric_difference - + @@ -28,7 +28,7 @@ set_symmetric_difference

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -75,14 +75,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -168,7 +168,7 @@

- + Precondition:

@@ -186,7 +186,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_union.html b/doc/html/range/reference/algorithms/set_algorithms/set_union.html index 90c343c..3a8abe3 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_union.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_union.html @@ -3,7 +3,7 @@ set_union - + @@ -28,7 +28,7 @@ set_union

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -70,14 +70,14 @@ in the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -163,7 +163,7 @@

- + Precondition:

@@ -181,7 +181,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index fc32e83..37f4882 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -3,7 +3,7 @@ Extending the library - + diff --git a/doc/html/range/reference/extending/method_1.html b/doc/html/range/reference/extending/method_1.html index 3283d10..d9f66a7 100644 --- a/doc/html/range/reference/extending/method_1.html +++ b/doc/html/range/reference/extending/method_1.html @@ -3,7 +3,7 @@ Method 1: provide member functions and nested types - + @@ -34,7 +34,7 @@

The primary templates in this library are implemented such that standard - containers will work automatically and so will boost::array. + 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.

diff --git a/doc/html/range/reference/extending/method_2.html b/doc/html/range/reference/extending/method_2.html index f4f3524..eae4cbd 100644 --- a/doc/html/range/reference/extending/method_2.html +++ b/doc/html/range/reference/extending/method_2.html @@ -3,7 +3,7 @@ Method 2: provide free-standing functions and specialize metafunctions - + diff --git a/doc/html/range/reference/extending/method_3.html b/doc/html/range/reference/extending/method_3.html index f841237..3594ff8 100644 --- a/doc/html/range/reference/extending/method_3.html +++ b/doc/html/range/reference/extending/method_3.html @@ -3,7 +3,7 @@ Method 3: provide range adaptor implementations - + diff --git a/doc/html/range/reference/extending/method_3/method_3_1.html b/doc/html/range/reference/extending/method_3/method_3_1.html index e995bee..9370d65 100644 --- a/doc/html/range/reference/extending/method_3/method_3_1.html +++ b/doc/html/range/reference/extending/method_3/method_3_1.html @@ -3,7 +3,7 @@ Method 3.1: Implement a Range Adaptor without arguments - + diff --git a/doc/html/range/reference/extending/method_3/method_3_2.html b/doc/html/range/reference/extending/method_3/method_3_2.html index f0bae90..f153d0e 100644 --- a/doc/html/range/reference/extending/method_3/method_3_2.html +++ b/doc/html/range/reference/extending/method_3/method_3_2.html @@ -3,7 +3,7 @@ Method 3.2: Implement a Range Adaptor with arguments - + diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html index ae0bbf0..8db874f 100644 --- a/doc/html/range/reference/overview.html +++ b/doc/html/range/reference/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index 2e16372..6e4ad0a 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -3,7 +3,7 @@ Provided Ranges - + diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index b556488..e2ccb2c 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -3,7 +3,7 @@ counting_range - + @@ -27,7 +27,7 @@ counting_range
- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -58,14 +58,14 @@ (from Boost.Iterator).

- + Definition

Defined in header file boost/range/counting_range.hpp

- + Requirements
  1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index f4565c0..cd481f0 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -3,7 +3,7 @@ irange - + @@ -27,7 +27,7 @@ irange
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -58,14 +58,14 @@ parameters denoted a half-open range.

- + Definition

Defined in the header file boost/range/irange.hpp

- + Requirements
    @@ -79,7 +79,7 @@
- + Complexity

diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index e7d81d8..063204d 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -3,7 +3,7 @@ istream_range - + @@ -27,7 +27,7 @@ istream_range

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

- + Definition

diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html index fbb1aa8..4fa0645 100644 --- a/doc/html/range/reference/semantics.html +++ b/doc/html/range/reference/semantics.html @@ -3,7 +3,7 @@ Semantics - + @@ -31,7 +31,7 @@

Functions
- + notation
diff --git a/doc/html/range/reference/semantics/functions.html b/doc/html/range/reference/semantics/functions.html index 232b680..16bb7fb 100644 --- a/doc/html/range/reference/semantics/functions.html +++ b/doc/html/range/reference/semantics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/range/reference/semantics/metafunctions.html b/doc/html/range/reference/semantics/metafunctions.html index 6df4902..cc2f4bd 100644 --- a/doc/html/range/reference/semantics/metafunctions.html +++ b/doc/html/range/reference/semantics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/range/reference/synopsis.html b/doc/html/range/reference/synopsis.html index 248e8c1..c950490 100644 --- a/doc/html/range/reference/synopsis.html +++ b/doc/html/range/reference/synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index f064884..48043c4 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -3,7 +3,7 @@ Terminology and style guidelines - + @@ -66,7 +66,7 @@

- Notice how we have used the categories from the new + Notice how we have used the categories from the new style iterators.

diff --git a/doc/html/range/upgrade.html b/doc/html/range/upgrade.html index ad53c37..27ddd2b 100644 --- a/doc/html/range/upgrade.html +++ b/doc/html/range/upgrade.html @@ -3,7 +3,7 @@ Upgrade version of Boost.Range - + diff --git a/doc/html/range/upgrade/upgrade_from_1_34.html b/doc/html/range/upgrade/upgrade_from_1_34.html index dfc4c52..587555c 100644 --- a/doc/html/range/upgrade/upgrade_from_1_34.html +++ b/doc/html/range/upgrade/upgrade_from_1_34.html @@ -3,7 +3,7 @@ Upgrade from version 1.34 - + diff --git a/doc/html/range/upgrade/upgrade_from_1_42.html b/doc/html/range/upgrade/upgrade_from_1_42.html index 3fbc2d2..74059e4 100644 --- a/doc/html/range/upgrade/upgrade_from_1_42.html +++ b/doc/html/range/upgrade/upgrade_from_1_42.html @@ -3,7 +3,7 @@ Upgrade from version 1.42 - + diff --git a/doc/html/range/utilities.html b/doc/html/range/utilities.html index d9caa5f..0ccd47c 100644 --- a/doc/html/range/utilities.html +++ b/doc/html/range/utilities.html @@ -3,7 +3,7 @@ Utilities - + @@ -52,7 +52,7 @@

The iterator_range class is - templated on an Forward + 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 diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html index 07efc15..7956363 100644 --- a/doc/html/range/utilities/iterator_range.html +++ b/doc/html/range/utilities/iterator_range.html @@ -3,7 +3,7 @@ Class iterator_range - + @@ -32,7 +32,7 @@ Range concept. A few other functions are also provided for convenience.

- If the template argument is not a model of Forward + 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 Random Access Traversal Iterators whereas empty() only requires Single Pass Iterators. @@ -47,7 +47,7 @@ limitation is simply propogated from the underlying iterator type.

- + Synopsis

@@ -187,7 +187,7 @@ iterators from the same container.

- + Details member functions
@@ -218,7 +218,7 @@

- + Details functions
diff --git a/doc/html/range/utilities/join.html b/doc/html/range/utilities/join.html index c2c9e15..d430946 100644 --- a/doc/html/range/utilities/join.html +++ b/doc/html/range/utilities/join.html @@ -3,7 +3,7 @@ Function join - + @@ -39,7 +39,7 @@ if the end of a range has been reached internally during traversal.

- + Synposis

@@ -65,7 +65,7 @@

- + Example

diff --git a/doc/html/range/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html index 0b474d7..517639f 100644 --- a/doc/html/range/utilities/sub_range.html +++ b/doc/html/range/utilities/sub_range.html @@ -3,7 +3,7 @@ Class sub_range - + @@ -35,7 +35,7 @@ is.

- + Synopsis

diff --git a/doc/reference/algorithm_ext/iota.qbk b/doc/reference/algorithm_ext/iota.qbk index 37aba15..c098708 100644 --- a/doc/reference/algorithm_ext/iota.qbk +++ b/doc/reference/algorithm_ext/iota.qbk @@ -1,4 +1,4 @@ -[section:for_each for_each] +[section:iota iota] [heading Prototype] From a24a69f38e1b8b7cf96786da3455d20b1c5143f6 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Tue, 6 Apr 2010 10:12:11 +0000 Subject: [PATCH 06/26] Boost.Range - avoid accidental ADL of begin/end functions. [SVN r61098] --- test/iterator_range.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/iterator_range.cpp b/test/iterator_range.cpp index 47bc565..cf22463 100644 --- a/test/iterator_range.cpp +++ b/test/iterator_range.cpp @@ -61,7 +61,7 @@ void check_iterator_range() BOOST_CHECK_EQUAL( r2.size(), size( r2 ) ); BOOST_CHECK_EQUAL( std::distance( r.begin(), r.end() ), - std::distance( begin( r2 ), end( r2 ) ) ); + std::distance( boost::begin( r2 ), boost::end( r2 ) ) ); std::cout << r << r2; From b573b6c9bf02be72a56c672c59e9012d19630f83 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 7 Apr 2010 23:40:53 +0000 Subject: [PATCH 07/26] Boost.Range modification in an attempt to improve the compatibility of the adjacent_filtered and uniqued adaptors. [SVN r61142] --- .../range_algorithm_new_algorithms/iota.html | 96 +++++++++ .../boost/range/adaptor/adjacent_filtered.hpp | 198 ++++++++---------- include/boost/range/adaptor/uniqued.hpp | 42 ++-- 3 files changed, 208 insertions(+), 128 deletions(-) create mode 100644 doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html new file mode 100644 index 0000000..c36f96d --- /dev/null +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html @@ -0,0 +1,96 @@ + + + +iota + + + + + + + + +

+ + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Prototype +
+

+ +

+
template<class SinglePassRange, class Value>
+iota(SinglePassRange& rng, Value x);
+
+

+

+
+ + Description +
+

+ iota traverses forward + through rng, each element + y in rng + is assigned a value equivalent to x + + boost::distance(boost::begin(rng), it) +

+
+ + Definition +
+

+ Defined in the header file boost/range/algorithm_ext/iota.hpp +

+
+ + Requirements +
+
    +
  1. +SinglePassRange is + a model of the Single + Pass Range Concept. +
  2. +
  3. +Value is a model of + the Incrementable Concept. +
  4. +
+
+ + Complexity +
+

+ Linear. Exactly distance(rng) assignments into rng. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/include/boost/range/adaptor/adjacent_filtered.hpp b/include/boost/range/adaptor/adjacent_filtered.hpp index 4a7a809..5f66711 100644 --- a/include/boost/range/adaptor/adjacent_filtered.hpp +++ b/include/boost/range/adaptor/adjacent_filtered.hpp @@ -30,94 +30,58 @@ namespace boost namespace range_detail { - template< class Iter, class R > + template< class Iter, class Pred, bool default_pass > class skip_iterator - : public boost::iterator_adaptor< skip_iterator, Iter > + : public boost::iterator_adaptor< + skip_iterator, + Iter, + BOOST_DEDUCED_TYPENAME std::iterator_traits::value_type, + boost::forward_traversal_tag, + BOOST_DEDUCED_TYPENAME std::iterator_traits::reference, + BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type + > + , private Pred { private: - typedef boost::iterator_adaptor< skip_iterator, Iter > - base_t; - - R* m_range; + typedef boost::iterator_adaptor< + skip_iterator, + Iter, + BOOST_DEDUCED_TYPENAME std::iterator_traits::value_type, + boost::forward_traversal_tag, + BOOST_DEDUCED_TYPENAME std::iterator_traits::reference, + BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type + > base_t; public: - typedef Iter wrapped_iter_t; + typedef Pred pred_t; + typedef Iter iter_t; - // - // The iterators are bound to the lifetime of the - // range and may not exist on their own. Hence it makes no - // sense to e.g. wrap them in reverse_iterators - // (that can OTOH be done in advance). - // - typedef std::input_iterator_tag iterator_category; + skip_iterator() : m_last() {} - explicit skip_iterator( R* r, Iter i ) - : base_t(i), m_range(r) {} - - template< class OtherIter, class R2> - skip_iterator( const skip_iterator& other ) - : base_t( other.base() ), m_range(other.m_range) {} - - R* get_range() const { return m_range; } - - private: - friend class boost::iterator_core_access; - - void increment() - { - BOOST_ASSERT( m_range != 0 ); - m_range->increment_impl( this->base_reference() ); - } - - // - // Not needed ... just apply a reverse_iterator - // - void decrement() + skip_iterator(iter_t it, iter_t last, const Pred& pred) + : base_t(it) + , pred_t(pred) + , m_last(last) { - BOOST_ASSERT( false && "you can't decrement an adjacent_filter_iterator" ); + move_to_next_valid(); } - template< class D > - void advance( D n ) - { - BOOST_ASSERT( false ); - } + template + skip_iterator( const skip_iterator& other ) + : base_t(other.base()) + , pred_t(other) + , m_last(other.m_last) {} - }; - - template< class P, class R > - struct adjacent_filter_range - : iterator_range< skip_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type, - adjacent_filter_range - > - > - { - private: - typedef skip_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type, - adjacent_filter_range - > - skip_iter; - typedef iterator_range - base_range; - - typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iterator; - - P m_bi_pred; - - // Get the first element in the half-open range that - // passes the filter predicate. - // The adjacent_filter_range must only contain values that pass - // through the filter. - static raw_iterator to_valid(raw_iterator it, raw_iterator last, const P& bi_pred, bool default_pass) + void move_to_next_valid() { - if (it != last) + iter_t& it = this->base_reference(); + pred_t& bi_pred = *this; + if (it != m_last) { if (default_pass) { - raw_iterator nxt = ::boost::next(it); - while (nxt != last && !bi_pred(*it, *nxt)) + iter_t nxt = ::boost::next(it); + while (nxt != m_last && !bi_pred(*it, *nxt)) { ++it; ++nxt; @@ -125,41 +89,61 @@ namespace boost } else { - raw_iterator nxt = ::boost::next(it); - for(; nxt != last; ++it, ++nxt) + iter_t nxt = ::boost::next(it); + for(; nxt != m_last; ++it, ++nxt) { if (bi_pred(*it, *nxt)) { break; } } - if (nxt == last) + if (nxt == m_last) { - it = last; + it = m_last; } } } - return it; } + void increment() + { + iter_t& it = this->base_reference(); + BOOST_ASSERT( it != m_last ); + ++it; + move_to_next_valid(); + } + + iter_t m_last; + }; + + template< class P, class R, bool default_pass > + struct adjacent_filter_range + : iterator_range< skip_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type, + P, + default_pass + > + > + { + private: + typedef skip_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type, + P, + default_pass + > + skip_iter; + + typedef iterator_range + base_range; + + typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iterator; + public: - 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) ) ), - m_bi_pred( p ), - m_default_pass(default_pass) + adjacent_filter_range( const P& p, R& r ) + : base_range( skip_iter( boost::begin(r), boost::end(r), p), + skip_iter( boost::end(r), boost::end(r), p) ) { } - - void increment_impl( raw_iterator& current ) - { - BOOST_ASSERT( current != this->end().base() ); - - current = to_valid(::boost::next(current), this->end().base(), m_bi_pred, m_default_pass); - } - - private: - bool m_default_pass; }; template< class T > @@ -177,37 +161,37 @@ namespace boost }; template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filter_range operator|( ForwardRng& r, const adjacent_holder& f ) { - return adjacent_filter_range( f.val, r, true ); + return adjacent_filter_range( f.val, r ); } template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filter_range operator|( const ForwardRng& r, const adjacent_holder& f ) { return adjacent_filter_range( f.val, r, true ); + const ForwardRng, true>( f.val, r ); } template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filter_range operator|( ForwardRng& r, const adjacent_excl_holder& f ) { - return adjacent_filter_range( f.val, r, false ); + return adjacent_filter_range( f.val, r ); } template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filter_range operator|( const ForwardRng& r, const adjacent_excl_holder& f ) { return adjacent_filter_range( f.val, r, false ); + const ForwardRng, false>( f.val, r ); } } // 'range_detail' @@ -231,17 +215,17 @@ namespace boost } template - inline adjacent_filter_range - adjacent_filter(ForwardRng& rng, BinPredicate filter_pred, bool default_pass = true) + inline adjacent_filter_range + adjacent_filter(ForwardRng& rng, BinPredicate filter_pred) { - return adjacent_filter_range(filter_pred, rng, default_pass); + return adjacent_filter_range(filter_pred, rng); } template - inline adjacent_filter_range - adjacent_filter(const ForwardRng& rng, BinPredicate filter_pred, bool default_pass = true) + inline adjacent_filter_range + adjacent_filter(const ForwardRng& rng, BinPredicate filter_pred) { - return adjacent_filter_range(filter_pred, rng, default_pass); + return adjacent_filter_range(filter_pred, rng); } } // 'adaptors' diff --git a/include/boost/range/adaptor/uniqued.hpp b/include/boost/range/adaptor/uniqued.hpp index 28a30f2..ddaf3fe 100755 --- a/include/boost/range/adaptor/uniqued.hpp +++ b/include/boost/range/adaptor/uniqued.hpp @@ -15,68 +15,68 @@ namespace boost { - + namespace range_detail { struct unique_forwarder { }; - + struct unique_not_equal_to { typedef bool result_type; - + template< class T > bool operator()( const T& l, const T& r ) const { return !(l == r); } }; - + template - class unique_range : public adjacent_filter_range + class unique_range : public adjacent_filter_range { - typedef adjacent_filter_range base; + typedef adjacent_filter_range base; public: explicit unique_range(ForwardRng& rng) - : base(unique_not_equal_to(), rng, true) + : base(unique_not_equal_to(), rng) { } }; - + template< class ForwardRng > - inline unique_range - operator|( ForwardRng& r, + inline unique_range + operator|( ForwardRng& r, unique_forwarder ) { return unique_range(r); } - + template< class ForwardRng > - inline unique_range - operator|( const ForwardRng& r, + inline unique_range + operator|( const ForwardRng& r, unique_forwarder ) { return unique_range(r); } - + } // 'range_detail' - + using range_detail::unique_range; - + namespace adaptors - { + { namespace { - const range_detail::unique_forwarder uniqued = + const range_detail::unique_forwarder uniqued = range_detail::unique_forwarder(); } - + template inline unique_range unique(ForwardRange& rng) { return unique_range(rng); } - + template inline unique_range unique(const ForwardRange& rng) @@ -84,7 +84,7 @@ namespace boost return unique_range(rng); } } // 'adaptors' - + } #endif From 52c04e94f92996fc9da881fef518983b44727909 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 8 Apr 2010 10:40:14 +0000 Subject: [PATCH 08/26] Boost.Range fix for the range_size metafunction. This showed as a compilation failure on VACPP. [SVN r61144] --- include/boost/range/size_type.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) mode change 100755 => 100644 include/boost/range/size_type.hpp diff --git a/include/boost/range/size_type.hpp b/include/boost/range/size_type.hpp old mode 100755 new mode 100644 index 7ed8dfa..9993d55 --- a/include/boost/range/size_type.hpp +++ b/include/boost/range/size_type.hpp @@ -67,7 +67,8 @@ namespace boost { }; template< class T > - struct range_size : range_size + struct range_size + : detail::range_size { }; } // namespace boost From 067b63da8ebbb810afb2bf3947dafb5a1e36eb0c Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 8 Apr 2010 19:09:34 +0000 Subject: [PATCH 09/26] Boost.Range improved push_front algorithm unit test. Updated documentation. [SVN r61145] --- doc/headers.qbk | 2 +- doc/html/index.html | 6 +++--- doc/html/range/concepts.html | 2 +- .../range/concepts/bidirectional_range.html | 18 +++++++++--------- doc/html/range/concepts/concept_checking.html | 4 ++-- doc/html/range/concepts/forward_range.html | 12 ++++++------ doc/html/range/concepts/overview.html | 2 +- .../range/concepts/random_access_range.html | 14 +++++++------- .../range/concepts/single_pass_range.html | 18 +++++++++--------- doc/html/range/examples.html | 2 +- doc/html/range/faq.html | 2 +- doc/html/range/history_ack.html | 2 +- doc/html/range/introduction.html | 2 +- doc/html/range/library_headers.html | 6 ++++-- doc/html/range/mfc_atl.html | 6 +++--- doc/html/range/mfc_atl/atl_ranges.html | 2 +- doc/html/range/mfc_atl/const_ranges.html | 2 +- doc/html/range/mfc_atl/mfc_ranges.html | 2 +- doc/html/range/mfc_atl/references.html | 2 +- doc/html/range/mfc_atl/requirements.html | 2 +- doc/html/range/portability.html | 2 +- doc/html/range/reference.html | 2 +- doc/html/range/reference/adaptors.html | 2 +- .../adaptors_general_requirements.html | 2 +- .../adaptors/adaptors_introduction.html | 8 ++++---- .../adaptors/adaptors_reference.html | 2 +- .../adaptors_reference/adjacent_filtered.html | 2 +- .../adaptors/adaptors_reference/copied.html | 2 +- .../adaptors/adaptors_reference/filtered.html | 2 +- .../adaptors/adaptors_reference/indexed.html | 2 +- .../adaptors_reference/indirected.html | 2 +- .../adaptors/adaptors_reference/map_keys.html | 2 +- .../adaptors_reference/map_values.html | 2 +- .../adaptors/adaptors_reference/replaced.html | 2 +- .../adaptors_reference/replaced_if.html | 2 +- .../adaptors/adaptors_reference/reversed.html | 2 +- .../adaptors/adaptors_reference/sliced.html | 2 +- .../adaptors/adaptors_reference/strided.html | 2 +- .../adaptors_reference/tokenized.html | 2 +- .../adaptors_reference/transformed.html | 2 +- .../adaptors/adaptors_reference/uniqued.html | 2 +- .../reference/adaptors/adaptors_synopsis.html | 2 +- doc/html/range/reference/algorithms.html | 2 +- .../reference/algorithms/heap_algorithms.html | 2 +- .../algorithms/heap_algorithms/make_heap.html | 12 ++++++------ .../algorithms/heap_algorithms/pop_heap.html | 14 +++++++------- .../algorithms/heap_algorithms/push_heap.html | 14 +++++++------- .../algorithms/permutation_algorithms.html | 2 +- .../next_permutation.html | 12 ++++++------ .../prev_permutation.html | 12 ++++++------ .../range_algorithm_introduction.html | 2 +- .../range_algorithm_mutating_algorithms.html | 2 +- .../copy.html | 14 +++++++------- .../copy_backward.html | 14 +++++++------- .../fill.html | 12 ++++++------ .../generate.html | 14 +++++++------- .../inplace_merge.html | 18 +++++++++--------- .../merge.html | 18 +++++++++--------- .../nth_element.html | 12 ++++++------ .../partial_sort.html | 12 ++++++------ .../partition.html | 12 ++++++------ .../random_shuffle.html | 14 +++++++------- .../remove.html | 12 ++++++------ .../remove_if.html | 12 ++++++------ .../replace.html | 12 ++++++------ .../replace_if.html | 12 ++++++------ .../rotate.html | 14 +++++++------- .../sort.html | 12 ++++++------ .../stable_partition.html | 12 ++++++------ .../stable_sort.html | 12 ++++++------ .../transform.html | 14 +++++++------- .../unique.html | 12 ++++++------ .../range_algorithm_new_algorithms.html | 2 +- .../range_algorithm_new_algorithms/erase.html | 12 ++++++------ .../for_each.html | 12 ++++++------ .../insert.html | 12 ++++++------ .../overwrite.html | 12 ++++++------ .../push_back.html | 12 ++++++------ .../push_front.html | 12 ++++++------ .../remove_erase.html | 12 ++++++------ .../remove_erase_if.html | 12 ++++++------ ...nge_algorithm_non_mutating_algorithms.html | 2 +- .../adjacent_find.html | 12 ++++++------ .../binary_search.html | 14 +++++++------- .../count.html | 12 ++++++------ .../equal.html | 12 ++++++------ .../equal_range.html | 14 +++++++------- .../find.html | 12 ++++++------ .../find_end.html | 12 ++++++------ .../find_first_of.html | 12 ++++++------ .../find_if.html | 14 +++++++------- .../for_each.html | 12 ++++++------ .../lexicographical_compare.html | 12 ++++++------ .../lower_bound.html | 14 +++++++------- .../max_element.html | 12 ++++++------ .../min_element.html | 12 ++++++------ .../mismatch.html | 14 +++++++------- .../search.html | 12 ++++++------ .../upper_bound.html | 14 +++++++------- .../reference/algorithms/range_numeric.html | 2 +- .../algorithms/range_numeric/accumulate.html | 16 ++++++++-------- .../range_numeric/adjacent_difference.html | 18 +++++++++--------- .../range_numeric/inner_product.html | 18 +++++++++--------- .../algorithms/range_numeric/partial_sum.html | 18 +++++++++--------- .../reference/algorithms/set_algorithms.html | 2 +- .../algorithms/set_algorithms/includes.html | 14 +++++++------- .../set_algorithms/set_difference.html | 14 +++++++------- .../set_algorithms/set_intersection.html | 14 +++++++------- .../set_symmetric_difference.html | 14 +++++++------- .../algorithms/set_algorithms/set_union.html | 14 +++++++------- doc/html/range/reference/extending.html | 2 +- .../range/reference/extending/method_1.html | 2 +- .../range/reference/extending/method_2.html | 2 +- .../range/reference/extending/method_3.html | 2 +- .../extending/method_3/method_3_1.html | 2 +- .../extending/method_3/method_3_2.html | 2 +- doc/html/range/reference/overview.html | 2 +- doc/html/range/reference/ranges.html | 2 +- .../reference/ranges/counting_range.html | 10 +++++----- doc/html/range/reference/ranges/irange.html | 12 ++++++------ .../range/reference/ranges/istream_range.html | 8 ++++---- doc/html/range/reference/semantics.html | 4 ++-- .../range/reference/semantics/functions.html | 2 +- .../reference/semantics/metafunctions.html | 2 +- doc/html/range/reference/synopsis.html | 2 +- doc/html/range/style_guide.html | 2 +- doc/html/range/upgrade.html | 2 +- doc/html/range/upgrade/upgrade_from_1_34.html | 2 +- doc/html/range/upgrade/upgrade_from_1_42.html | 2 +- doc/html/range/utilities.html | 2 +- doc/html/range/utilities/iterator_range.html | 8 ++++---- doc/html/range/utilities/join.html | 6 +++--- doc/html/range/utilities/sub_range.html | 4 ++-- test/algorithm_ext_test/push_front.cpp | 19 ++++++++++++++++--- 134 files changed, 537 insertions(+), 522 deletions(-) diff --git a/doc/headers.qbk b/doc/headers.qbk index 6edefbd..9e29745 100644 --- a/doc/headers.qbk +++ b/doc/headers.qbk @@ -2,7 +2,7 @@ [table [[Header ] [Includes ] [Related Concept ]] - [[`` ] [everything ] [- ]] + [[`` ] [everything from Boost.Range version 1 (Boost versions 1.42 and below). Includes the core range functions and metafunctinos, but excludes Range Adaptors and Range Algorithms. ] [- ]] [[`` ] [every metafunction ] [- ]] [[`` ] [every function ] [- ]] [[`` ] [__range_value__ ] [__single_pass_range__ ]] diff --git a/doc/html/index.html b/doc/html/index.html index f5bb91c..6eb8b42 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Range 2.0 - + @@ -30,7 +30,7 @@
-

+

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)

@@ -135,7 +135,7 @@

- +

Last revised: April 05, 2010 at 17:25:33 GMT

Last revised: April 08, 2010 at 18:38:56 GMT


diff --git a/doc/html/range/concepts.html b/doc/html/range/concepts.html index c43b67c..c384122 100644 --- a/doc/html/range/concepts.html +++ b/doc/html/range/concepts.html @@ -3,7 +3,7 @@ Range Concepts - + diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 0fc965b..f3f2681 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -3,7 +3,7 @@ Bidirectional Range - + @@ -27,7 +27,7 @@ Bidirectional Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -75,7 +75,7 @@ Traversal Iterator.

- + Refinement of
@@ -83,7 +83,7 @@ Forward Range

- + Associated types
@@ -136,7 +136,7 @@
- + Valid expressions
@@ -221,7 +221,7 @@
- + Complexity guarantees
@@ -232,7 +232,7 @@ Forward Range.

- + Invariants
@@ -272,7 +272,7 @@
- + See also

diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index a4aa1d9..a20c28a 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -3,7 +3,7 @@ Concept Checking - + @@ -79,7 +79,7 @@

- + See also

diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index f82d8c5..1e2d2a0 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -3,7 +3,7 @@ Forward Range - + @@ -27,7 +27,7 @@ Forward Range

- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,14 +73,14 @@ Traversal Iterator.

- + Refinement of

Single Pass Range

- + Associated types
@@ -132,7 +132,7 @@
- + See also

diff --git a/doc/html/range/concepts/overview.html b/doc/html/range/concepts/overview.html index c2bb4d1..7cd19e8 100644 --- a/doc/html/range/concepts/overview.html +++ b/doc/html/range/concepts/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index cc5d88e..94e16de 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -3,7 +3,7 @@ Random Access Range - + @@ -27,7 +27,7 @@ Random Access Range

- + Description

@@ -35,7 +35,7 @@ Access Traversal Iterator.

- + Refinement of
@@ -43,7 +43,7 @@ Bidirectional Range

- + Valid expressions
@@ -89,7 +89,7 @@
- + Expression semantics
@@ -139,7 +139,7 @@
- + Complexity guarantees
@@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

- + Invariants
diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 9cb3123..2515639 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -3,7 +3,7 @@ Single Pass Range - + @@ -27,7 +27,7 @@ Single Pass Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,7 +73,7 @@ Pass Iterator.

- + Associated types
@@ -126,7 +126,7 @@
- + Valid expressions
@@ -198,7 +198,7 @@
- + Expression semantics
@@ -266,7 +266,7 @@
- + Complexity guarantees
@@ -276,7 +276,7 @@ constant time.

- + Invariants
@@ -316,7 +316,7 @@
- + See also

diff --git a/doc/html/range/examples.html b/doc/html/range/examples.html index f517040..b272df8 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -3,7 +3,7 @@ Examples - + diff --git a/doc/html/range/faq.html b/doc/html/range/faq.html index a5ea15d..0c9d40b 100644 --- a/doc/html/range/faq.html +++ b/doc/html/range/faq.html @@ -3,7 +3,7 @@ FAQ - + diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index 2401db3..930b6b6 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -3,7 +3,7 @@ History and Acknowledgement - + diff --git a/doc/html/range/introduction.html b/doc/html/range/introduction.html index e41a60c..7bedc97 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -3,7 +3,7 @@ Introduction - + diff --git a/doc/html/range/library_headers.html b/doc/html/range/library_headers.html index 8f28283..58ddcff 100644 --- a/doc/html/range/library_headers.html +++ b/doc/html/range/library_headers.html @@ -3,7 +3,7 @@ Library Headers - + @@ -58,7 +58,9 @@

- everything + everything from Boost.Range version 1 (Boost versions 1.42 and below). + Includes the core range functions and metafunctinos, but excludes + Range Adaptors and Range Algorithms.

diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 338e860..9fc1da3 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -3,7 +3,7 @@ MFC/ATL (courtesy of Shunsuke Sogame) - + @@ -34,7 +34,7 @@
References
- + Introduction

@@ -100,7 +100,7 @@

- + Overview

diff --git a/doc/html/range/mfc_atl/atl_ranges.html b/doc/html/range/mfc_atl/atl_ranges.html index 766375d..65ee355 100644 --- a/doc/html/range/mfc_atl/atl_ranges.html +++ b/doc/html/range/mfc_atl/atl_ranges.html @@ -3,7 +3,7 @@ ATL Ranges - + diff --git a/doc/html/range/mfc_atl/const_ranges.html b/doc/html/range/mfc_atl/const_ranges.html index 222c6d8..2e047f6 100644 --- a/doc/html/range/mfc_atl/const_ranges.html +++ b/doc/html/range/mfc_atl/const_ranges.html @@ -3,7 +3,7 @@ const Ranges - + diff --git a/doc/html/range/mfc_atl/mfc_ranges.html b/doc/html/range/mfc_atl/mfc_ranges.html index 9e6d001..af0c6e9 100644 --- a/doc/html/range/mfc_atl/mfc_ranges.html +++ b/doc/html/range/mfc_atl/mfc_ranges.html @@ -3,7 +3,7 @@ MFC Ranges - + diff --git a/doc/html/range/mfc_atl/references.html b/doc/html/range/mfc_atl/references.html index 8afe82a..124a538 100644 --- a/doc/html/range/mfc_atl/references.html +++ b/doc/html/range/mfc_atl/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/range/mfc_atl/requirements.html b/doc/html/range/mfc_atl/requirements.html index c49ac8c..131433f 100644 --- a/doc/html/range/mfc_atl/requirements.html +++ b/doc/html/range/mfc_atl/requirements.html @@ -3,7 +3,7 @@ Requirements - + diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 63e3621..901e0b1 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -3,7 +3,7 @@ Portability - + diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index a76673a..70c17dc 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index bc68382..5ab0ecd 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -3,7 +3,7 @@ Range Adaptors - + diff --git a/doc/html/range/reference/adaptors/adaptors_general_requirements.html b/doc/html/range/reference/adaptors/adaptors_general_requirements.html index ce2b17b..a815bae 100644 --- a/doc/html/range/reference/adaptors/adaptors_general_requirements.html +++ b/doc/html/range/reference/adaptors/adaptors_general_requirements.html @@ -3,7 +3,7 @@ General Requirements - + diff --git a/doc/html/range/reference/adaptors/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html index 3d61175..b1efce7 100644 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ b/doc/html/range/reference/adaptors/adaptors_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

- + Composition of Adaptors
@@ -159,7 +159,7 @@ is the design solution to this problem.

- + Range Adaptor alternative to copy_if algorithm
@@ -176,7 +176,7 @@

- + Range Adaptor alternative to count_if algorithm
diff --git a/doc/html/range/reference/adaptors/adaptors_reference.html b/doc/html/range/reference/adaptors/adaptors_reference.html index 5a3dae6..d284888 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference.html +++ b/doc/html/range/reference/adaptors/adaptors_reference.html @@ -3,7 +3,7 @@ Reference - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html index df72e28..fa763c8 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html @@ -3,7 +3,7 @@ adjacent_filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/copied.html b/doc/html/range/reference/adaptors/adaptors_reference/copied.html index b488800..650e29a 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/copied.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/copied.html @@ -3,7 +3,7 @@ copied - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html index 04d418d..1551a9f 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html @@ -3,7 +3,7 @@ filtered - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html index 03ec01b..d8c8674 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html @@ -3,7 +3,7 @@ indexed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html index 391abcc..adcd57a 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html @@ -3,7 +3,7 @@ indirected - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html index 7af39c9..95c1746 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html @@ -3,7 +3,7 @@ map_keys - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html index 810ba7a..553a8f3 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html @@ -3,7 +3,7 @@ map_values - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html index 6af8257..0990ede 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html @@ -3,7 +3,7 @@ replaced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html index f916472..abcf00f 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html @@ -3,7 +3,7 @@ replaced_if - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html index 2ef6d5d..52f4cda 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html @@ -3,7 +3,7 @@ reversed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html index 8901fa0..9793092 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html @@ -3,7 +3,7 @@ sliced - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/strided.html b/doc/html/range/reference/adaptors/adaptors_reference/strided.html index ca37e60..6fcc281 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/strided.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/strided.html @@ -3,7 +3,7 @@ strided - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html index 0b294b2..fc4bc42 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html @@ -3,7 +3,7 @@ tokenized - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html index 1947b6d..56a6170 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html @@ -3,7 +3,7 @@ transformed - + diff --git a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html index 1f7d9fb..3b314ab 100644 --- a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html +++ b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html @@ -3,7 +3,7 @@ uniqued - + diff --git a/doc/html/range/reference/adaptors/adaptors_synopsis.html b/doc/html/range/reference/adaptors/adaptors_synopsis.html index 202a114..d0fea59 100644 --- a/doc/html/range/reference/adaptors/adaptors_synopsis.html +++ b/doc/html/range/reference/adaptors/adaptors_synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index 99e1dad..fc70d02 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -3,7 +3,7 @@ Range Algorithm - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms.html b/doc/html/range/reference/algorithms/heap_algorithms.html index 2cdbaaa..25c45e4 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms.html +++ b/doc/html/range/reference/algorithms/heap_algorithms.html @@ -3,7 +3,7 @@ Heap algorithms - + diff --git a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html index 083df4a..11018f3 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html @@ -3,7 +3,7 @@ make_heap - + @@ -28,7 +28,7 @@ make_heap
- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -119,7 +119,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html index 2e45c55..7740743 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html @@ -3,7 +3,7 @@ pop_heap - + @@ -28,7 +28,7 @@ pop_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html index 9bcf219..982a929 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html @@ -3,7 +3,7 @@ push_heap - + @@ -28,7 +28,7 @@ push_heap

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms.html b/doc/html/range/reference/algorithms/permutation_algorithms.html index a9e2392..12e33f9 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms.html @@ -3,7 +3,7 @@ Permutation algorithms - + diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html index 0a212cf..29638bf 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html @@ -3,7 +3,7 @@ next_permutation - + @@ -28,7 +28,7 @@ next_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html index 06b9d1d..e2c268c 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html @@ -3,7 +3,7 @@ prev_permutation - + @@ -28,7 +28,7 @@ prev_permutation

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_introduction.html b/doc/html/range/reference/algorithms/range_algorithm_introduction.html index f0aa6c4..9f15ed5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_introduction.html +++ b/doc/html/range/reference/algorithms/range_algorithm_introduction.html @@ -3,7 +3,7 @@ Introduction and motivation - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html index fcd52d1..80710b0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html @@ -3,7 +3,7 @@ Mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html index e88c627..f47ec3c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html @@ -3,7 +3,7 @@ Range Algorithm - copy - + @@ -28,7 +28,7 @@ Range Algorithm - copy

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -51,14 +51,14 @@ distance(source_rng)

- + Definition

Defined in the header file boost/range/algorithm/copy.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html index 14d13c6..adc48a0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html @@ -3,7 +3,7 @@ Range Algorithm - copy_backward - + @@ -28,7 +28,7 @@ Range Algorithm - copy_backward

- + Prototype

@@ -42,7 +42,7 @@

- + Description

@@ -60,14 +60,14 @@ denotes the end of the output sequence.

- + Definition

Defined in the header file boost/range/algorithm/copy_backward.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html index f28518c..ab50eed 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html @@ -3,7 +3,7 @@ Range Algorithm - fill - + @@ -28,7 +28,7 @@ Range Algorithm - fill

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ in the range rng.

- + Definition

Defined in the header file boost/range/algorithm/fill.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html index 68efa6a..3874342 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html @@ -3,7 +3,7 @@ Range Algorithm - generate - + @@ -28,7 +28,7 @@ Range Algorithm - generate

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ Returns the resultant range.

- + Definition

Defined in the header file boost/range/algorithm/generate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html index 46ef629..ae36598 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html @@ -3,7 +3,7 @@ Range Algorithm - inplace_merge - + @@ -28,7 +28,7 @@ Range Algorithm - inplace_merge

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -72,14 +72,14 @@ input range is preserved.

- + Definition

Defined in the header file boost/range/algorithm/inplace_merge.hpp

- + Requirements

@@ -116,11 +116,11 @@ argument types.

- + Precondition:
- + For the non-predicate version:
@@ -143,7 +143,7 @@
- + For the predicate version:
@@ -164,7 +164,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html index 5747eef..43d1ef1 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html @@ -3,7 +3,7 @@ Range Algorithm - merge - + @@ -28,7 +28,7 @@ Range Algorithm - merge

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -76,14 +76,14 @@ version uses the predicate instead of operator<().

- + Definition

Defined in the header file boost/range/algorithm/merge.hpp

- + Requirements

@@ -151,11 +151,11 @@

- + Precondition:
- + For the non-predicate version:
@@ -190,7 +190,7 @@
- + For the predicate version:
@@ -221,7 +221,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html index 75f8d71..c096239 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html @@ -3,7 +3,7 @@ Range Algorithm - nth_element - + @@ -28,7 +28,7 @@ Range Algorithm - nth_element

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -66,14 +66,14 @@ is the same as the element that would be in that position if rng has been sorted.

- + Definition

Defined in the header file boost/range/algorithm/nth_element.hpp

- + Requirements

@@ -124,7 +124,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html index 1112ef2..876f009 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html @@ -3,7 +3,7 @@ Range Algorithm - partial_sort - + @@ -28,7 +28,7 @@ Range Algorithm - partial_sort

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -71,14 +71,14 @@ predicate instead.

- + Definition

Defined in the header file boost/range/algorithm/partial_sort.hpp

- + Requirements

@@ -129,7 +129,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html index 50b7b16..4705726 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html @@ -3,7 +3,7 @@ Range Algorithm - partition - + @@ -28,7 +28,7 @@ Range Algorithm - partition

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -81,14 +81,14 @@ corresponds to the middle iterator.

- + Definition

Defined in the header file boost/range/algorithm/partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html index 023d799..e618850 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html @@ -3,7 +3,7 @@ Range Algorithm - random_shuffle - + @@ -28,7 +28,7 @@ Range Algorithm - random_shuffle

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the shuffles range.

- + Definition

Defined in the header file boost/range/algorithm/random_shuffle.hpp

- + Requirements

@@ -99,7 +99,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html index 65ab605..043fa4c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html @@ -3,7 +3,7 @@ Range Algorithm - remove - + @@ -28,7 +28,7 @@ Range Algorithm - remove

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -84,14 +84,14 @@ are dereferenceable, but the elements are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html index 227aeb0..4650b96 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html @@ -3,7 +3,7 @@ Range Algorithm - remove_if - + @@ -28,7 +28,7 @@ Range Algorithm - remove_if

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -83,14 +83,14 @@ are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html index e07aebb..30b729e 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html @@ -3,7 +3,7 @@ Range Algorithm - replace - + @@ -28,7 +28,7 @@ Range Algorithm - replace

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,14 +58,14 @@ Return a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html index fcf01b9..6b4acd0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html @@ -3,7 +3,7 @@ Range Algorithm - replace_if - + @@ -28,7 +28,7 @@ Range Algorithm - replace_if

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace_if.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html index e4c574f..2b6b858 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html @@ -3,7 +3,7 @@ Range Algorithm - rotate - + @@ -28,7 +28,7 @@ Range Algorithm - rotate

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -54,14 +54,14 @@ and [middle, end(rng)). Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/rotate.hpp

- + Requirements
- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html index 31adcdf..42a5d13 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html @@ -3,7 +3,7 @@ Range Algorithm - sort - + @@ -28,7 +28,7 @@ Range Algorithm - sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y, x) == false.

- + Definition

Defined in the header file boost/range/algorithm/sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html index a549bc5..d159075 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html @@ -3,7 +3,7 @@ Range Algorithm - stable_partition - + @@ -28,7 +28,7 @@ Range Algorithm - stable_partition

- + Prototype

@@ -61,7 +61,7 @@

- + Description

@@ -83,14 +83,14 @@ the iterator to the first element that fails to satisfy pred.

- + Definition

Defined in the header file boost/range/algorithm/stable_partition.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html index e02cfa3..f9c1dec 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html @@ -3,7 +3,7 @@ Range Algorithm - stable_sort - + @@ -28,7 +28,7 @@ Range Algorithm - stable_sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y,x) == false.

- + Definition

Defined in the header file boost/range/algorithm/stable_sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html index 82c53ea..ea2a770 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html @@ -3,7 +3,7 @@ Range Algorithm - transform - + @@ -28,7 +28,7 @@ Range Algorithm - transform

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -93,14 +93,14 @@ The return value is out + min(distance(rng1), distance(rng2)).

- + Definition

Defined in the header file boost/range/algorithm/transform.hpp

- + Requirements

@@ -170,7 +170,7 @@

- + Precondition:

@@ -202,7 +202,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html index 13f388f..89ceaad 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html @@ -3,7 +3,7 @@ Range Algorithm - unique - + @@ -28,7 +28,7 @@ Range Algorithm - unique

- + Prototype

@@ -69,7 +69,7 @@

- + Description

@@ -87,14 +87,14 @@ type.

- + Definition

Defined in the header file boost/range/algorithm/unique.hpp

- + Requirements

@@ -138,7 +138,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html index 7976d61..5182eaf 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html @@ -3,7 +3,7 @@ New algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html index e3d64a6..ea1c188 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html @@ -3,7 +3,7 @@ erase - + @@ -28,7 +28,7 @@ erase

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -68,7 +68,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html index dfe62c3..31cedc9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -73,7 +73,7 @@

- + Description

@@ -89,14 +89,14 @@ It is safe to call this function with unequal length ranges.

- + Definition

Defined in the header file boost/range/algorithm_ext/for_each.hpp

- + Requirements
    @@ -126,7 +126,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html index e0aa512..6e5516f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html @@ -3,7 +3,7 @@ insert - + @@ -28,7 +28,7 @@ insert

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/insert.hpp

- + Requirements
    @@ -82,7 +82,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html index 189151b..e3a6b79 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html @@ -3,7 +3,7 @@ overwrite - + @@ -28,7 +28,7 @@ overwrite

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ into the range to.

- + Definition

Defined in the header file boost/range/algorithm_ext/overwrite.hpp

- + Requirements
    @@ -87,7 +87,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html index 1357275..788af57 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -28,7 +28,7 @@ push_back

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the back of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_back.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html index d91db73..5269171 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -28,7 +28,7 @@ push_front

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ to the front of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_front.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html index 5963cab..b6519e5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html @@ -3,7 +3,7 @@ remove_erase - + @@ -28,7 +28,7 @@ remove_erase

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -54,14 +54,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -69,7 +69,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html index 4469f02..fb1ecb0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html @@ -3,7 +3,7 @@ remove_erase_if - + @@ -28,7 +28,7 @@ remove_erase_if

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -55,14 +55,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
    @@ -76,7 +76,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html index 2e8a2d1..87820b8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html @@ -3,7 +3,7 @@ Non-mutating algorithms - + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html index d14634a..8ce499c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html @@ -3,7 +3,7 @@ Range Algorithm - adjacent_find - + @@ -28,7 +28,7 @@ Range Algorithm - adjacent_find

- + Prototype

@@ -77,7 +77,7 @@

- + Description

@@ -98,14 +98,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/adjacent_find.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html index e87ccbe..175b25d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html @@ -3,7 +3,7 @@ binary_search - + @@ -28,7 +28,7 @@ binary_search

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ range rng.

- + Definition

Defined in the header file boost/range/algorithm/binary_search.hpp

- + Requirements

@@ -111,7 +111,7 @@

- + Precondition:

@@ -129,7 +129,7 @@ order according to the function object pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html index 3e36aa5..e1eb534 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html @@ -3,7 +3,7 @@ count - + @@ -28,7 +28,7 @@ count

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/count.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html index bb6187c..75de9dc 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html @@ -3,7 +3,7 @@ equal - + @@ -28,7 +28,7 @@ equal

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -71,14 +71,14 @@ considered equal in the predicate version if pred(x,y) is true.

- + Definition

Defined in the header file boost/range/algorithm/equal.hpp

- + Requirements

@@ -139,7 +139,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html index 8ba9948..9bfac7a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html @@ -3,7 +3,7 @@ equal_range - + @@ -28,7 +28,7 @@ equal_range

- + Prototype

@@ -71,7 +71,7 @@

- + Description

@@ -85,14 +85,14 @@ is determined by pred.

- + Definition

Defined in the header file boost/range/algorithm/equal_range.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Precondition:

@@ -155,7 +155,7 @@ is ordered in ascending order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html index 05db375..59fdde8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html @@ -3,7 +3,7 @@ find - + @@ -28,7 +28,7 @@ find

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -60,14 +60,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html index b5ab6b0..201daad 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html @@ -3,7 +3,7 @@ find_end - + @@ -28,7 +28,7 @@ find_end

- + Prototype

@@ -66,7 +66,7 @@

- + Description

@@ -81,14 +81,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_end.hpp

- + Requirements

@@ -148,7 +148,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html index a8de6a4..8ae0ea3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html @@ -3,7 +3,7 @@ find_first_of - + @@ -28,7 +28,7 @@ find_first_of

- + Prototype

@@ -66,7 +66,7 @@

- + Description

@@ -86,14 +86,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_first_of.hpp

- + Requirements

@@ -147,7 +147,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html index 07df166..6c2dfa0 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -28,7 +28,7 @@ find_if

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -64,14 +64,14 @@ defines found in the same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_if.hpp

- + Requirements
- + Precondition:

@@ -98,7 +98,7 @@ rng, *i is in the domain of UnaryPredicate.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html index f90bdc6..a43c6c4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -59,14 +59,14 @@ fun(x).

- + Definition

Defined in the header file boost/range/algorithm/for_each.hpp

- + Requirements
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html index d10629d..3316554 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html @@ -3,7 +3,7 @@ lexicographical_compare - + @@ -28,7 +28,7 @@ lexicographical_compare

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -73,14 +73,14 @@ predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html index 3eaa4e3..ead071e 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html @@ -3,7 +3,7 @@ lower_bound - + @@ -28,7 +28,7 @@ lower_bound

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/lower_bound.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Precondition:

@@ -148,7 +148,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html index 552d3af..ebfd1d4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html @@ -3,7 +3,7 @@ max_element - + @@ -28,7 +28,7 @@ max_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/max_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html index 675196b..e263374 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html @@ -3,7 +3,7 @@ min_element - + @@ -28,7 +28,7 @@ min_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/min_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html index 572dd69..f20cf0f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html @@ -3,7 +3,7 @@ mismatch - + @@ -28,7 +28,7 @@ mismatch

- + Prototype

@@ -106,7 +106,7 @@

- + Description

@@ -124,14 +124,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/mismatch.hpp

- + Requirements

@@ -192,14 +192,14 @@

- + Precondition:

distance(rng2) >= distance(rng1)

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html index 03b528c..38e4f19 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html @@ -3,7 +3,7 @@ search - + @@ -28,7 +28,7 @@ search

- + Prototype

@@ -96,7 +96,7 @@

- + Description

@@ -115,14 +115,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/search.hpp

- + Requirements

@@ -183,7 +183,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html index e73149f..071cc4a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html @@ -3,7 +3,7 @@ upper_bound - + @@ -28,7 +28,7 @@ upper_bound

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -71,14 +71,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/upper_bound.hpp

- + Requirements

@@ -129,7 +129,7 @@

- + Precondition:

@@ -147,7 +147,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric.html b/doc/html/range/reference/algorithms/range_numeric.html index 9da4d83..c6c6767 100644 --- a/doc/html/range/reference/algorithms/range_numeric.html +++ b/doc/html/range/reference/algorithms/range_numeric.html @@ -3,7 +3,7 @@ Numeric algorithms - + diff --git a/doc/html/range/reference/algorithms/range_numeric/accumulate.html b/doc/html/range/reference/algorithms/range_numeric/accumulate.html index 9351f90..36f12b0 100644 --- a/doc/html/range/reference/algorithms/range_numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/range_numeric/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -28,7 +28,7 @@ accumulate

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -64,18 +64,18 @@ The return value is the resultant value of the above algorithm.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -100,7 +100,7 @@
- + For the second version
@@ -134,7 +134,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html index 6680e82..4d43186 100644 --- a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html @@ -3,7 +3,7 @@ adjacent_difference - + @@ -28,7 +28,7 @@ adjacent_difference

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -69,18 +69,18 @@ instead of operator-().

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -111,7 +111,7 @@
- + For the second version
@@ -146,7 +146,7 @@
- + Precondition:

@@ -154,7 +154,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/inner_product.html b/doc/html/range/reference/algorithms/range_numeric/inner_product.html index d2591e2..91b4369 100644 --- a/doc/html/range/reference/algorithms/range_numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/range_numeric/inner_product.html @@ -3,7 +3,7 @@ inner_product - + @@ -28,7 +28,7 @@ inner_product

- + Prototype

@@ -54,7 +54,7 @@

- + Description

@@ -67,18 +67,18 @@ algorithm please see inner_product.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -113,7 +113,7 @@
- + For the second version
@@ -162,14 +162,14 @@
- + Precondition:

distance(rng2) >= distance(rng1) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html index b1aa0bf..9a82258 100644 --- a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html @@ -3,7 +3,7 @@ partial_sum - + @@ -28,7 +28,7 @@ partial_sum

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,18 +58,18 @@ in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -99,7 +99,7 @@
- + For the second version
@@ -128,7 +128,7 @@
- + Precondition:

@@ -136,7 +136,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms.html b/doc/html/range/reference/algorithms/set_algorithms.html index 447b470..b9888f5 100644 --- a/doc/html/range/reference/algorithms/set_algorithms.html +++ b/doc/html/range/reference/algorithms/set_algorithms.html @@ -3,7 +3,7 @@ Set algorithms - + diff --git a/doc/html/range/reference/algorithms/set_algorithms/includes.html b/doc/html/range/reference/algorithms/set_algorithms/includes.html index b8fabe5..09b0cd4 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/includes.html +++ b/doc/html/range/reference/algorithms/set_algorithms/includes.html @@ -3,7 +3,7 @@ includes - + @@ -28,7 +28,7 @@ includes

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -60,14 +60,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Precondition:

@@ -163,7 +163,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html index 95531ed..f5b4729 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html @@ -3,7 +3,7 @@ set_difference - + @@ -28,7 +28,7 @@ set_difference

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html index 7367d86..2608a4b 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html @@ -3,7 +3,7 @@ set_intersection - + @@ -28,7 +28,7 @@ set_intersection

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html index 52b58b7..015d867 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html @@ -3,7 +3,7 @@ set_symmetric_difference - + @@ -28,7 +28,7 @@ set_symmetric_difference

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -75,14 +75,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -168,7 +168,7 @@

- + Precondition:

@@ -186,7 +186,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_union.html b/doc/html/range/reference/algorithms/set_algorithms/set_union.html index 3a8abe3..e983e4c 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_union.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_union.html @@ -3,7 +3,7 @@ set_union - + @@ -28,7 +28,7 @@ set_union

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -70,14 +70,14 @@ in the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -163,7 +163,7 @@

- + Precondition:

@@ -181,7 +181,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index 37f4882..fc32e83 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -3,7 +3,7 @@ Extending the library - + diff --git a/doc/html/range/reference/extending/method_1.html b/doc/html/range/reference/extending/method_1.html index d9f66a7..632687b 100644 --- a/doc/html/range/reference/extending/method_1.html +++ b/doc/html/range/reference/extending/method_1.html @@ -3,7 +3,7 @@ Method 1: provide member functions and nested types - + diff --git a/doc/html/range/reference/extending/method_2.html b/doc/html/range/reference/extending/method_2.html index eae4cbd..f4f3524 100644 --- a/doc/html/range/reference/extending/method_2.html +++ b/doc/html/range/reference/extending/method_2.html @@ -3,7 +3,7 @@ Method 2: provide free-standing functions and specialize metafunctions - + diff --git a/doc/html/range/reference/extending/method_3.html b/doc/html/range/reference/extending/method_3.html index 3594ff8..f841237 100644 --- a/doc/html/range/reference/extending/method_3.html +++ b/doc/html/range/reference/extending/method_3.html @@ -3,7 +3,7 @@ Method 3: provide range adaptor implementations - + diff --git a/doc/html/range/reference/extending/method_3/method_3_1.html b/doc/html/range/reference/extending/method_3/method_3_1.html index 9370d65..e995bee 100644 --- a/doc/html/range/reference/extending/method_3/method_3_1.html +++ b/doc/html/range/reference/extending/method_3/method_3_1.html @@ -3,7 +3,7 @@ Method 3.1: Implement a Range Adaptor without arguments - + diff --git a/doc/html/range/reference/extending/method_3/method_3_2.html b/doc/html/range/reference/extending/method_3/method_3_2.html index f153d0e..f0bae90 100644 --- a/doc/html/range/reference/extending/method_3/method_3_2.html +++ b/doc/html/range/reference/extending/method_3/method_3_2.html @@ -3,7 +3,7 @@ Method 3.2: Implement a Range Adaptor with arguments - + diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html index 8db874f..ae0bbf0 100644 --- a/doc/html/range/reference/overview.html +++ b/doc/html/range/reference/overview.html @@ -3,7 +3,7 @@ Overview - + diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index 6e4ad0a..2e16372 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -3,7 +3,7 @@ Provided Ranges - + diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index e2ccb2c..762ef94 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -3,7 +3,7 @@ counting_range - + @@ -27,7 +27,7 @@ counting_range

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -58,14 +58,14 @@ (from Boost.Iterator).

- + Definition

Defined in header file boost/range/counting_range.hpp

- + Requirements
  1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index cd481f0..e482871 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -3,7 +3,7 @@ irange - + @@ -27,7 +27,7 @@ irange
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -58,14 +58,14 @@ parameters denoted a half-open range.

- + Definition

Defined in the header file boost/range/irange.hpp

- + Requirements
    @@ -79,7 +79,7 @@
- + Complexity

diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 063204d..7ee1a79 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -3,7 +3,7 @@ istream_range - + @@ -27,7 +27,7 @@ istream_range

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

- + Definition

diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html index 4fa0645..89da873 100644 --- a/doc/html/range/reference/semantics.html +++ b/doc/html/range/reference/semantics.html @@ -3,7 +3,7 @@ Semantics - + @@ -31,7 +31,7 @@

Functions
- + notation
diff --git a/doc/html/range/reference/semantics/functions.html b/doc/html/range/reference/semantics/functions.html index 16bb7fb..232b680 100644 --- a/doc/html/range/reference/semantics/functions.html +++ b/doc/html/range/reference/semantics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/range/reference/semantics/metafunctions.html b/doc/html/range/reference/semantics/metafunctions.html index cc2f4bd..6df4902 100644 --- a/doc/html/range/reference/semantics/metafunctions.html +++ b/doc/html/range/reference/semantics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/range/reference/synopsis.html b/doc/html/range/reference/synopsis.html index c950490..248e8c1 100644 --- a/doc/html/range/reference/synopsis.html +++ b/doc/html/range/reference/synopsis.html @@ -3,7 +3,7 @@ Synopsis - + diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index 48043c4..b3e147a 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -3,7 +3,7 @@ Terminology and style guidelines - + diff --git a/doc/html/range/upgrade.html b/doc/html/range/upgrade.html index 27ddd2b..ad53c37 100644 --- a/doc/html/range/upgrade.html +++ b/doc/html/range/upgrade.html @@ -3,7 +3,7 @@ Upgrade version of Boost.Range - + diff --git a/doc/html/range/upgrade/upgrade_from_1_34.html b/doc/html/range/upgrade/upgrade_from_1_34.html index 587555c..dfc4c52 100644 --- a/doc/html/range/upgrade/upgrade_from_1_34.html +++ b/doc/html/range/upgrade/upgrade_from_1_34.html @@ -3,7 +3,7 @@ Upgrade from version 1.34 - + diff --git a/doc/html/range/upgrade/upgrade_from_1_42.html b/doc/html/range/upgrade/upgrade_from_1_42.html index 74059e4..3fbc2d2 100644 --- a/doc/html/range/upgrade/upgrade_from_1_42.html +++ b/doc/html/range/upgrade/upgrade_from_1_42.html @@ -3,7 +3,7 @@ Upgrade from version 1.42 - + diff --git a/doc/html/range/utilities.html b/doc/html/range/utilities.html index 0ccd47c..6c16a00 100644 --- a/doc/html/range/utilities.html +++ b/doc/html/range/utilities.html @@ -3,7 +3,7 @@ Utilities - + diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html index 7956363..51568b4 100644 --- a/doc/html/range/utilities/iterator_range.html +++ b/doc/html/range/utilities/iterator_range.html @@ -3,7 +3,7 @@ Class iterator_range - + @@ -47,7 +47,7 @@ limitation is simply propogated from the underlying iterator type.

- + Synopsis

@@ -187,7 +187,7 @@ iterators from the same container.

- + Details member functions
@@ -218,7 +218,7 @@

- + Details functions
diff --git a/doc/html/range/utilities/join.html b/doc/html/range/utilities/join.html index d430946..862e913 100644 --- a/doc/html/range/utilities/join.html +++ b/doc/html/range/utilities/join.html @@ -3,7 +3,7 @@ Function join - + @@ -39,7 +39,7 @@ if the end of a range has been reached internally during traversal.

- + Synposis

@@ -65,7 +65,7 @@

- + Example

diff --git a/doc/html/range/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html index 517639f..765a0c9 100644 --- a/doc/html/range/utilities/sub_range.html +++ b/doc/html/range/utilities/sub_range.html @@ -3,7 +3,7 @@ Class sub_range - + @@ -35,7 +35,7 @@ is.

- + Synopsis

diff --git a/test/algorithm_ext_test/push_front.cpp b/test/algorithm_ext_test/push_front.cpp index ebc09a8..a5f5fb9 100644 --- a/test/algorithm_ext_test/push_front.cpp +++ b/test/algorithm_ext_test/push_front.cpp @@ -21,6 +21,15 @@ namespace { + struct DoubleValue + { + template< class Value > + Value operator()(Value x) + { + return x * 2; + } + }; + template< class Container > void test_push_front_impl(std::size_t n) { @@ -34,10 +43,14 @@ namespace BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() ); - // Do it again to push onto non-empty container - reference.insert(reference.begin(), reference.begin(), reference.end()); + // copy the orignal reference sequence + Container reference_copy(reference); + std::transform(reference.begin(), reference.end(), reference.begin(), DoubleValue()); - boost::push_front(test, boost::irange(0, n)); + // Do it again to push onto non-empty container + reference.insert(reference.end(), reference_copy.begin(), reference_copy.end()); + + boost::push_front(test, boost::irange(0, n * 2, 2)); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() ); From cab01e8ba3d34344f7a7780843ea79e2a89f99b1 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 8 Apr 2010 20:56:00 +0000 Subject: [PATCH 10/26] Boost.Range remove deprecated html documentation. [SVN r61148] --- doc/boost_range.html | 769 ------------------ doc/counting_range.html | 70 -- doc/examples.html | 72 -- doc/faq.html | 145 ---- doc/headers.html | 202 ----- doc/history_ack.html | 90 -- .../range_algorithm_introduction.html | 257 ------ .../range_algorithm_mutating_algorithms.html | 50 -- .../copy.html | 115 --- .../copy_backward.html | 124 --- .../range_algorithm_new_algorithms.html | 41 - ...nge_algorithm_non_mutating_algorithms.html | 42 - doc/intro.html | 164 ---- doc/istream_range.html | 64 -- doc/mfc_atl.html | 581 ------------- doc/portability.html | 103 --- doc/range.html | 379 --------- doc/style.html | 132 --- doc/upgrading.html | 79 -- doc/utility_class.html | 380 --------- 20 files changed, 3859 deletions(-) delete mode 100644 doc/boost_range.html delete mode 100755 doc/counting_range.html delete mode 100644 doc/examples.html delete mode 100644 doc/faq.html delete mode 100644 doc/headers.html delete mode 100755 doc/history_ack.html delete mode 100644 doc/html/range/reference/range_algorithm/range_algorithm_introduction.html delete mode 100644 doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms.html delete mode 100644 doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy.html delete mode 100644 doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy_backward.html delete mode 100644 doc/html/range/reference/range_algorithm/range_algorithm_new_algorithms.html delete mode 100644 doc/html/range/reference/range_algorithm/range_algorithm_non_mutating_algorithms.html delete mode 100644 doc/intro.html delete mode 100755 doc/istream_range.html delete mode 100644 doc/mfc_atl.html delete mode 100644 doc/portability.html delete mode 100644 doc/range.html delete mode 100644 doc/style.html delete mode 100644 doc/upgrading.html delete mode 100644 doc/utility_class.html diff --git a/doc/boost_range.html b/doc/boost_range.html deleted file mode 100644 index b9fd0ca..0000000 --- a/doc/boost_range.html +++ /dev/null @@ -1,769 +0,0 @@ - - - - Boost.Range Reference - - - - -

- - - - -


- Boost.Range -

-
-

Synopsis and Reference -

- -
- -

Overview

-

- Three types of objects are currently supported by the library: -

- 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. -

- -

Synopsis

-

-

-namespace boost
-{
-    //
-    // Single Pass Range metafunctions
-    //
-                   
-    template< class T >
-    struct range_iterator;
-    
-    template< class T >
-    struct range_value;
-  
-    template< class T >
-    struct range_reference;
-
-    template< class T >
-    struct range_pointer;
-    
-    template< class T >
-    struct range_category;
-
-    //
-    // Forward Range metafunctions
-    //
-    
-    template< class T >
-    struct range_difference;
-    
-    //
-    // Bidirectional Range metafunctions
-    //
-    
-    template< class T >
-    struct range_reverse_iterator;
-    
-    //
-    // Single Pass Range functions
-    //
-    
-    template< class T >
-    typename range_iterator<T>::type
-    begin( T& r );
-    
-    template< class T >
-    typename range_iterator<const T>::type
-    begin( const T& r );
-        
-    template< class T >
-    typename range_iterator<T>::type
-    end( T& r );
-                      
-    template< class T >
-    typename range_iterator<const T>::type
-    end( const T& r );
-    
-    template< class T >
-    bool
-    empty( const T& r );
-               
-    //
-    // Forward Range functions
-    //
-    
-    template< class T >
-    typename range_difference<T>::type
-    distance( const T& r );
-                            
-    //
-    // Bidirectional Range functions
-    //
-                     
-    template< class T >
-    typename range_reverse_iterator<T>::type
-    rbegin( T& r );
-    
-    template< class T >
-    typename range_reverse_iterator<const T>::type
-    rbegin( const T& r );
-        
-    template< class T >
-    typename range_reverse_iterator<T>::type
-    rend( T& r );
-                      
-    template< class T >
-    typename range_reverse_iterator<const T>::type
-    rend( const T& r );
-    
-    //
-    // Random Access Range functions
-    //
-    
-    template< class T >
-    typename range_difference<T>::type
-    size( const T& r );
-    
-    //
-    // Special const Range functions
-    // 
-    
-    template< class T >
-    typename range_iterator<const T>::type 
-    const_begin( const T& r );
-    
-    template< class T >
-    typename range_iterator<const T>::type 
-    const_end( const T& r );
-    
-    template< class T >
-    typename range_reverse_iterator<const T>::type 
-    const_rbegin( const T& r );
-    
-    template< class T >
-    typename range_reverse_iterator<const T>::type 
-    const_rend( const T& r );
-
-    //
-    // String utilities
-    //
-    
-    template< class T >
-    iterator_range<...see below...> 
-    as_literal( T& r );
-
-    template< class T >
-    iterator_range<...see below...> 
-    as_literal( const T& r );
-
-    template< class T >
-    iterator_range< typename range_iterator<T>::type > 
-    as_array( T& r );
-
-    template< class T >
-    iterator_range< typename range_iterator<const T>::type > 
-    as_array( const T& r );
-
-} // namespace 'boost' 
-
-
-

- -

Semantics

-

notation

-

- - - - - - - - - - - - - - - - -
- 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. -

-

Metafunctions

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Expression - Return type - Complexity
range_iterator<X>::typeT::iterator
- P::first_type
- A*
- -
compile time
range_iterator<const X>::typeT::const_iterator
- P::first_type
- const A*
- -
compile time
range_value<X>::typeboost::iterator_value<range_iterator<X>::type>::type - compile time
range_reference<X>::typeboost::iterator_reference<range_iterator<X>::type>::type - compile time
range_pointer<X>::typeboost::iterator_pointer<range_iterator<X>::type>::type - compile time
range_category<X>::typeboost::iterator_category<range_iterator<X>::type>::type - compile time
range_difference<X>::type - boost::iterator_difference<range_iterator<X>::type>::typecompile time
range_reverse_iterator<X>::typeboost::reverse_iterator<range_iterator<X>::type>
-
compile time
range_reverse_iterator<const X>::typeboost::reverse_iterator<range_iterator<const X>::type> -
-
compile time
-

-

Functions

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Expression - Return type - Returns - Complexity
begin(x)range_iterator<X>::type - p.first if p is of type std::pair<T>
- a if a is an array
- range_begin(x) if that expression would invoke a function found by ADL
- t.begin() otherwise - -
constant time
end(x)range_iterator<X>::type - p.second if p is of type std::pair<T>
- a + sz if a is an array of size sz - -
- range_end(x) if that expression would invoke a function found by ADL
- t.end() otherwise - -
- constant time
empty(x)boolboost::begin(x) == boost::end(x)
-
constant time
-
distance(x)range_difference<X>::type - - std::distance(boost::begin(x),boost::end(x)) - - -
size(x)range_difference<X>::type boost::end(x) - boost::begin(x) - - constant time
rbegin(x)range_reverse_iterator<X>::typerange_reverse_iterator<X>::type( boost::end(x) ) -
-
constant time -
rend(x)range_reverse_iterator<X>::typerange_reverse_iterator<X>::type( boost::begin(x) ) - constant time
const_begin(x)range_iterator<const X>::typerange_iterator<const X>::type( boost::begin(x) ) -
-
constant time -
const_end(x)range_iterator<const X>::typerange_iterator<const X>::type( boost::end(x) ) - constant time
const_rbegin(x)range_reverse_iterator<const X>::typerange_reverse_iterator<const X>::type( boost::rbegin(x) ) -
-
constant time -
const_rend(x)range_reverse_iterator<const X>::typerange_reverse_iterator<const X>::type( boost::rend(x) ) - - constant time
as_literal(x)iterator_range<U> where U is - Char* if x is a pointer to a - string and U is - range_iterator<X>::type otherwise - - - - [s,s + std::char_traits<X>::length(s)) if s is a Char* or an array of Char -
- [boost::begin(x),boost::end(x)) otherwise - - - -
linear time for pointers to a string or arrays of - Char, constant time otherwise
as_array(x)iterator_range<X> - [boost::begin(x),boost::end(x)) - - - - - constant time otherwise
-

-

- The special const_-named functions are useful when you - want to document clearly that your code is read-only. -

-

- as_literal() can be used internally in string - algorithm librararies such that arrays of characters are - handled correctly. -

-

- as_array() can be used with string algorithm libraries to make it clear that arrays of characters are handled like an array and not like a string. -

-

Notice that the above functions should always be called with - qualification (boost::) to prevent unintended - Argument Dependent Lookup (ADL). -

-
- -

Extending the library

- - - - - -

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 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. -

-

- - - - - - - - - - - - -
- Member function - Related concept
begin()Single Pass Range
end() - Single Pass Range
-

-

- Notice that rbegin() and rend() member functions are - not needed even though the container can support bidirectional iteration. -

-

- The required member types are: -

-

- - - - - - - - - - - - - -
- Member type - Related concept
iteratorSingle Pass Range
const_iteratorSingle Pass Range
-

-

- Again one should notice that member types reverse_iterator and const_reverse_iterator - are not needed. -

- -

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 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. -

-

- - - - - - - - - - - - - -
- Function - Related concept
range_begin(x)Single Pass Range
range_end(x) - Single Pass Range
-

-

range_begin() and range_end() must be - overloaded for both const and mutable reference arguments. -

- -

- You must also specialize two metafunctions for your type X: -

-

- - - - - - - - - - - - - -
- Metafunction - Related concept
boost::range_mutable_iteratorSingle Pass Range
boost::range_const_iteratorSingle Pass 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_mutable_iterator< Foo::Pair<T> >
-    {
-        typedef T type;
-    };
-
-    template< class T >
-    struct range_const_iterator< Foo::Pair<T> >
-    {
-        //
-        // Remark: this is defined similar to 'range_mutable_iterator'
-        //         because the 'Pair' type does not distinguish
-        //         between an iterator and a const_iterator.
-        //
-        typedef 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 range_begin( Pair<T>& x )
-    { 
-        return x.first;
-    }
-
-    template< class T >
-    inline T range_begin( const Pair<T>& x )
-    { 
-        return x.first;
-    }
-
-    template< class T >
-    inline T range_end( Pair<T>& x )
-    { 
-        return x.last;
-    }
-
-    template< class T >
-    inline T range_end( const Pair<T>& x )
-    { 
-        return 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_difference< Foo::Pair<iter> >::type s = boost::size( pair );
-    s      = boost::size( cpair );
-    boost::range_reverse_iterator< const Foo::Pair<iter> >::type
-    ri     = boost::rbegin( cpair ),
-    re     = boost::rend( cpair );
-}    
-
-
- -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt) -

-
-
-
-
-
-
-
-
-
-
-
-
- - diff --git a/doc/counting_range.html b/doc/counting_range.html deleted file mode 100755 index c44edcc..0000000 --- a/doc/counting_range.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - Boost.Range Utilities - - - - - - - - - -

Boost.Range

-

Function counting_range

-

- The intention of the counting_range function is to construct - a new range with iterators that are wrapped in a - counting_iterator (from Boost.Iterator) -

- -

Synopsis

- -
namespace boost
-{
-    template< class Incrementable > inline
-    range< counting_iterator<Incrementable> >
-    counting_range(Incrementable first, Incrementable last);
-
-    template< class SinglePassRange > inline
-    range< counting_iterator<typename range_iterator<SinglePassRange>::type >
-    counting_range(const Range& rng);
-
-    template< class SinglePassRange > inline
-    range< counting_iterator<typename range_iterator<SinglePassRange>::type >
-    counting_range(Range& rng);
-            
-} // namespace 'boost'
-    
- -

- © Copyright Neil Groves 2009. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/examples.html b/doc/examples.html deleted file mode 100644 index d1f9887..0000000 --- a/doc/examples.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - Boost.Range Examples - - - - - - - - - - -

Boost.Range

- -

Examples

-

- Some examples are given in the accompanying test files: -

- - - -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/faq.html b/doc/faq.html deleted file mode 100644 index fcacf98..0000000 --- a/doc/faq.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Boost.Range FAQ - - - - - - - - - - -

Boost.Range

- -

-

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. -
  3. - 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. -

    -
  4. -
  5. - 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. -

    -
  6. -
  7. - 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. -

    -
  8. - - -
- - -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/headers.html b/doc/headers.html deleted file mode 100644 index c896bff..0000000 --- a/doc/headers.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - Boost.Range Headers - - - - - - - - - - -

Boost.Range

- -

-

Library headers

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderIncludesRelated concept
<boost/range.hpp>everything-
<boost/range/metafunctions.hpp>every metafunction-
<boost/range/functions.hpp>every function-
<boost/range/value_type.hpp>range_valueSingle Pass Range
<boost/range/iterator.hpp>range_iteratorSingle Pass Range
<boost/range/mutable_iterator.hpp>range_mutable_iteratorSingle Pass Range
<boost/range/const_iterator.hpp>range_const_iteratorSingle Pass Range
<boost/range/difference_type.hpp>range_differenceForward Range
<boost/range/pointer.hpp>range_pointer-
<boost/range/category.hpp>range_category-
<boost/range/reverse_iterator.hpp>range_reverse_iteratorBidirectional Range
<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>emptySingle Pass Range
<boost/range/distance.hpp>distanceForward Range
<boost/range/size.hpp>sizeRandom Access Range -
<boost/range/rbegin.hpp> - rbegin and - const_rbegin - Bidirectional Range
<boost/range/rend.hpp> - rend and - const_rend - Bidirectional Range
<boost/range/as_array.hpp> - as_array - -
<boost/range/as_literal.hpp> - as_literal - -
<boost/range/iterator_range.hpp>iterator_range-
<boost/range/sub_range.hpp>sub_range-
<boost/range/concepts.hpp>concept checks-
-
-

- - -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/history_ack.html b/doc/history_ack.html deleted file mode 100755 index 3191dd0..0000000 --- a/doc/history_ack.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Boost.Range History and Acknowledgement - - - - - - - - - - -

Boost.Range

- -

History and Acknowledgement

-

- The library was 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. - I believe this was back in 2001 or 2002. -

- -

- 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 -

-

-

- The concept checks and their documentation was provided by Daniel Walker. - -


-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/html/range/reference/range_algorithm/range_algorithm_introduction.html b/doc/html/range/reference/range_algorithm/range_algorithm_introduction.html deleted file mode 100644 index e24351f..0000000 --- a/doc/html/range/reference/range_algorithm/range_algorithm_introduction.html +++ /dev/null @@ -1,257 +0,0 @@ - - - -Introduction and motivation - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- In its most simple form a Range Algorithm - (or range-based algorithm) is simply an iterator-based algorithm where - the two iterator arguments have been replaced by - one range argument. For example, we may write -

-

- -

-
#include <boost/range/algorithm.hpp>
-#include <vector>
-
-std::vector<int> vec = ...;
-boost::sort(vec);
-
-

-

-

- instead of -

-

- -

-
std::sort(vec.begin(), vec.end());
-
-

-

-

- However, the return type of range algorithms is almost always different - from that of existing iterator-based algorithms. -

-

- One group of algorithms, like boost::sort(), will simply return the same range so - that we can continue to pass the range around and/or further modify it. - Because of this we may write -

-
boost:unique(boost::sort(vec));
-
-

- to first sort the range and then run unique() on the sorted range. -

-

- Algorithms like boost::unique() - fall into another group of algorithms that return (potentially) narrowed - views of the original range. By default boost::unique(rng) returns the range [boost::begin(rng), found) - where found denotes the - iterator returned by std::unique(boost::begin(rng), boost::end(rng)) -

-

- Therefore exactly the unique values can be copied by writing -

-
boost::copy(boost::unique(boost::sort(vec)),
-            std::ostream_iterator<int>(std::cout));
-
-

-

-

- Algorithms like boost::unique usually return the same range: - [boost::begin(rng), found). However, this behaviour may be changed - by supplying the algorithms with a template argument: -

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Return -

-
-

- boost::unique<boost::return_found>(rng) -

-
-

- returns a single iterator like std::unique -

-
-

- boost::unique<boost::return_begin_found>(rng) -

-
-

- returns the range [boost::begin(rng), - found) - (this is the default) -

-
-

- boost::unique<boost::return_begin_next>(rng) -

-
-

- returns the range [boost::begin(rng), - boost::next(found)) -

-
-

- boost::unique<boost::return_found_end>(rng) -

-
-

- returns the range [found, - boost::end(rng)) -

-
-

- boost::unique<boost::return_next_end>(rng) -

-
-

- returns the range [boost::next(found),boost::end(rng)) -

-
-

- boost::unique<boost::return_begin_end>(rng) -

-
-

- returns the entire original range. -

-
-

- This functionality has the following advantages: -

-
    -
  1. - it allows for seamless functional-style - programming where you do not need to use named - local variables to store intermediate results -
  2. -
  3. - it is very safe - because the algorithm can verify out-of-bounds conditions and handle - tricky conditions that lead to empty ranges -
  4. -
-

- For example, consider how easy we may erase the duplicates in a sorted - container: -

-

- -

-
std::vector<int> vec = ...;
-boost::erase(vec, boost::unique<boost::return_found_end>(boost::sort(vec)));
-
-

-

-

- Notice the use of boost::return_found_end. - What if we wanted to erase all the duplicates except one of them? In old-fashined - STL-programming we might write -

-

- -

-
// assume 'vec' is already sorted
-std::vector<int>::iterator i = std::unique(vec.begin(), vec.end());
-
-// remember this check or you get into problems
-if (i != vec.end())
-    ++i;
-    
-vec.erase(i, vec.end());
-
-

-

-

- The same task may be accomplished simply with -

-
boost::erase(vec, boost::unique<boost::return_next_end>(vec));
-
-

- and there is no need to worry about generating an invalid range. Furthermore, - if the container is complex, calling vec.begin() several times will be more expensive - than using a range algorithm. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms.html deleted file mode 100644 index 5c11829..0000000 --- a/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -Mutating algorithms - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy.html deleted file mode 100644 index 4bf5ab0..0000000 --- a/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy.html +++ /dev/null @@ -1,115 +0,0 @@ - - - -Range Algorithm - copy - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Prototype -
-

- -

-
template<class SinglePassRange, class OutputIterator>
-OutputIterator copy(const SinglePassRange& source_rng, OutputIterator out_it);
-
-

-

-
- - Description -
-

- copy copies all elements - from source_rng to the - range [out_it, out_it - + distance(source_rng)). The return value is out_it + - distance(source_rng) -

-
- - Definition -
-

- Defined in the header file boost/range/algorithm/copy.hpp -

-
- - Requirements -
-
    -
  • -SinglePassRange is - a model of the SinglePassRangeConcept. -
  • -
  • -OutputIterator is a - model of the OutputIteratorConcept. -
  • -
  • - The value_type of - SinglePassRange is - convertible to a type in OutputIterator's - set of value types. -
  • -
-
- - Precondition: -
-
    -
  • -out_it is not an iterator - within the source_rng. -
  • -
  • -[out_it, out_it - + distance(source_rng)) is a valid range. -
  • -
-
- - Complexity -
-

- Linear. Exactly distance(source_rng) assignments are performed. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy_backward.html deleted file mode 100644 index de14a89..0000000 --- a/doc/html/range/reference/range_algorithm/range_algorithm_mutating_algorithms/copy_backward.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -Range Algorithm - copy_backward - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Prototype -
-

- -

-
template<class BidirectionalRange, class BidirectionalOutputIterator>
-    BidirectionalOutputIterator
-        copy_backward(const BidirectionalRange& source_rng,
-                      BidirectionalOutputIterator out_it);
-
-

-

-
- - Description -
-

- copy_backward copies - all elements from source_rng - to the range [out_it - - distance(source_rng), out_it). -

-

- The values are copied in reverse order. The return value is out_it - - distance(source_rng). -

-

- Note well that unlike all other standard algorithms out_it - denotes the end of the output sequence. -

-
- - Definition -
-

- Defined in the header file boost/range/algorithm/copy_backward.hpp -

-
- - Requirements -
-
    -
  • -BidirectionalRange - is a model of the SinglePassRangeConcept. -
  • -
  • -OutputIterator is a - model of the OutputIteratorConcept. -
  • -
  • - The value_type of - SinglePassRange is - convertible to a type in OutputIterator's - set of value types. -
  • -
-
- - Precondition: -
-
    -
  • -out_it is not an iterator - within the source_rng. -
  • -
  • -[out_it, out_it - + distance(source_rng)) is a valid range. -
  • -
-
- - Complexity -
-

- Linear. Exactly distance(source_rng) assignments are performed. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/range/reference/range_algorithm/range_algorithm_new_algorithms.html b/doc/html/range/reference/range_algorithm/range_algorithm_new_algorithms.html deleted file mode 100644 index a7f08e5..0000000 --- a/doc/html/range/reference/range_algorithm/range_algorithm_new_algorithms.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-

-??? -

- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/range/reference/range_algorithm/range_algorithm_non_mutating_algorithms.html b/doc/html/range/reference/range_algorithm/range_algorithm_non_mutating_algorithms.html deleted file mode 100644 index 9974a92..0000000 --- a/doc/html/range/reference/range_algorithm/range_algorithm_non_mutating_algorithms.html +++ /dev/null @@ -1,42 +0,0 @@ - - - -Non-mutating algorithms - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/intro.html b/doc/intro.html deleted file mode 100644 index 89d3504..0000000 --- a/doc/intro.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - Boost.Range Introduction - - - - - - - - - - -

Boost.Range

- -

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. -

- -

- This library therefore provides the means to adapt standard-like - containers, 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 -

-

-

Below is given a small example (the complete example can be found 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_iterator< const 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_difference< 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 ). - -

- - -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/istream_range.html b/doc/istream_range.html deleted file mode 100755 index 8f41fc4..0000000 --- a/doc/istream_range.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Boost.Range Utilities - - - - - - - - - -

Boost.Range

-

Function istream_range

-

- The intention of the istream_range function is to construct - a new range with a pair of std::istream_iterators that wrap a - specified std::basic_istream instance. -

- -

Synopsis

- -
-namespace boost
-{
-    template< class 
-        Type, class 
-            Elem, class Traits > inline
-    range< std::istream_iterator<Type, Elem, Traits> >
-    istream_range(std::basic_istream<Elem, Traits>& in);
-}    
- -

- © Copyright Neil Groves 2009. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/mfc_atl.html b/doc/mfc_atl.html deleted file mode 100644 index cc8eeb0..0000000 --- a/doc/mfc_atl.html +++ /dev/null @@ -1,581 +0,0 @@ - - - - - - -Boost Range MFC/ATL Extension - - - - - - -
-

Boost Range MFC/ATL Extension

- --- - - - - - - - - - -
Author:Shunsuke Sogame
Contact:mb2act@yahoo.co.jp
Date:26th of May 2006
Copyright:Shunsuke Sogame 2005-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt).
-
-

Overview

-

Boost.Range MFC/ATL Extension provides Boost.Range support for MFC/ATL collection and string types.

-
-CTypedPtrArray<CPtrArray, CList<CString> *> myArray;
-...
-BOOST_FOREACH (CList<CString> *theList, myArray)
-{
-    BOOST_FOREACH (CString& str, *theList)
-    {
-        boost::to_upper(str);
-        std::sort(boost::begin(str), boost::end(str));
-        ...
-    }
-}
-
- -
-
-

Requirements

- -
-
-

MFC Ranges

-

If the <boost/range/mfc.hpp> is included before or after Boost.Range headers, -the MFC collections and strings become models of Range. -The table below lists the Traversal Category and range_reference of MFC ranges.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RangeTraversal Categoryrange_reference<Range>::type
CArray<T,A>Random AccessT&
CList<T,A>BidirectionalT&
CMap<K,AK,M,AM>ForwardRange::CPair&
CTypedPtrArray<B,T*>Random AccessT* const
CTypedPtrList<B,T*>BidirectionalT* const
CTypedPtrMap<B,T*,V*>Forwardstd::pair<T*,V*> const
CByteArrayRandom AccessBYTE&
CDWordArrayRandom AccessDWORD&
CObArrayRandom AccessCObject* &
CPtrArrayRandom Accessvoid* &
CStringArrayRandom AccessCString&
CUIntArrayRandom AccessUINT&
CWordArrayRandom AccessWORD&
CObListBidirectionalCObject* &
CPtrListBidirectionalvoid* &
CStringListBidirectionalCString&
CMapPtrToWordForwardstd::pair<void*,WORD> const
CMapPtrToPtrForwardstd::pair<void*,void*> const
CMapStringToObForwardstd::pair<String,CObject*> const
CMapStringToStringForwardRange::CPair&
CMapWordToObForwardstd::pair<WORD,CObject*> const
CMapWordToPtrForwardstd::pair<WORD,void*> const
-

Other Boost.Range metafunctions are defined by the following. -Let Range be any type listed above and ReF be the same as range_reference<Range>::type. -range_value<Range>::type is the same as remove_reference<remove_const<Ref>::type>::type, -range_difference<Range>::type is the same as std::ptrdiff_t, and -range_pointer<Range>::type is the same as add_pointer<remove_reference<Ref>::type>::type. -As for const Range, see const Ranges.

-
-
-

ATL Ranges

-

If the <boost/range/atl.hpp> is included before or after Boost.Range headers, -the ATL collections and strings become models of Range. -The table below lists the Traversal Category and range_reference of ATL ranges.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RangeTraversal Categoryrange_reference<Range>::type
CAtlArray<E,ET>Random AccessE&
CAutoPtrArray<E>Random AccessE&
CInterfaceArray<I,pi>Random AccessCComQIPtr<I,pi>&
CAtlList<E,ET>BidirectionalE&
CAutoPtrList<E>BidirectionalE&
CHeapPtrList<E,A>BidirectionalE&
CInterfaceList<I,pi>BidirectionalCComQIPtr<I,pi>&
CAtlMap<K,V,KT,VT>ForwardRange::CPair&
CRBTree<K,V,KT,VT>BidirectionalRange::CPair&
CRBMap<K,V,KT,VT>BidirectionalRange::CPair&
CRBMultiMap<K,V,KT,VT>BidirectionalRange::CPair&
CSimpleStringT<B,b>Random AccessB&
CStringT<B,ST>Random AccessB&
CFixedStringT<S,n>Random Accessrange_reference<S>::type
CStringT<B,ST>Random AccessB&
CComBSTRRandom AccessOLECHAR&
CSimpleArray<T,TE>Random AccessT&
-

Other Boost.Range metafunctions are defined by the following. -Let Range be any type listed above and ReF be the same as range_reference<Range>::type. -range_value<Range>::type is the same as remove_reference<Ref>::type, -range_difference<Range>::type is the same as std::ptrdiff_t, and -range_pointer<Range>::type is the same as add_pointer<remove_reference<Ref>::type>::type. -As for const Range, see const Ranges.

-
-
-

const Ranges

-

range_reference<const Range>::type is defined by the following algorithm. -Let Range be any type listed above and ReF be the same as range_reference<Range>::type.

-
-if (Range is CObArray || Range is CObList)
-    return CObject const * &
-else if (Range is CPtrArray || Range is CPtrList)
-    return void const * &
-else if (there is a type X such that X& is the same as ReF)
-    return X const &
-else if (there is a type X such that X* const is the same as ReF)
-    return X const * const
-else
-    return ReF
-
-

Other Boost.Range metafunctions are defined by the following. -range_value<const Range>::type is the same as range_value<Range>::type, -range_difference<const Range>::type is the same as std::ptrdiff_t, and -range_pointer<const Range>::type is the same as add_pointer<remove_reference<range_reference<const Range>::type>::type>::type.

-
- -
- - diff --git a/doc/portability.html b/doc/portability.html deleted file mode 100644 index bb73e78..0000000 --- a/doc/portability.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Boost.Range Portability - - - - - - - - - - -

Boost.Range

- -

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 on range_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: - -

    -
  1. - do not use built-in arrays, -
  2. - do not pass rvalues to begin(), end() and - iterator_range Range constructors and assignment operators, -
  3. - use const_begin() - and const_end() - whenever your code by intention is read-only; this will also solve - most rvalue problems, -
  4. - do not rely on ADL: -
      -
    • - if you overload functions, include that header before the headers in this - library, -
    • - put all overloads in namespace boost. -
    - -
-

- -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

> - -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/range.html b/doc/range.html deleted file mode 100644 index 8646141..0000000 --- a/doc/range.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - Range Concepts - - - - - - - - -

Boost.Range

- -

Range concepts

- - - - -
-

Overview

- -

- A Range is a concept similar to the STL 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 - much 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 - -

- - - 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 - traversal -category of the underlying iterator type. Therefore - the range concepts are named to reflect which traversal category their - iterators support. See also terminology and style - guidelines. for more information about naming of ranges.

- -

The concepts described below specifies associated types as -metafunctions and all -functions as free-standing functions to allow for a layer of indirection.

- - - -
- -

Single Pass Range

- -

Notation

- - - - - - - - - -
XA type that is a model of Single Pass Range.
aObject of type X.
- - -

Description

-

- A range X where boost::range_iterator<X>::type is a model of -Single Pass Iterator - -

- - -

Associated types

- - - - - - - - - - - - - -
Iterator typeboost::range_iterator<X>::typeThe 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 typeboost::range_iterator<const X>::typeA type of iterator that may be used to examine, but not to - modify, a Range's elements.
- - -

Valid expressions

- - The following expressions must be valid. -

- - - - - - - - - - - - - - - - - -
NameExpressionReturn type
Beginning of rangeboost::begin(a)boost::range_iterator<X>::type if -a is mutable, boost::range_iterator<const X>::type -otherwise
End of rangeboost::end(a)boost::range_iterator<X>::type if -a is mutable, boost::range_iterator<const X>::type -otherwise
-

Expression semantics

- - - - - - - - - - - - - - - - - - -
ExpressionSemanticsPostcondition
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::distance(a) == 0.
boost::end(a)Returns an iterator pointing one past the last element in the - Range.boost::end(a) is past-the-end.
- -

Complexity guarantees

- - boost::end(a) is at most amortized linear time, boost::begin(a) is - amortized constant time. For most practical - purposes, one can expect both to be amortized constant time. - -

Invariants

- - - - - - - - - -
Valid rangeFor 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.
CompletenessAn algorithm that iterates through the range [boost::begin(a),boost::end(a)) - will pass through every element of a.
- - -

See also

-

Extending the library for UDTs

-

Implementation of - metafunctions

- -

Implementation of - functions

-

- Container -

- - -
-

Forward Range

- -

Notation

- - - - - - - - - -
XA type that is a model of Forward Range.
aObject of type X.
- -

Description

-

- A range X where boost::range_iterator<X>::type is a model -of Forward Traversal Iterator -

- -

Refinement of

Single Pass -Range - -

- -
- -

Bidirectional Range

- -

Notation

- - - - - - - - - -
XA type that is a model of Bidirectional Range.
aObject of type X.
- -

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. - -

Refinement of

Forward Range - - -

- -
- -

Random Access Range

-

Description

-

- A range X where boost::range_iterator<X>::type is a model -of Random Access Traversal Iterator -

- -

Refinement of

-

- Bidirectional Range -

- -
- -

Concept Checking

- - Each of the range concepts has a corresponding concept checking - class in the file <boost/range/concepts.hpp>. These classes may be - used in conjunction with the Boost Concept - Check library 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 - ForwardRange 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. - - -

See also

-

Range Terminology and style guidelines

-

Iterator Concepts

-

Boost Concept Check library

- -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

-
-
-
-
-
-
-
-
-
-
- - - diff --git a/doc/style.html b/doc/style.html deleted file mode 100644 index 4240a8c..0000000 --- a/doc/style.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Boost.Range Terminology and Style Guidelines - - - - - - - - - - -

Boost.Range

- -

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: -

- 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 -

- 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 );
-   
-

-

- -

- -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

-
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/upgrading.html b/doc/upgrading.html deleted file mode 100644 index 2d76111..0000000 --- a/doc/upgrading.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - Boost.Range Upgrading - - - - - - - - - -

Boost.Range

- -

Upgrading from Boost v. 1.34.*

-

- Boost v. 1.35 introduced some larger refactorings of the library: -

- - - -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/doc/utility_class.html b/doc/utility_class.html deleted file mode 100644 index 956bf99..0000000 --- a/doc/utility_class.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - Boost.Range Utilities - - - - - - - - - -

Boost.Range

- -

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: - -

- - The iterator_range class is templated on a Forward - Traversal Iterator and should be used whenever fairly general code is needed. - The sub_range class is templated on a 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. -

- -
-

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 - Random Access 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. Likewise, if one creates a default constructed - iterator_range, then one have to be careful about not doing - anything besides copying.

- -

Synopsis

- -
-namespace boost
-{
-    template< class ForwardTraversalIterator >
-    class iterator_range
-    {
-    public: // Forward Range types
-        typedef ForwardTraversalIterator             iterator;
-        typedef ForwardTraversalIterator             const_iterator;
-        typedef iterator_difference<iterator>::type  difference_type;
- 
-    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;
-        difference_type size() const;
-        bool            empty() const;
-        
-    public: // convenience
-        operator        unspecified_bool_type() const;
-        bool            equal( const iterator_range& ) const;
-        reference       front() const;
-        reference       back() const;
-        iterator_range& advance_begin( difference_type n );
-        iterator_range& advance_end( difference_type n );
-        // for Random Access Range only: 
-        reference       operator[]( difference_type at ) const;
-        value_type      operator()( difference_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 range_iterator<ForwardRange>::type >
-    make_iterator_range( ForwardRange& r );
-
-    template< class ForwardRange >
-    iterator_range< typename range_iterator<const 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_iterator<const 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.

- -

Details member functions

- -

- -operator unspecified_bool_type() const; -

-Returns !empty(); -
-

- -

- -bool equal( iterator_range& r ) const; -

- Returns begin() == r.begin() && end() == r.end(); -
-

- -

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) ); -
-

- -
-

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. - -

Synopsis

- -
-namespace boost
-{
-    template< class ForwardRange >
-    class sub_range : public iterator_range< typename range_iterator<ForwardRange>::type >
-    {
-    public: 
-        typedef typename range_iterator<ForwardRange>::type iterator;
-        typedef typename range_iterator<const ForwardRange>::type  const_iterator;
-        typedef typename iterator_difference<iterator>::type       difference_type;
-    
-
-    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 ForwardRange2& 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[]( difference_type at );
-        const value_type& operator[]( difference_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, as_literal("ll") );
-    sub_range<std::string>               sub = find_first( str, as_literal("ll") );
-
-

- -
-

- © Copyright Thorsten Ottosen 2008. -

- -

- Distributed under the Boost Software License, Version 1.0. (See - accompanying file LICENSE_1_0.txt or copy - at www.boost.org/LICENSE_1_0.txt) -

- -
-
-
-
-
-
-
-
-
-
-
-
- - - - - From 350a1f8bfc39b34cb36c86c99da1d7ac0dd5f6b1 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Sun, 11 Apr 2010 22:05:02 +0000 Subject: [PATCH 11/26] Boost.Range updated the return types of various algorithms to improve consistency. This is to address a specific request made during the formal review of Boost.RangeEx. [SVN r61211] --- doc/html/index.html | 4 +- doc/html/quickbook_HTML.manifest | 2 + .../range/concepts/bidirectional_range.html | 16 +- doc/html/range/concepts/concept_checking.html | 2 +- doc/html/range/concepts/forward_range.html | 10 +- .../range/concepts/random_access_range.html | 12 +- .../range/concepts/single_pass_range.html | 16 +- doc/html/range/mfc_atl.html | 4 +- .../adaptors/adaptors_introduction.html | 6 +- .../reference/algorithms/heap_algorithms.html | 2 + .../algorithms/heap_algorithms/make_heap.html | 24 +-- .../algorithms/heap_algorithms/pop_heap.html | 20 +-- .../algorithms/heap_algorithms/push_heap.html | 20 +-- .../algorithms/heap_algorithms/sort_heap.html | 153 ++++++++++++++++++ .../algorithms/permutation_algorithms.html | 6 +- .../next_permutation.html | 18 +-- .../prev_permutation.html | 18 +-- .../range_algorithm_mutating_algorithms.html | 2 + .../copy.html | 12 +- .../copy_backward.html | 12 +- .../fill.html | 21 ++- .../fill_n.html | 102 ++++++++++++ .../generate.html | 18 +-- .../inplace_merge.html | 16 +- .../merge.html | 16 +- .../nth_element.html | 40 ++--- .../partial_sort.html | 40 ++--- .../partition.html | 10 +- .../random_shuffle.html | 12 +- .../remove.html | 10 +- .../remove_if.html | 10 +- .../replace.html | 10 +- .../replace_if.html | 10 +- .../rotate.html | 12 +- .../sort.html | 10 +- .../stable_partition.html | 10 +- .../stable_sort.html | 10 +- .../transform.html | 12 +- .../unique.html | 10 +- .../range_algorithm_new_algorithms/erase.html | 28 ++-- .../for_each.html | 10 +- .../insert.html | 16 +- .../range_algorithm_new_algorithms/iota.html | 22 +-- .../overwrite.html | 10 +- .../push_back.html | 14 +- .../push_front.html | 14 +- .../remove_erase.html | 21 ++- .../remove_erase_if.html | 19 +-- .../adjacent_find.html | 10 +- .../binary_search.html | 12 +- .../count.html | 10 +- .../equal.html | 10 +- .../equal_range.html | 12 +- .../find.html | 10 +- .../find_end.html | 10 +- .../find_first_of.html | 10 +- .../find_if.html | 12 +- .../for_each.html | 10 +- .../lexicographical_compare.html | 10 +- .../lower_bound.html | 12 +- .../max_element.html | 10 +- .../min_element.html | 10 +- .../mismatch.html | 12 +- .../search.html | 10 +- .../upper_bound.html | 12 +- .../algorithms/range_numeric/accumulate.html | 14 +- .../range_numeric/adjacent_difference.html | 16 +- .../range_numeric/inner_product.html | 16 +- .../algorithms/range_numeric/partial_sum.html | 16 +- .../algorithms/set_algorithms/includes.html | 12 +- .../set_algorithms/set_difference.html | 12 +- .../set_algorithms/set_intersection.html | 12 +- .../set_symmetric_difference.html | 12 +- .../algorithms/set_algorithms/set_union.html | 12 +- .../reference/ranges/counting_range.html | 8 +- doc/html/range/reference/ranges/irange.html | 10 +- .../range/reference/ranges/istream_range.html | 6 +- doc/html/range/reference/semantics.html | 2 +- doc/html/range/utilities/iterator_range.html | 6 +- doc/html/range/utilities/join.html | 4 +- doc/html/range/utilities/sub_range.html | 2 +- doc/reference/algorithm/fill.qbk | 5 +- doc/reference/algorithm/fill_n.qbk | 31 ++++ doc/reference/algorithm/make_heap.qbk | 10 +- doc/reference/algorithm/next_permutation.qbk | 10 +- doc/reference/algorithm/nth_element.qbk | 30 ++-- doc/reference/algorithm/partial_sort.qbk | 30 ++-- doc/reference/algorithm/pop_heap.qbk | 10 +- doc/reference/algorithm/prev_permutation.qbk | 10 +- doc/reference/algorithm/push_heap.qbk | 10 +- doc/reference/algorithm/sort_heap.qbk | 10 +- doc/reference/algorithm_ext/erase.qbk | 14 +- doc/reference/algorithm_ext/insert.qbk | 6 +- doc/reference/algorithm_ext/iota.qbk | 6 +- doc/reference/algorithm_ext/push_back.qbk | 4 +- doc/reference/algorithm_ext/push_front.qbk | 4 +- doc/reference/algorithm_ext/remove_erase.qbk | 11 +- .../algorithm_ext/remove_erase_if.qbk | 9 +- doc/reference/algorithms.qbk | 2 + include/boost/range/algorithm/fill_n.hpp | 1 + .../boost/range/algorithm/heap_algorithm.hpp | 45 ++++-- include/boost/range/algorithm/nth_element.hpp | 12 +- .../boost/range/algorithm/partial_sort.hpp | 12 +- include/boost/range/algorithm_ext/erase.hpp | 9 +- include/boost/range/algorithm_ext/insert.hpp | 7 +- include/boost/range/algorithm_ext/iota.hpp | 4 +- .../boost/range/algorithm_ext/push_back.hpp | 3 +- .../boost/range/algorithm_ext/push_front.hpp | 3 +- 108 files changed, 937 insertions(+), 605 deletions(-) create mode 100644 doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html create mode 100644 doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html create mode 100644 doc/reference/algorithm/fill_n.qbk diff --git a/doc/html/index.html b/doc/html/index.html index 6eb8b42..27ee9ba 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -30,7 +30,7 @@
-

+

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)

@@ -135,7 +135,7 @@

- +

Last revised: April 08, 2010 at 18:38:56 GMT

Last revised: April 11, 2010 at 21:49:16 GMT


diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index 67e69fa..df8f151 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -39,6 +39,7 @@ range/reference/algorithms/range_algorithm_mutating_algorithms.html range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html @@ -84,6 +85,7 @@ range/reference/algorithms/heap_algorithms.html range/reference/algorithms/heap_algorithms/push_heap.html range/reference/algorithms/heap_algorithms/pop_heap.html range/reference/algorithms/heap_algorithms/make_heap.html +range/reference/algorithms/heap_algorithms/sort_heap.html range/reference/algorithms/permutation_algorithms.html range/reference/algorithms/permutation_algorithms/next_permutation.html range/reference/algorithms/permutation_algorithms/prev_permutation.html diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index f3f2681..e3ae956 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -27,7 +27,7 @@ Bidirectional Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -75,7 +75,7 @@ Traversal Iterator.

- + Refinement of
@@ -83,7 +83,7 @@ Forward Range

- + Associated types
@@ -136,7 +136,7 @@
- + Valid expressions
@@ -221,7 +221,7 @@
- + Complexity guarantees
@@ -232,7 +232,7 @@ Forward Range.

- + Invariants
@@ -272,7 +272,7 @@
- + See also

diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index a20c28a..b5d5407 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -79,7 +79,7 @@

- + See also

diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index 1e2d2a0..919f6dd 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -27,7 +27,7 @@ Forward Range

- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,14 +73,14 @@ Traversal Iterator.

- + Refinement of

Single Pass Range

- + Associated types
@@ -132,7 +132,7 @@
- + See also

diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index 94e16de..a695e97 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -27,7 +27,7 @@ Random Access Range

- + Description

@@ -35,7 +35,7 @@ Access Traversal Iterator.

- + Refinement of
@@ -43,7 +43,7 @@ Bidirectional Range

- + Valid expressions
@@ -89,7 +89,7 @@
- + Expression semantics
@@ -139,7 +139,7 @@
- + Complexity guarantees
@@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

- + Invariants
diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 2515639..5588147 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -27,7 +27,7 @@ Single Pass Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,7 +73,7 @@ Pass Iterator.

- + Associated types
@@ -126,7 +126,7 @@
- + Valid expressions
@@ -198,7 +198,7 @@
- + Expression semantics
@@ -266,7 +266,7 @@
- + Complexity guarantees
@@ -276,7 +276,7 @@ constant time.

- + Invariants
@@ -316,7 +316,7 @@
- + See also

diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 9fc1da3..63558aa 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -34,7 +34,7 @@

References
- + Introduction

@@ -100,7 +100,7 @@

- + Overview

diff --git a/doc/html/range/reference/adaptors/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html index b1efce7..e1e4e26 100644 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ b/doc/html/range/reference/adaptors/adaptors_introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

- + Composition of Adaptors
@@ -159,7 +159,7 @@ is the design solution to this problem.

- + Range Adaptor alternative to copy_if algorithm
@@ -176,7 +176,7 @@

- + Range Adaptor alternative to count_if algorithm
diff --git a/doc/html/range/reference/algorithms/heap_algorithms.html b/doc/html/range/reference/algorithms/heap_algorithms.html index 25c45e4..018906e 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms.html +++ b/doc/html/range/reference/algorithms/heap_algorithms.html @@ -33,6 +33,8 @@ pop_heap
make_heap
+
+ sort_heap
diff --git a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html index 11018f3..f261c6a 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html @@ -7,7 +7,7 @@ - +
@@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext
@@ -28,28 +28,28 @@ make_heap
- + Prototype

template<class RandomAccessRange>
-void make_heap(RandomAccessRange& rng);
+RandomAccessRange& make_heap(RandomAccessRange& rng);
 
 template<class RandomAccessRange>
-void make_heap(const RandomAccessRange& rng);
+const RandomAccessRange& make_heap(const RandomAccessRange& rng);
 
 template<class RandomAccessRange, class Compare>
-void make_heap(RandomAccessRange& rng, Compare pred);
+RandomAccessRange& make_heap(RandomAccessRange& rng, Compare pred);
 
 template<class RandomAccessRange, class Compare>
-void make_heap(const RandomAccessRange& rng, Compare pred);
+const RandomAccessRange& make_heap(const RandomAccessRange& rng, Compare pred);
 

- + Description

@@ -61,14 +61,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -119,7 +119,7 @@

- + Complexity

@@ -138,7 +138,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html index 7740743..3759ef1 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html @@ -28,28 +28,28 @@ pop_heap
- + Prototype

template<class RandomAccessRange>
-void pop_heap(RandomAccessRange& rng);
+RandomAccessRange& pop_heap(RandomAccessRange& rng);
 
 template<class RandomAccessRange>
-void pop_heap(const RandomAccessRange& rng);
+const RandomAccessRange& pop_heap(const RandomAccessRange& rng);
 
 template<class RandomAccessRange, class Compare>
-void pop_heap(RandomAccessRange& rng, Compare pred);
+RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare pred);
 
 template<class RandomAccessRange, class Compare>
-void pop_heap(const RandomAccessRange& rng, Compare pred);
+const RandomAccessRange& pop_heap(const RandomAccessRange& rng, Compare pred);
 

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html index 982a929..9857d21 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html +++ b/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html @@ -28,28 +28,28 @@ push_heap

- + Prototype

template<class RandomAccessRange>
-void push_heap(RandomAccessRange& rng);
+RandomAccessRange& push_heap(RandomAccessRange& rng);
 
 template<class RandomAccessRange>
-void push_heap(const RandomAccessRange& rng);
+const RandomAccessRange& push_heap(const RandomAccessRange& rng);
 
 template<class RandomAccessRange, class Compare>
-void push_heap(RandomAccessRange& rng, Compare pred);
+RandomAccessRange& push_heap(RandomAccessRange& rng, Compare pred);
 
 template<class RandomAccessRange, class Compare>
-void push_heap(const RandomAccessRange& rng, Compare pred);
+const RandomAccessRange& push_heap(const RandomAccessRange& rng, Compare pred);
 

- + Description

@@ -63,14 +63,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/heap_algorithm.hpp

- + Requirements

@@ -121,7 +121,7 @@

- + Precondition:
- + Complexity

diff --git a/doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html b/doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html new file mode 100644 index 0000000..c9c5746 --- /dev/null +++ b/doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html @@ -0,0 +1,153 @@ + + + +sort_heap + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+


+
+PrevUpHomeNext +
+
+ +
+ + Prototype +
+

+ +

+
template<class RandomAccessRange>
+RandomAccessRange& sort_heap(RandomAccessRange& rng);
+
+template<class RandomAccessRange>
+const RandomAccessRange& sort_heap(const RandomAccessRange& rng);
+
+template<class RandomAccessRange, class Compare>
+RandomAccessRange& sort_heap(RandomAccessRange& rng, Compare pred);
+
+template<class RandomAccessRange, class Compare>
+const RandomAccessRange& sort_heap(const RandomAccessRange& rng, Compare pred);
+
+

+

+
+ + Description +
+

+ sort_heap turns a heap + into a sorted range. +

+

+ The ordering relationship is determined by using operator< in the non-predicate versions, and + by evaluating pred in + the predicate versions. +

+
+ + Definition +
+

+ Defined in the header file boost/range/algorithm/heap_algorithm.hpp +

+
+ + Requirements +
+

+ For the non-predicate versions: +

+
    +
  • +RandomAccessRange is + a model of the Random + Access Range Concept. +
  • +
  • +RandomAccessRange is + mutable. +
  • +
  • +RandomAccessRange's + value type is a model of the LessThanComparableConcept. +
  • +
  • + The ordering of objects of type RandomAccessRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
  • +
+

+ For the predicate versions: +

+
    +
  • +RandomAccessRange is + a model of the Random + Access Range Concept. +
  • +
  • +RandomAccessRange is + mutable. +
  • +
  • +Compare is a model + of the StrictWeakOrderingConcept. +
  • +
  • +RandomAccessRange's + value type is convertible to both of Compare's + argument types. +
  • +
+
+ + Precondition: +
+

+ rng is a heap. +

+
+ + Complexity +
+

+ At most N * + log(N) + comparisons, where N + is distance(rng). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/range/reference/algorithms/permutation_algorithms.html b/doc/html/range/reference/algorithms/permutation_algorithms.html index 12e33f9..16bd254 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -44,7 +44,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html index 29638bf..8691969 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html @@ -28,28 +28,28 @@ next_permutation

- + Prototype

template<class BidirectionalRange>
-void next_permutation(BidirectionalRange& rng);
+bool next_permutation(BidirectionalRange& rng);
 
 template<class BidirectionalRange>
-void next_permutation(const BidirectionalRange& rng);
+bool next_permutation(const BidirectionalRange& rng);
 
 template<class BidirectionalRange, class Compare>
-void next_permutation(BidirectionalRange& rng, Compare pred);
+bool next_permutation(BidirectionalRange& rng, Compare pred);
 
 template<class BidirectionalRange, class Compare>
-void next_permutation(const BidirectionalRange& rng, Compare pred);
+bool next_permutation(const BidirectionalRange& rng, Compare pred);
 

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html index e2c268c..2521275 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html @@ -28,28 +28,28 @@ prev_permutation

- + Prototype

template<class BidirectionalRange>
-void prev_permutation(BidirectionalRange& rng);
+bool prev_permutation(BidirectionalRange& rng);
 
 template<class BidirectionalRange>
-void prev_permutation(const BidirectionalRange& rng);
+bool prev_permutation(const BidirectionalRange& rng);
 
 template<class BidirectionalRange, class Compare>
-void prev_permutation(BidirectionalRange& rng, Compare pred);
+bool prev_permutation(BidirectionalRange& rng, Compare pred);
 
 template<class BidirectionalRange, class Compare>
-void prev_permutation(const BidirectionalRange& rng, Compare pred);
+bool prev_permutation(const BidirectionalRange& rng, Compare pred);
 

- + Description

@@ -67,14 +67,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/permutation.hpp

- + Requirements

@@ -125,7 +125,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html index 80710b0..a69db43 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html @@ -34,6 +34,8 @@ Range Algorithm - copy_backward

Range Algorithm - fill
+
+ Range Algorithm - fill_n
Range Algorithm - generate
diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html index f47ec3c..7050fd9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html @@ -28,7 +28,7 @@ Range Algorithm - copy
- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -51,14 +51,14 @@ distance(source_rng)

- + Definition

Defined in the header file boost/range/algorithm/copy.hpp

- + Requirements
    @@ -79,7 +79,7 @@
- + Precondition:
    @@ -93,7 +93,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html index adc48a0..5047d02 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html @@ -28,7 +28,7 @@ Range Algorithm - copy_backward

- + Prototype

@@ -42,7 +42,7 @@

- + Description

@@ -60,14 +60,14 @@ denotes the end of the output sequence.

- + Definition

Defined in the header file boost/range/algorithm/copy_backward.hpp

- + Requirements
    @@ -88,7 +88,7 @@
- + Precondition:
    @@ -102,7 +102,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html index ab50eed..30c1bc4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext
@@ -28,22 +28,19 @@ Range Algorithm - fill
- + Prototype

template<class ForwardRange, class Value>
-void fill( ForwardRange& rng, const Value& val );
-
-template<class ForwardRange, class Value>
-void fill( const ForwardRange& rng, const Value& val );
+ForwardRange& fill( ForwardRange& rng, const Value& val );
 

- + Description

@@ -52,14 +49,14 @@ in the range rng.

- + Definition

Defined in the header file boost/range/algorithm/fill.hpp

- + Requirements
    @@ -82,7 +79,7 @@
- + Complexity

@@ -99,7 +96,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html new file mode 100644 index 0000000..a202dea --- /dev/null +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html @@ -0,0 +1,102 @@ + + + +Range Algorithm - fill_n + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Prototype +
+

+ +

+
template<class ForwardRange, class Size, class Value>
+ForwardRange& fill( ForwardRange& rng, Size n, const Value& val );
+
+

+

+
+ + Description +
+

+ fill_n assigns the value + val to n elements in the range rng begining with boost::begin(rng). +

+
+ + Definition +
+

+ Defined in the header file boost/range/algorithm/fill_n.hpp +

+
+ + Requirements +
+
    +
  • +ForwardRange is a model + of the Forward Range + Concept. +
  • +
  • +ForwardRange is mutable. +
  • +
  • +Value is a model of + the AssignableConcept. +
  • +
  • +Value is convertible + to ForwardRange's value + type. +
  • +
+
+ + Complexity +
+

+ Linear. Exactly n assignments + are performed. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html index 3874342..a76b480 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@ Range Algorithm - generate
- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ Returns the resultant range.

- + Definition

Defined in the header file boost/range/algorithm/generate.hpp

- + Requirements
    @@ -84,7 +84,7 @@
- + Precondition:
    @@ -98,7 +98,7 @@
- + Complexity

@@ -115,7 +115,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html index ae36598..e0aa7fc 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html @@ -28,7 +28,7 @@ Range Algorithm - inplace_merge
- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -72,14 +72,14 @@ input range is preserved.

- + Definition

Defined in the header file boost/range/algorithm/inplace_merge.hpp

- + Requirements

@@ -116,11 +116,11 @@ argument types.

- + Precondition:
- + For the non-predicate version:
@@ -143,7 +143,7 @@
- + For the predicate version:
@@ -164,7 +164,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html index 43d1ef1..e2b5d56 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html @@ -28,7 +28,7 @@ Range Algorithm - merge

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -76,14 +76,14 @@ version uses the predicate instead of operator<().

- + Definition

Defined in the header file boost/range/algorithm/merge.hpp

- + Requirements

@@ -151,11 +151,11 @@

- + Precondition:
- + For the non-predicate version:
@@ -190,7 +190,7 @@
- + For the predicate version:
@@ -221,7 +221,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html index c096239..5b42602 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html @@ -28,34 +28,38 @@ Range Algorithm - nth_element

- + Prototype

template<class RandomAccessRange>
-void nth_element(RandomAccessRange& rng,
-                 typename range_iterator<RandomAccessRange>::type nth);
-                 
+RandomAccessRange& nth_element(
+    RandomAccessRange& rng,
+    typename range_iterator<RandomAccessRange>::type nth);
+
 template<class RandomAccessRange>
-void nth_element(const RandomAccessRange& rng,
-                 typename range_iterator<const RandomAccessRange>::type nth);
-                 
+const RandomAccessRange& nth_element(
+    const RandomAccessRange& rng,
+    typename range_iterator<const RandomAccessRange>::type nth);
+
 template<class RandomAccessRange>
-void nth_element(RandomAccessRange& rng,
-                 typename range_iterator<RandomAccessRange>::type nth,
-                 BinaryPredicate sort_pred);
-                 
+RandomAccessRange& nth_element(
+    RandomAccessRange& rng,
+    typename range_iterator<RandomAccessRange>::type nth,
+    BinaryPredicate sort_pred);
+
 template<class RandomAccessRange>
-void nth_element(const RandomAccessRange& rng,
-                 typename range_iterator<const RandomAccessRange>::type nth,
-                 BinaryPredicate sort_pred);
+const RandomAccessRange& nth_element(
+    const RandomAccessRange& rng,
+    typename range_iterator<const RandomAccessRange>::type nth,
+    BinaryPredicate sort_pred);
 

- + Description

@@ -66,14 +70,14 @@ is the same as the element that would be in that position if rng has been sorted.

- + Definition

Defined in the header file boost/range/algorithm/nth_element.hpp

- + Requirements

@@ -124,7 +128,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html index 876f009..a202f53 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html @@ -28,34 +28,38 @@ Range Algorithm - partial_sort

- + Prototype

template<class RandomAccessRange>
-void partial_sort(RandomAccessRange& rng,
-                  typename range_iterator<RandomAccessRange>::type middle);
-                 
+RandomAccessRange& partial_sort(
+    RandomAccessRange& rng,
+    typename range_iterator<RandomAccessRange>::type middle);
+
 template<class RandomAccessRange>
-void partial_sort(const RandomAccessRange& rng,
-                  typename range_iterator<const RandomAccessRange>::type middle);
-                 
+const RandomAccessRange& partial_sort(
+    const RandomAccessRange& rng,
+    typename range_iterator<const RandomAccessRange>::type middle);
+
 template<class RandomAccessRange>
-void partial_sort(RandomAccessRange& rng,
-                  typename range_iterator<RandomAccessRange>::type middle,
-                  BinaryPredicate sort_pred);
-                 
+RandomAccessRange& partial_sort(
+    RandomAccessRange& rng,
+    typename range_iterator<RandomAccessRange>::type middle,
+    BinaryPredicate sort_pred);
+
 template<class RandomAccessRange>
-void partial_sort(const RandomAccessRange& rng,
-                  typename range_iterator<const RandomAccessRange>::type middle,
-                  BinaryPredicate sort_pred);
+const RandomAccessRange& partial_sort(
+    const RandomAccessRange& rng,
+    typename range_iterator<const RandomAccessRange>::type middle,
+    BinaryPredicate sort_pred);
 

- + Description

@@ -71,14 +75,14 @@ predicate instead.

- + Definition

Defined in the header file boost/range/algorithm/partial_sort.hpp

- + Requirements

@@ -129,7 +133,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html index 4705726..e2d73d7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html @@ -28,7 +28,7 @@ Range Algorithm - partition

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -81,14 +81,14 @@ corresponds to the middle iterator.

- + Definition

Defined in the header file boost/range/algorithm/partition.hpp

- + Requirements
    @@ -108,7 +108,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html index e618850..64643c5 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html @@ -28,7 +28,7 @@ Range Algorithm - random_shuffle

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -61,14 +61,14 @@ the shuffles range.

- + Definition

Defined in the header file boost/range/algorithm/random_shuffle.hpp

- + Requirements

@@ -99,7 +99,7 @@

- + Precondition:
  • @@ -108,7 +108,7 @@ maximum value.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html index 043fa4c..016b1aa 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html @@ -28,7 +28,7 @@ Range Algorithm - remove

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -84,14 +84,14 @@ are dereferenceable, but the elements are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove.hpp

- + Requirements
    @@ -114,7 +114,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html index 4650b96..51cb94c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html @@ -28,7 +28,7 @@ Range Algorithm - remove_if

- + Prototype

@@ -67,7 +67,7 @@

- + Description

@@ -83,14 +83,14 @@ are unspecified.

- + Definition

Defined in the header file boost/range/algorithm/remove_if.hpp

- + Requirements
    @@ -113,7 +113,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html index 30b729e..dab9ee6 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html @@ -28,7 +28,7 @@ Range Algorithm - replace

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,14 +58,14 @@ Return a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace.hpp

- + Requirements
    @@ -94,7 +94,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html index 6b4acd0..946b18c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html @@ -28,7 +28,7 @@ Range Algorithm - replace_if

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -52,14 +52,14 @@ Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/replace_if.hpp

- + Requirements
    @@ -91,7 +91,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html index 2b6b858..2660663 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html @@ -28,7 +28,7 @@ Range Algorithm - rotate

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -54,14 +54,14 @@ and [middle, end(rng)). Returns a reference to rng.

- + Definition

Defined in the header file boost/range/algorithm/rotate.hpp

- + Requirements
    @@ -75,7 +75,7 @@
- + Precondition:
    @@ -87,7 +87,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html index 42a5d13..0fc2893 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html @@ -28,7 +28,7 @@ Range Algorithm - sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y, x) == false.

- + Definition

Defined in the header file boost/range/algorithm/sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html index d159075..d4178a2 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html @@ -28,7 +28,7 @@ Range Algorithm - stable_partition

- + Prototype

@@ -61,7 +61,7 @@

- + Description

@@ -83,14 +83,14 @@ the iterator to the first element that fails to satisfy pred.

- + Definition

Defined in the header file boost/range/algorithm/stable_partition.hpp

- + Requirements
    @@ -108,7 +108,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html index f9c1dec..d0e3ddf 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html @@ -28,7 +28,7 @@ Range Algorithm - stable_sort

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ [x,y], pred(y,x) == false.

- + Definition

Defined in the header file boost/range/algorithm/stable_sort.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html index ea2a770..110d48d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html @@ -28,7 +28,7 @@ Range Algorithm - transform

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -93,14 +93,14 @@ The return value is out + min(distance(rng1), distance(rng2)).

- + Definition

Defined in the header file boost/range/algorithm/transform.hpp

- + Requirements

@@ -170,7 +170,7 @@

- + Precondition:

@@ -202,7 +202,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html index 89ceaad..ec4bf26 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html +++ b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html @@ -28,7 +28,7 @@ Range Algorithm - unique

- + Prototype

@@ -69,7 +69,7 @@

- + Description

@@ -87,14 +87,14 @@ type.

- + Definition

Defined in the header file boost/range/algorithm/unique.hpp

- + Requirements

@@ -138,7 +138,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html index ea1c188..6d13233 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html @@ -28,23 +28,21 @@ erase

- + Prototype

-
template<
-    class Container,
-    class SinglePassRange
-    >
-void erase(Container& target,
-           iterator_range<typename Container::iterator> to_erase);
+
template<class Container>
+Container& erase(
+    Container& target,
+    iterator_range<typename Container::iterator> to_erase);
 

- + Description

@@ -52,15 +50,23 @@ to_erase from the container target.

+

+ remove_erase performs + the frequently used combination equivalent to target.erase(std::remove(target.begin(), target.end(), value), target.end()); +

+

+ remove_erase_if performs + the frequently used combination equivalent to target.erase(std::remove_if(target.begin(), target.end(), pred), target.end()); +

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -68,7 +74,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html index 31cedc9..2577357 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -73,7 +73,7 @@

- + Description

@@ -89,14 +89,14 @@ It is safe to call this function with unequal length ranges.

- + Definition

Defined in the header file boost/range/algorithm_ext/for_each.hpp

- + Requirements
    @@ -126,7 +126,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html index 6e5516f..7321ce8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html @@ -28,7 +28,7 @@ insert

- + Prototype

@@ -38,14 +38,14 @@ class Container, class SinglePassRange > -void insert(Container& target, - typename Container::iterator before, - const SinglePassRange& from); +Container& insert(Container& target, + typename Container::iterator before, + const SinglePassRange& from);

- + Description

@@ -55,14 +55,14 @@ target.

- + Definition

Defined in the header file boost/range/algorithm_ext/insert.hpp

- + Requirements
    @@ -82,7 +82,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html index c36f96d..ea0a6f4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html @@ -3,7 +3,7 @@ iota - + @@ -28,19 +28,19 @@ iota

- + Prototype

-
template<class SinglePassRange, class Value>
-iota(SinglePassRange& rng, Value x);
+
template<class ForwardRange, class Value>
+ForwardRange& iota(ForwardRange& rng, Value x);
 

- + Description

@@ -51,21 +51,21 @@ + boost::distance(boost::begin(rng), it)

- + Definition

Defined in the header file boost/range/algorithm_ext/iota.hpp

- + Requirements
  1. -SinglePassRange is - a model of the Single - Pass Range Concept. +ForwardRange is a model + of the Forward Range + Concept.
  2. Value is a model of @@ -73,7 +73,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html index e3a6b79..d0a5b5e 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html @@ -28,7 +28,7 @@ overwrite

- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -53,14 +53,14 @@ into the range to.

- + Definition

Defined in the header file boost/range/algorithm_ext/overwrite.hpp

- + Requirements
    @@ -87,7 +87,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html index 788af57..8029406 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html @@ -28,7 +28,7 @@ push_back

- + Prototype

@@ -38,13 +38,13 @@ class Container, class SinglePassRange > -void push_back(Container& target, - const SinglePassRange& from); +Container& push_back(Container& target, + const SinglePassRange& from);

- + Description

@@ -53,14 +53,14 @@ to the back of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_back.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html index 5269171..462cc72 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html @@ -28,7 +28,7 @@ push_front

- + Prototype

@@ -38,13 +38,13 @@ class Container, class SinglePassRange > -void push_front(Container& target, - const SinglePassRange& from); +Container& push_front(Container& target, + const SinglePassRange& from);

- + Description

@@ -53,14 +53,14 @@ to the front of the container target.

- + Definition

Defined in the header file boost/range/algorithm_ext/push_front.hpp

- + Requirements
    @@ -80,7 +80,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html index b6519e5..c268e1a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html @@ -28,40 +28,37 @@ remove_erase

- + Prototype

-
template<
-    class Container,
-    class T
-    >
-void remove_erase(Container& target,
-                  const T& val);
+
template<class Container, class Value>
+Container& remove_erase(Container& target,
+                        const Value& value);
 

- + Description

remove_erase actually - eliminates the elements equal to val + eliminates the elements equal to value from the container. This is in contrast to the remove algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
  1. @@ -69,7 +66,7 @@ erase of an iterator range.
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html index fb1ecb0..0dd87cd 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html @@ -28,23 +28,20 @@ remove_erase_if

- + Prototype

-
template<
-    class Container,
-    class Pred
-    >
-void remove_erase(Container& target,
-                  Pred pred);
+
template<class Container, class Pred>
+Container& remove_erase_if(Container& target,
+                           Pred pred);
 

- + Description

@@ -55,14 +52,14 @@ algorithm which merely rearranges elements.

- + Definition

Defined in the header file boost/range/algorithm_ext/erase.hpp

- + Requirements
    @@ -76,7 +73,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html index 8ce499c..f71cc25 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html @@ -28,7 +28,7 @@ Range Algorithm - adjacent_find

- + Prototype

@@ -77,7 +77,7 @@

- + Description

@@ -98,14 +98,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/adjacent_find.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html index 175b25d..64a95a8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html @@ -28,7 +28,7 @@ binary_search

- + Prototype

@@ -43,7 +43,7 @@

- + Description

@@ -53,14 +53,14 @@ range rng.

- + Definition

Defined in the header file boost/range/algorithm/binary_search.hpp

- + Requirements

@@ -111,7 +111,7 @@

- + Precondition:

@@ -129,7 +129,7 @@ order according to the function object pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html index e1eb534..73a26b8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html @@ -28,7 +28,7 @@ count

- + Prototype

@@ -45,7 +45,7 @@

- + Description

@@ -55,14 +55,14 @@ is true.

- + Definition

Defined in the header file boost/range/algorithm/count.hpp

- + Requirements
    @@ -85,7 +85,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html index 75de9dc..d581af7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html @@ -28,7 +28,7 @@ equal

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -71,14 +71,14 @@ considered equal in the predicate version if pred(x,y) is true.

- + Definition

Defined in the header file boost/range/algorithm/equal.hpp

- + Requirements

@@ -139,7 +139,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html index 9bfac7a..88d3af6 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html @@ -28,7 +28,7 @@ equal_range

- + Prototype

@@ -71,7 +71,7 @@

- + Description

@@ -85,14 +85,14 @@ is determined by pred.

- + Definition

Defined in the header file boost/range/algorithm/equal_range.hpp

- + Requirements

@@ -143,7 +143,7 @@

- + Precondition:

@@ -155,7 +155,7 @@ is ordered in ascending order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html index 59fdde8..f9fff13 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html @@ -28,7 +28,7 @@ find

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -60,14 +60,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find.hpp

- + Requirements
    @@ -88,7 +88,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html index 201daad..f6a9b8b 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html @@ -28,7 +28,7 @@ find_end

- + Prototype

@@ -66,7 +66,7 @@

- + Description

@@ -81,14 +81,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_end.hpp

- + Requirements

@@ -148,7 +148,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html index 8ae0ea3..cb3cc79 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html @@ -28,7 +28,7 @@ find_first_of

- + Prototype

@@ -66,7 +66,7 @@

- + Description

@@ -86,14 +86,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_first_of.hpp

- + Requirements

@@ -147,7 +147,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html index 6c2dfa0..44cdde4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html @@ -28,7 +28,7 @@ find_if

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -64,14 +64,14 @@ defines found in the same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/find_if.hpp

- + Requirements
    @@ -90,7 +90,7 @@
- + Precondition:

@@ -98,7 +98,7 @@ rng, *i is in the domain of UnaryPredicate.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html index a43c6c4..0ea9130 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html @@ -28,7 +28,7 @@ for_each

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -59,14 +59,14 @@ fun(x).

- + Definition

Defined in the header file boost/range/algorithm/for_each.hpp

- + Requirements
    @@ -90,7 +90,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html index 3316554..0978050 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html @@ -28,7 +28,7 @@ lexicographical_compare

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -73,14 +73,14 @@ predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html index ead071e..3a5a05d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html @@ -28,7 +28,7 @@ lower_bound

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -72,14 +72,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/lower_bound.hpp

- + Requirements

@@ -130,7 +130,7 @@

- + Precondition:

@@ -148,7 +148,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html index ebfd1d4..0e042fd 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html @@ -28,7 +28,7 @@ max_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/max_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html index e263374..4752df4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html @@ -28,7 +28,7 @@ min_element

- + Prototype

@@ -84,7 +84,7 @@

- + Description

@@ -98,14 +98,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/min_element.hpp

- + Requirements

@@ -142,7 +142,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html index f20cf0f..3af4682 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html @@ -28,7 +28,7 @@ mismatch

- + Prototype

@@ -106,7 +106,7 @@

- + Description

@@ -124,14 +124,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/mismatch.hpp

- + Requirements

@@ -192,14 +192,14 @@

- + Precondition:

distance(rng2) >= distance(rng1)

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html index 38e4f19..93994e9 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html @@ -28,7 +28,7 @@ search

- + Prototype

@@ -96,7 +96,7 @@

- + Description

@@ -115,14 +115,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/search.hpp

- + Requirements

@@ -183,7 +183,7 @@

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html index 071cc4a..14f5248 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html +++ b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html @@ -28,7 +28,7 @@ upper_bound

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -71,14 +71,14 @@ same manner as the returned iterator described above.

- + Definition

Defined in the header file boost/range/algorithm/upper_bound.hpp

- + Requirements

@@ -129,7 +129,7 @@

- + Precondition:

@@ -147,7 +147,7 @@ order according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/accumulate.html b/doc/html/range/reference/algorithms/range_numeric/accumulate.html index 36f12b0..26970d8 100644 --- a/doc/html/range/reference/algorithms/range_numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/range_numeric/accumulate.html @@ -28,7 +28,7 @@ accumulate

- + Prototype

@@ -53,7 +53,7 @@

- + Description

@@ -64,18 +64,18 @@ The return value is the resultant value of the above algorithm.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -100,7 +100,7 @@
- + For the second version
@@ -134,7 +134,7 @@
- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html index 4d43186..9358698 100644 --- a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html @@ -28,7 +28,7 @@ adjacent_difference

- + Prototype

@@ -55,7 +55,7 @@

- + Description

@@ -69,18 +69,18 @@ instead of operator-().

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -111,7 +111,7 @@
- + For the second version
@@ -146,7 +146,7 @@
- + Precondition:

@@ -154,7 +154,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/inner_product.html b/doc/html/range/reference/algorithms/range_numeric/inner_product.html index 91b4369..a040134 100644 --- a/doc/html/range/reference/algorithms/range_numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/range_numeric/inner_product.html @@ -28,7 +28,7 @@ inner_product

- + Prototype

@@ -54,7 +54,7 @@

- + Description

@@ -67,18 +67,18 @@ algorithm please see inner_product.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -113,7 +113,7 @@
- + For the second version
@@ -162,14 +162,14 @@
- + Precondition:

distance(rng2) >= distance(rng1) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html index 9a82258..e1ce532 100644 --- a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/range_numeric/partial_sum.html @@ -28,7 +28,7 @@ partial_sum

- + Prototype

@@ -49,7 +49,7 @@

- + Description

@@ -58,18 +58,18 @@ in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

- + Definition

Defined in the header file boost/range/numeric.hpp

- + Requirements
- + For the first version
@@ -99,7 +99,7 @@
- + For the second version
@@ -128,7 +128,7 @@
- + Precondition:

@@ -136,7 +136,7 @@ + distance(rng)) is a valid range.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/includes.html b/doc/html/range/reference/algorithms/set_algorithms/includes.html index 09b0cd4..0c538d9 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/includes.html +++ b/doc/html/range/reference/algorithms/set_algorithms/includes.html @@ -28,7 +28,7 @@ includes

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -60,14 +60,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -145,7 +145,7 @@

- + Precondition:

@@ -163,7 +163,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html index f5b4729..e02ebe2 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_difference.html @@ -28,7 +28,7 @@ set_difference

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html index 2608a4b..ce4af10 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html @@ -28,7 +28,7 @@ set_intersection

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -71,14 +71,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -164,7 +164,7 @@

- + Precondition:

@@ -182,7 +182,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html index 015d867..c33f771 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html @@ -28,7 +28,7 @@ set_symmetric_difference

- + Prototype

@@ -59,7 +59,7 @@

- + Description

@@ -75,14 +75,14 @@ the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -168,7 +168,7 @@

- + Precondition:

@@ -186,7 +186,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_union.html b/doc/html/range/reference/algorithms/set_algorithms/set_union.html index e983e4c..93ec40f 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_union.html +++ b/doc/html/range/reference/algorithms/set_algorithms/set_union.html @@ -28,7 +28,7 @@ set_union

- + Prototype

@@ -57,7 +57,7 @@

- + Description

@@ -70,14 +70,14 @@ in the predicate versions.

- + Definition

Defined in the header file boost/range/algorithm/set_algorithm.hpp

- + Requirements

@@ -163,7 +163,7 @@

- + Precondition:

@@ -181,7 +181,7 @@ according to pred.

- + Complexity

diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 762ef94..7bc2c80 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -27,7 +27,7 @@ counting_range

- + Prototype

@@ -48,7 +48,7 @@

- + Description

@@ -58,14 +58,14 @@ (from Boost.Iterator).

- + Definition

Defined in header file boost/range/counting_range.hpp

- + Requirements
  1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index e482871..fc88a82 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -27,7 +27,7 @@ irange
- + Prototype

@@ -44,7 +44,7 @@

- + Description

@@ -58,14 +58,14 @@ parameters denoted a half-open range.

- + Definition

Defined in the header file boost/range/irange.hpp

- + Requirements
    @@ -79,7 +79,7 @@
- + Complexity

diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 7ee1a79..db454bc 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -27,7 +27,7 @@ istream_range

- + Prototype

@@ -40,7 +40,7 @@

- + Description

@@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

- + Definition

diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html index 89da873..5ab20fe 100644 --- a/doc/html/range/reference/semantics.html +++ b/doc/html/range/reference/semantics.html @@ -31,7 +31,7 @@

Functions
- + notation
diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html index 51568b4..0902337 100644 --- a/doc/html/range/utilities/iterator_range.html +++ b/doc/html/range/utilities/iterator_range.html @@ -47,7 +47,7 @@ limitation is simply propogated from the underlying iterator type.

- + Synopsis

@@ -187,7 +187,7 @@ iterators from the same container.

- + Details member functions
@@ -218,7 +218,7 @@

- + Details functions
diff --git a/doc/html/range/utilities/join.html b/doc/html/range/utilities/join.html index 862e913..e73c51e 100644 --- a/doc/html/range/utilities/join.html +++ b/doc/html/range/utilities/join.html @@ -39,7 +39,7 @@ if the end of a range has been reached internally during traversal.

- + Synposis

@@ -65,7 +65,7 @@

- + Example

diff --git a/doc/html/range/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html index 765a0c9..e30fba7 100644 --- a/doc/html/range/utilities/sub_range.html +++ b/doc/html/range/utilities/sub_range.html @@ -35,7 +35,7 @@ is.

- + Synopsis

diff --git a/doc/reference/algorithm/fill.qbk b/doc/reference/algorithm/fill.qbk index e8419ab..9e16492 100644 --- a/doc/reference/algorithm/fill.qbk +++ b/doc/reference/algorithm/fill.qbk @@ -4,10 +4,7 @@ `` template -void fill( ForwardRange& rng, const Value& val ); - -template -void fill( const ForwardRange& rng, const Value& val ); +ForwardRange& fill( ForwardRange& rng, const Value& val ); `` [heading Description] diff --git a/doc/reference/algorithm/fill_n.qbk b/doc/reference/algorithm/fill_n.qbk new file mode 100644 index 0000000..a17695c --- /dev/null +++ b/doc/reference/algorithm/fill_n.qbk @@ -0,0 +1,31 @@ +[section:fill_n Range Algorithm - fill_n] + +[heading Prototype] + +`` +template +ForwardRange& fill( ForwardRange& rng, Size n, const Value& val ); +`` + +[heading Description] + +`fill_n` assigns the value `val` to `n` elements in the range `rng` begining with `boost::begin(rng)`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/fill_n.hpp` + +[heading Requirements] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange` is mutable. +* `Value` is a model of the `AssignableConcept`. +* `Value` is convertible to `ForwardRange`'s value type. + +[heading Complexity] + +Linear. Exactly `n` assignments are performed. + +[endsect] + + diff --git a/doc/reference/algorithm/make_heap.qbk b/doc/reference/algorithm/make_heap.qbk index 6f54a15..13238fc 100644 --- a/doc/reference/algorithm/make_heap.qbk +++ b/doc/reference/algorithm/make_heap.qbk @@ -4,16 +4,16 @@ `` template -void make_heap(RandomAccessRange& rng); +RandomAccessRange& make_heap(RandomAccessRange& rng); template -void make_heap(const RandomAccessRange& rng); +const RandomAccessRange& make_heap(const RandomAccessRange& rng); template -void make_heap(RandomAccessRange& rng, Compare pred); +RandomAccessRange& make_heap(RandomAccessRange& rng, Compare pred); template -void make_heap(const RandomAccessRange& rng, Compare pred); +const RandomAccessRange& make_heap(const RandomAccessRange& rng, Compare pred); `` [heading Description] @@ -21,7 +21,7 @@ void make_heap(const RandomAccessRange& rng, Compare pred); `make_heap` turns `rng` into a heap. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions. - + [heading Definition] Defined in the header file `boost/range/algorithm/heap_algorithm.hpp` diff --git a/doc/reference/algorithm/next_permutation.qbk b/doc/reference/algorithm/next_permutation.qbk index 37b901a..3da1383 100644 --- a/doc/reference/algorithm/next_permutation.qbk +++ b/doc/reference/algorithm/next_permutation.qbk @@ -4,16 +4,16 @@ `` template -void next_permutation(BidirectionalRange& rng); +bool next_permutation(BidirectionalRange& rng); template -void next_permutation(const BidirectionalRange& rng); +bool next_permutation(const BidirectionalRange& rng); template -void next_permutation(BidirectionalRange& rng, Compare pred); +bool next_permutation(BidirectionalRange& rng, Compare pred); template -void next_permutation(const BidirectionalRange& rng, Compare pred); +bool next_permutation(const BidirectionalRange& rng, Compare pred); `` [heading Description] @@ -21,7 +21,7 @@ void next_permutation(const BidirectionalRange& rng, Compare pred); `next_permutation` transforms the range of elements `rng` into the lexicographically next greater permutation of the elements if such a permutation exists. If one does not exist then the range is transformed into the lexicographically smallest permutation and `false` is returned. `true` is returned when the next greater permutation is successfully generated. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions. - + [heading Definition] Defined in the header file `boost/range/algorithm/permutation.hpp` diff --git a/doc/reference/algorithm/nth_element.qbk b/doc/reference/algorithm/nth_element.qbk index 69c87a8..9b888b6 100644 --- a/doc/reference/algorithm/nth_element.qbk +++ b/doc/reference/algorithm/nth_element.qbk @@ -4,22 +4,26 @@ `` template -void nth_element(RandomAccessRange& rng, - typename range_iterator::type nth); - +RandomAccessRange& nth_element( + RandomAccessRange& rng, + typename range_iterator::type nth); + template -void nth_element(const RandomAccessRange& rng, - typename range_iterator::type nth); - +const RandomAccessRange& nth_element( + const RandomAccessRange& rng, + typename range_iterator::type nth); + template -void nth_element(RandomAccessRange& rng, - typename range_iterator::type nth, - BinaryPredicate sort_pred); - +RandomAccessRange& nth_element( + RandomAccessRange& rng, + typename range_iterator::type nth, + BinaryPredicate sort_pred); + template -void nth_element(const RandomAccessRange& rng, - typename range_iterator::type nth, - BinaryPredicate sort_pred); +const RandomAccessRange& nth_element( + const RandomAccessRange& rng, + typename range_iterator::type nth, + BinaryPredicate sort_pred); `` [heading Description] diff --git a/doc/reference/algorithm/partial_sort.qbk b/doc/reference/algorithm/partial_sort.qbk index 298c16f..794415a 100644 --- a/doc/reference/algorithm/partial_sort.qbk +++ b/doc/reference/algorithm/partial_sort.qbk @@ -4,22 +4,26 @@ `` template -void partial_sort(RandomAccessRange& rng, - typename range_iterator::type middle); - +RandomAccessRange& partial_sort( + RandomAccessRange& rng, + typename range_iterator::type middle); + template -void partial_sort(const RandomAccessRange& rng, - typename range_iterator::type middle); - +const RandomAccessRange& partial_sort( + const RandomAccessRange& rng, + typename range_iterator::type middle); + template -void partial_sort(RandomAccessRange& rng, - typename range_iterator::type middle, - BinaryPredicate sort_pred); - +RandomAccessRange& partial_sort( + RandomAccessRange& rng, + typename range_iterator::type middle, + BinaryPredicate sort_pred); + template -void partial_sort(const RandomAccessRange& rng, - typename range_iterator::type middle, - BinaryPredicate sort_pred); +const RandomAccessRange& partial_sort( + const RandomAccessRange& rng, + typename range_iterator::type middle, + BinaryPredicate sort_pred); `` [heading Description] diff --git a/doc/reference/algorithm/pop_heap.qbk b/doc/reference/algorithm/pop_heap.qbk index 4479d46..8b3d900 100644 --- a/doc/reference/algorithm/pop_heap.qbk +++ b/doc/reference/algorithm/pop_heap.qbk @@ -4,16 +4,16 @@ `` template -void pop_heap(RandomAccessRange& rng); +RandomAccessRange& pop_heap(RandomAccessRange& rng); template -void pop_heap(const RandomAccessRange& rng); +const RandomAccessRange& pop_heap(const RandomAccessRange& rng); template -void pop_heap(RandomAccessRange& rng, Compare pred); +RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare pred); template -void pop_heap(const RandomAccessRange& rng, Compare pred); +const RandomAccessRange& pop_heap(const RandomAccessRange& rng, Compare pred); `` [heading Description] @@ -21,7 +21,7 @@ void pop_heap(const RandomAccessRange& rng, Compare pred); `pop_heap` removes the largest element from the heap. It is assumed that `begin(rng), prior(end(rng))` is already a heap and that the element to be added is `*prior(end(rng))`. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions. - + [heading Definition] Defined in the header file `boost/range/algorithm/heap_algorithm.hpp` diff --git a/doc/reference/algorithm/prev_permutation.qbk b/doc/reference/algorithm/prev_permutation.qbk index 11642a4..d40eb6a 100644 --- a/doc/reference/algorithm/prev_permutation.qbk +++ b/doc/reference/algorithm/prev_permutation.qbk @@ -4,16 +4,16 @@ `` template -void prev_permutation(BidirectionalRange& rng); +bool prev_permutation(BidirectionalRange& rng); template -void prev_permutation(const BidirectionalRange& rng); +bool prev_permutation(const BidirectionalRange& rng); template -void prev_permutation(BidirectionalRange& rng, Compare pred); +bool prev_permutation(BidirectionalRange& rng, Compare pred); template -void prev_permutation(const BidirectionalRange& rng, Compare pred); +bool prev_permutation(const BidirectionalRange& rng, Compare pred); `` [heading Description] @@ -21,7 +21,7 @@ void prev_permutation(const BidirectionalRange& rng, Compare pred); `prev_permutation` transforms the range of elements `rng` into the lexicographically next smaller permutation of the elements if such a permutation exists. If one does not exist then the range is transformed into the lexicographically largest permutation and `false` is returned. `true` is returned when the next smaller permutation is successfully generated. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions. - + [heading Definition] Defined in the header file `boost/range/algorithm/permutation.hpp` diff --git a/doc/reference/algorithm/push_heap.qbk b/doc/reference/algorithm/push_heap.qbk index eae2466..ddc7df2 100644 --- a/doc/reference/algorithm/push_heap.qbk +++ b/doc/reference/algorithm/push_heap.qbk @@ -4,16 +4,16 @@ `` template -void push_heap(RandomAccessRange& rng); +RandomAccessRange& push_heap(RandomAccessRange& rng); template -void push_heap(const RandomAccessRange& rng); +const RandomAccessRange& push_heap(const RandomAccessRange& rng); template -void push_heap(RandomAccessRange& rng, Compare pred); +RandomAccessRange& push_heap(RandomAccessRange& rng, Compare pred); template -void push_heap(const RandomAccessRange& rng, Compare pred); +const RandomAccessRange& push_heap(const RandomAccessRange& rng, Compare pred); `` [heading Description] @@ -21,7 +21,7 @@ void push_heap(const RandomAccessRange& rng, Compare pred); `push_heap` adds an element to a heap. It is assumed that `begin(rng)`, `prior(end(rng))` is already a heap and that the element to be added is `*prior(end(rng))`. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions. - + [heading Definition] Defined in the header file `boost/range/algorithm/heap_algorithm.hpp` diff --git a/doc/reference/algorithm/sort_heap.qbk b/doc/reference/algorithm/sort_heap.qbk index 9a24887..13e4133 100644 --- a/doc/reference/algorithm/sort_heap.qbk +++ b/doc/reference/algorithm/sort_heap.qbk @@ -4,16 +4,16 @@ `` template -void sort_heap(RandomAccessRange& rng); +RandomAccessRange& sort_heap(RandomAccessRange& rng); template -void sort_heap(const RandomAccessRange& rng); +const RandomAccessRange& sort_heap(const RandomAccessRange& rng); template -void sort_heap(RandomAccessRange& rng, Compare pred); +RandomAccessRange& sort_heap(RandomAccessRange& rng, Compare pred); template -void sort_heap(const RandomAccessRange& rng, Compare pred); +const RandomAccessRange& sort_heap(const RandomAccessRange& rng, Compare pred); `` [heading Description] @@ -21,7 +21,7 @@ void sort_heap(const RandomAccessRange& rng, Compare pred); `sort_heap` turns a heap into a sorted range. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions. - + [heading Definition] Defined in the header file `boost/range/algorithm/heap_algorithm.hpp` diff --git a/doc/reference/algorithm_ext/erase.qbk b/doc/reference/algorithm_ext/erase.qbk index 64c48a8..5e8c746 100644 --- a/doc/reference/algorithm_ext/erase.qbk +++ b/doc/reference/algorithm_ext/erase.qbk @@ -3,18 +3,20 @@ [heading Prototype] `` -template< - class Container, - class SinglePassRange - > -void erase(Container& target, - iterator_range to_erase); +template +Container& erase( + Container& target, + iterator_range to_erase); `` [heading Description] `erase` the iterator range `to_erase` from the container `target`. +`remove_erase` performs the frequently used combination equivalent to `target.erase(std::remove(target.begin(), target.end(), value), target.end());` + +`remove_erase_if` performs the frequently used combination equivalent to `target.erase(std::remove_if(target.begin(), target.end(), pred), target.end());` + [heading Definition] Defined in the header file `boost/range/algorithm_ext/erase.hpp` diff --git a/doc/reference/algorithm_ext/insert.qbk b/doc/reference/algorithm_ext/insert.qbk index 1d9c567..4d5dc39 100644 --- a/doc/reference/algorithm_ext/insert.qbk +++ b/doc/reference/algorithm_ext/insert.qbk @@ -7,9 +7,9 @@ template< class Container, class SinglePassRange > -void insert(Container& target, - typename Container::iterator before, - const SinglePassRange& from); +Container& insert(Container& target, + typename Container::iterator before, + const SinglePassRange& from); `` [heading Description] diff --git a/doc/reference/algorithm_ext/iota.qbk b/doc/reference/algorithm_ext/iota.qbk index c098708..36cd7ab 100644 --- a/doc/reference/algorithm_ext/iota.qbk +++ b/doc/reference/algorithm_ext/iota.qbk @@ -3,8 +3,8 @@ [heading Prototype] `` -template -iota(SinglePassRange& rng, Value x); +template +ForwardRange& iota(ForwardRange& rng, Value x); `` [heading Description] @@ -18,7 +18,7 @@ Defined in the header file `boost/range/algorithm_ext/iota.hpp` [heading Requirements] -# `SinglePassRange` is a model of the __single_pass_range__ Concept. +# `ForwardRange` is a model of the __forward_range__ Concept. # `Value` is a model of the `Incrementable` Concept. [heading Complexity] diff --git a/doc/reference/algorithm_ext/push_back.qbk b/doc/reference/algorithm_ext/push_back.qbk index f3c8952..101fd30 100644 --- a/doc/reference/algorithm_ext/push_back.qbk +++ b/doc/reference/algorithm_ext/push_back.qbk @@ -7,8 +7,8 @@ template< class Container, class SinglePassRange > -void push_back(Container& target, - const SinglePassRange& from); +Container& push_back(Container& target, + const SinglePassRange& from); `` [heading Description] diff --git a/doc/reference/algorithm_ext/push_front.qbk b/doc/reference/algorithm_ext/push_front.qbk index d827105..edb540c 100644 --- a/doc/reference/algorithm_ext/push_front.qbk +++ b/doc/reference/algorithm_ext/push_front.qbk @@ -7,8 +7,8 @@ template< class Container, class SinglePassRange > -void push_front(Container& target, - const SinglePassRange& from); +Container& push_front(Container& target, + const SinglePassRange& from); `` [heading Description] diff --git a/doc/reference/algorithm_ext/remove_erase.qbk b/doc/reference/algorithm_ext/remove_erase.qbk index 0164768..25fb564 100644 --- a/doc/reference/algorithm_ext/remove_erase.qbk +++ b/doc/reference/algorithm_ext/remove_erase.qbk @@ -3,17 +3,14 @@ [heading Prototype] `` -template< - class Container, - class T - > -void remove_erase(Container& target, - const T& val); +template +Container& remove_erase(Container& target, + const Value& value); `` [heading Description] -`remove_erase` actually eliminates the elements equal to `val` from the container. This +`remove_erase` actually eliminates the elements equal to `value` from the container. This is in contrast to the `remove` algorithm which merely rearranges elements. [heading Definition] diff --git a/doc/reference/algorithm_ext/remove_erase_if.qbk b/doc/reference/algorithm_ext/remove_erase_if.qbk index f0ae749..0b8648e 100644 --- a/doc/reference/algorithm_ext/remove_erase_if.qbk +++ b/doc/reference/algorithm_ext/remove_erase_if.qbk @@ -3,12 +3,9 @@ [heading Prototype] `` -template< - class Container, - class Pred - > -void remove_erase(Container& target, - Pred pred); +template +Container& remove_erase_if(Container& target, + Pred pred); `` [heading Description] diff --git a/doc/reference/algorithms.qbk b/doc/reference/algorithms.qbk index 00b3edb..dca35d4 100644 --- a/doc/reference/algorithms.qbk +++ b/doc/reference/algorithms.qbk @@ -82,6 +82,7 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include algorithm/copy.qbk] [include algorithm/copy_backward.qbk] [include algorithm/fill.qbk] +[include algorithm/fill_n.qbk] [include algorithm/generate.qbk] [include algorithm/inplace_merge.qbk] [include algorithm/merge.qbk] @@ -133,6 +134,7 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include algorithm/push_heap.qbk] [include algorithm/pop_heap.qbk] [include algorithm/make_heap.qbk] +[include algorithm/sort_heap.qbk] [endsect] [section:permutation_algorithms Permutation algorithms] diff --git a/include/boost/range/algorithm/fill_n.hpp b/include/boost/range/algorithm/fill_n.hpp index f827135..29d7d6f 100755 --- a/include/boost/range/algorithm/fill_n.hpp +++ b/include/boost/range/algorithm/fill_n.hpp @@ -26,6 +26,7 @@ namespace boost /// range-based version of the fill_n std algorithm /// /// \pre ForwardRange is a model of the ForwardRangeConcept +/// \pre n <= std::distance(boost::begin(rng), boost::end(rng)) template< class ForwardRange, class Size, class Value > inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val) { diff --git a/include/boost/range/algorithm/heap_algorithm.hpp b/include/boost/range/algorithm/heap_algorithm.hpp index 857a30f..3a6d392 100755 --- a/include/boost/range/algorithm/heap_algorithm.hpp +++ b/include/boost/range/algorithm/heap_algorithm.hpp @@ -35,26 +35,29 @@ inline void push_heap(RandomAccessRange& rng) /// \overload template -inline void push_heap(const RandomAccessRange& rng) +inline const RandomAccessRange& push_heap(const RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::push_heap(boost::begin(rng), boost::end(rng)); + return rng; } /// \overload template -inline void push_heap(RandomAccessRange& rng, Compare comp_pred) +inline RandomAccessRange& push_heap(RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::push_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \overload template -inline void push_heap(const RandomAccessRange& rng, Compare comp_pred) +inline const RandomAccessRange& push_heap(const RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::push_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \brief template function pop_heap @@ -64,34 +67,38 @@ inline void push_heap(const RandomAccessRange& rng, Compare comp_pred) /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept /// \pre Compare is a model of the BinaryPredicateConcept template -inline void pop_heap(RandomAccessRange& rng) +inline RandomAccessRange& pop_heap(RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::pop_heap(boost::begin(rng), boost::end(rng)); + return rng; } /// \overload template -inline void pop_heap(const RandomAccessRange& rng) +inline const RandomAccessRange& pop_heap(const RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::pop_heap(boost::begin(rng),boost::end(rng)); + return rng; } /// \overload template -inline void pop_heap(RandomAccessRange& rng, Compare comp_pred) +inline RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \overload template -inline void pop_heap(const RandomAccessRange& rng, Compare comp_pred) +inline const RandomAccessRange& pop_heap(const RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \brief template function make_heap @@ -101,34 +108,38 @@ inline void pop_heap(const RandomAccessRange& rng, Compare comp_pred) /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept /// \pre Compare is a model of the BinaryPredicateConcept template -inline void make_heap(RandomAccessRange& rng) +inline RandomAccessRange& make_heap(RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::make_heap(boost::begin(rng), boost::end(rng)); + return rng; } /// \overload template -inline void make_heap(const RandomAccessRange& rng) +inline RandomAccessRange& make_heap(const RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::make_heap(boost::begin(rng),boost::end(rng)); + return rng; } /// \overload template -inline void make_heap(RandomAccessRange& rng, Compare comp_pred) +inline RandomAccessRange& make_heap(RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::make_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \overload template -inline void make_heap(const RandomAccessRange& rng, Compare comp_pred) +inline const RandomAccessRange& make_heap(const RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::make_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \brief template function sort_heap @@ -138,34 +149,38 @@ inline void make_heap(const RandomAccessRange& rng, Compare comp_pred) /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept /// \pre Compare is a model of the BinaryPredicateConcept template -inline void sort_heap(RandomAccessRange& rng) +inline RandomAccessRange& sort_heap(RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::sort_heap(boost::begin(rng), boost::end(rng)); + return rng; } /// \overload template -inline void sort_heap(const RandomAccessRange& rng) +inline const RandomAccessRange& sort_heap(const RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::sort_heap(boost::begin(rng), boost::end(rng)); + return rng; } /// \overload template -inline void sort_heap(RandomAccessRange& rng, Compare comp_pred) +inline RandomAccessRange& sort_heap(RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } /// \overload template -inline void sort_heap(const RandomAccessRange& rng, Compare comp_pred) +inline const RandomAccessRange& sort_heap(const RandomAccessRange& rng, Compare comp_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred); + return rng; } } // namespace range diff --git a/include/boost/range/algorithm/nth_element.hpp b/include/boost/range/algorithm/nth_element.hpp index 3e06baf..94fbe80 100755 --- a/include/boost/range/algorithm/nth_element.hpp +++ b/include/boost/range/algorithm/nth_element.hpp @@ -27,40 +27,44 @@ namespace boost /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept /// \pre BinaryPredicate is a model of the BinaryPredicateConcept template -inline void nth_element(RandomAccessRange& rng, +inline RandomAccessRange& nth_element(RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type nth) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::nth_element(boost::begin(rng), nth, boost::end(rng)); + return rng; } /// \overload template -inline void nth_element(const RandomAccessRange& rng, +inline const RandomAccessRange& nth_element(const RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type nth) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::nth_element(boost::begin(rng),nth,boost::end(rng)); + return rng; } /// \overload template -inline void nth_element(RandomAccessRange& rng, +inline RandomAccessRange& nth_element(RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type nth, BinaryPredicate sort_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::nth_element(boost::begin(rng), nth, boost::end(rng), sort_pred); + return rng; } /// \overload template -inline void nth_element(const RandomAccessRange& rng, +inline const RandomAccessRange& nth_element(const RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type nth, BinaryPredicate sort_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::nth_element(boost::begin(rng),nth,boost::end(rng), sort_pred); + return rng; } } // namespace range diff --git a/include/boost/range/algorithm/partial_sort.hpp b/include/boost/range/algorithm/partial_sort.hpp index e38c4be..a36af87 100755 --- a/include/boost/range/algorithm/partial_sort.hpp +++ b/include/boost/range/algorithm/partial_sort.hpp @@ -27,41 +27,45 @@ namespace boost /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept /// \pre BinaryPredicate is a model of the BinaryPredicateConcept template -inline void partial_sort(RandomAccessRange& rng, +inline RandomAccessRange& partial_sort(RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type middle) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::partial_sort(boost::begin(rng), middle, boost::end(rng)); + return rng; } /// \overload template -inline void partial_sort(const RandomAccessRange& rng, +inline const RandomAccessRange& partial_sort(const RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type middle) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::partial_sort(boost::begin(rng), middle, boost::end(rng)); + return rng; } /// \overload template -inline void partial_sort(RandomAccessRange& rng, +inline RandomAccessRange& partial_sort(RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type middle, BinaryPredicate sort_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::partial_sort(boost::begin(rng), middle, boost::end(rng), sort_pred); + return rng; } /// \overload template -inline void partial_sort(const RandomAccessRange& rng, +inline const RandomAccessRange& partial_sort(const RandomAccessRange& rng, BOOST_DEDUCED_TYPENAME range_iterator::type middle, BinaryPredicate sort_pred) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::partial_sort(boost::begin(rng), middle, boost::end(rng), sort_pred); + return rng; } } // namespace range diff --git a/include/boost/range/algorithm_ext/erase.hpp b/include/boost/range/algorithm_ext/erase.hpp index 3b0e037..107d32b 100755 --- a/include/boost/range/algorithm_ext/erase.hpp +++ b/include/boost/range/algorithm_ext/erase.hpp @@ -24,29 +24,32 @@ namespace boost { template< class Container > -inline void erase( Container& on, +inline Container& erase( Container& on, iterator_range to_erase ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); on.erase( boost::begin(to_erase), boost::end(to_erase) ); + return on; } template< class Container, class T > -inline void remove_erase( Container& on, const T& val ) +inline Container& remove_erase( Container& on, const T& val ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); on.erase( std::remove(boost::begin(on), boost::end(on), val), boost::end(on)); + return on; } template< class Container, class Pred > -inline void remove_erase_if( Container& on, Pred pred ) +inline Container& remove_erase_if( Container& on, Pred pred ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); on.erase( std::remove_if(boost::begin(on), boost::end(on), pred), boost::end(on)); + return on; } } // namespace range diff --git a/include/boost/range/algorithm_ext/insert.hpp b/include/boost/range/algorithm_ext/insert.hpp index a887f15..b9adfdd 100755 --- a/include/boost/range/algorithm_ext/insert.hpp +++ b/include/boost/range/algorithm_ext/insert.hpp @@ -23,15 +23,16 @@ namespace boost { template< class Container, class Range > -inline void insert( Container& on, - BOOST_DEDUCED_TYPENAME Container::iterator before, - const Range& from ) +inline Container& insert( Container& on, + BOOST_DEDUCED_TYPENAME Container::iterator before, + const Range& from ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_ASSERT( (void*)&on != (void*)&from && "cannot copy from a container to itself" ); on.insert( before, boost::begin(from), boost::end(from) ); + return on; } } // namespace range diff --git a/include/boost/range/algorithm_ext/iota.hpp b/include/boost/range/algorithm_ext/iota.hpp index 4a03a59..65cbc89 100644 --- a/include/boost/range/algorithm_ext/iota.hpp +++ b/include/boost/range/algorithm_ext/iota.hpp @@ -22,7 +22,7 @@ namespace boost { template< class ForwardRange, class Value > -inline void iota( ForwardRange& rng, Value x ) +inline ForwardRange& iota( ForwardRange& rng, Value x ) { BOOST_CONCEPT_ASSERT(( ForwardRangeConcept )); typedef BOOST_DEDUCED_TYPENAME range_iterator::type iterator_t; @@ -30,6 +30,8 @@ inline void iota( ForwardRange& rng, Value x ) iterator_t last_target = ::boost::end(rng); for (iterator_t target = ::boost::begin(rng); target != last_target; ++target, ++x) *target = x; + + return rng; } } // namespace range diff --git a/include/boost/range/algorithm_ext/push_back.hpp b/include/boost/range/algorithm_ext/push_back.hpp index e52de41..51a7a7b 100755 --- a/include/boost/range/algorithm_ext/push_back.hpp +++ b/include/boost/range/algorithm_ext/push_back.hpp @@ -23,13 +23,14 @@ namespace boost { template< class Container, class Range > -inline void push_back( Container& on, const Range& from ) +inline Container& push_back( Container& on, const Range& from ) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_ASSERT( (void*)&on != (void*)&from && "cannot copy from a container to itself" ); on.insert( on.end(), boost::begin(from), boost::end(from) ); + return on; } } // namespace range diff --git a/include/boost/range/algorithm_ext/push_front.hpp b/include/boost/range/algorithm_ext/push_front.hpp index 6ee269b..470d793 100755 --- a/include/boost/range/algorithm_ext/push_front.hpp +++ b/include/boost/range/algorithm_ext/push_front.hpp @@ -23,13 +23,14 @@ namespace boost { template< class Container, class Range > -inline void push_front( Container& on, const Range& from ) +inline Container& push_front( Container& on, const Range& from ) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_ASSERT( (void*)&on != (void*)&from && "cannot copy from a container to itself" ); on.insert( on.begin(), boost::begin(from), boost::end(from) ); + return on; } } // namespace range From 47b40f66e111db91a6f7850128d3d63556f0ad73 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Tue, 13 Apr 2010 20:41:11 +0000 Subject: [PATCH 12/26] Boost.Range defect fix for the operator[] of iterator_range. This now reverts to a simpler implementation when the iterator is a pointer. [SVN r61258] --- include/boost/range/iterator_range_core.hpp | 45 +++++++++++++++++---- test/Jamfile.v2 | 1 + test/pointer_as_iterator.cpp | 39 ++++++++++++++++++ 3 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 test/pointer_as_iterator.cpp diff --git a/include/boost/range/iterator_range_core.hpp b/include/boost/range/iterator_range_core.hpp index c1822fb..b2e7d5f 100755 --- a/include/boost/range/iterator_range_core.hpp +++ b/include/boost/range/iterator_range_core.hpp @@ -298,14 +298,22 @@ namespace boost return m_Begin[at]; } #else - BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result::type - operator[]( difference_type at ) const - { - BOOST_ASSERT( at >= 0 && at < size() ); - - typedef boost::detail::use_operator_brackets_proxy use_proxy; - return boost::detail::make_operator_brackets_result(m_Begin + at, use_proxy()); - } + // Using the operator_brackets_result mechanism properly supports + // the corner cases with proxies for references etc. However + // the operator_brackets_result implementation does not support + // pointers as iterators. Since a pointer can't have the + // issues with proxies this implementation uses a simpler + // implementation if the iterator is a pointer. + BOOST_DEDUCED_TYPENAME boost::mpl::if_< + boost::is_pointer, + reference, + BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result::type + >::type + operator[]( difference_type at ) const + { + BOOST_ASSERT( at >= 0 && at < size() ); + return get_at(m_Begin, at); + } #endif // @@ -332,6 +340,27 @@ namespace boost } private: + template + static BOOST_DEDUCED_TYPENAME boost::enable_if< + boost::is_pointer, + reference + >::type + get_at( Iterator it, difference_type at ) + { + return it[at]; + } + + template + static BOOST_DEDUCED_TYPENAME boost::disable_if< + boost::is_pointer, + BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result::type + >::type + get_at( Iterator it, difference_type at ) + { + typedef boost::detail::use_operator_brackets_proxy use_proxy; + return boost::detail::make_operator_brackets_result(it + at, use_proxy()); + } + // begin and end iterators IteratorT m_Begin; IteratorT m_End; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 97600d5..965e3cc 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -133,6 +133,7 @@ test-suite range : # [ range-test mfc : $(VC71_ROOT)/atlmfc/include ] [ range-test join ] [ range-test partial_workaround ] + [ range-test pointer_as_iterator ] [ range-test reversible_range ] [ range-test std_container ] [ range-test string ] diff --git a/test/pointer_as_iterator.cpp b/test/pointer_as_iterator.cpp new file mode 100644 index 0000000..e0e28d0 --- /dev/null +++ b/test/pointer_as_iterator.cpp @@ -0,0 +1,39 @@ +// Boost.Range library +// +// Copyright Neil Groves 2010. 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/ +// +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + void test_pointer_as_iterator() + { + boost::array arr; + boost::iterator_range r(arr.begin(), arr.end()); + r[0]; + } +} // anonymous namespace + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.pointer_as_iterator" ); + + test->add(BOOST_TEST_CASE( &test_pointer_as_iterator )); + + return test; +} From 22fcae4fcbd88bc55c5b7ee074e23e1e1c4f1930 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 14 Apr 2010 07:41:38 +0000 Subject: [PATCH 13/26] Boost.Range reverted attempted fix for iterator_range::operator[] since this was not a good fix. [SVN r61269] --- include/boost/range/iterator_range_core.hpp | 41 --------------------- 1 file changed, 41 deletions(-) diff --git a/include/boost/range/iterator_range_core.hpp b/include/boost/range/iterator_range_core.hpp index b2e7d5f..497b1e3 100755 --- a/include/boost/range/iterator_range_core.hpp +++ b/include/boost/range/iterator_range_core.hpp @@ -290,31 +290,11 @@ namespace boost return *--last; } - -#ifdef __SUNPRO_CC reference operator[]( difference_type at ) const { BOOST_ASSERT( at >= 0 && at < size() ); return m_Begin[at]; } -#else - // Using the operator_brackets_result mechanism properly supports - // the corner cases with proxies for references etc. However - // the operator_brackets_result implementation does not support - // pointers as iterators. Since a pointer can't have the - // issues with proxies this implementation uses a simpler - // implementation if the iterator is a pointer. - BOOST_DEDUCED_TYPENAME boost::mpl::if_< - boost::is_pointer, - reference, - BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result::type - >::type - operator[]( difference_type at ) const - { - BOOST_ASSERT( at >= 0 && at < size() ); - return get_at(m_Begin, at); - } -#endif // // When storing transform iterators, operator[]() @@ -340,27 +320,6 @@ namespace boost } private: - template - static BOOST_DEDUCED_TYPENAME boost::enable_if< - boost::is_pointer, - reference - >::type - get_at( Iterator it, difference_type at ) - { - return it[at]; - } - - template - static BOOST_DEDUCED_TYPENAME boost::disable_if< - boost::is_pointer, - BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result::type - >::type - get_at( Iterator it, difference_type at ) - { - typedef boost::detail::use_operator_brackets_proxy use_proxy; - return boost::detail::make_operator_brackets_result(it + at, use_proxy()); - } - // begin and end iterators IteratorT m_Begin; IteratorT m_End; From cf63ba0dc93283611a35dca5ae2dc9eb630d3ad3 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 14 Apr 2010 22:16:11 +0000 Subject: [PATCH 14/26] Boost.Range removed redundant overloads, increased compiler support, and made return types consistent. [SVN r61281] --- .../boost/range/algorithm/adjacent_find.hpp | 65 ++----------- include/boost/range/algorithm/count.hpp | 9 -- include/boost/range/algorithm/count_if.hpp | 9 -- include/boost/range/algorithm/equal_range.hpp | 24 ----- include/boost/range/algorithm/for_each.hpp | 8 -- include/boost/range/algorithm/generate.hpp | 9 -- .../boost/range/algorithm/heap_algorithm.hpp | 73 +-------------- .../boost/range/algorithm/inplace_merge.hpp | 21 ----- include/boost/range/algorithm/max_element.hpp | 40 -------- include/boost/range/algorithm/min_element.hpp | 40 -------- include/boost/range/algorithm/mismatch.hpp | 91 ------------------- include/boost/range/algorithm/nth_element.hpp | 21 ----- .../boost/range/algorithm/partial_sort.hpp | 21 ----- .../range/algorithm/partial_sort_copy.hpp | 16 +--- include/boost/range/algorithm/partition.hpp | 20 ---- include/boost/range/algorithm/permutation.hpp | 36 -------- .../boost/range/algorithm/random_shuffle.hpp | 18 ---- include/boost/range/algorithm/remove.hpp | 20 ---- include/boost/range/algorithm/remove_if.hpp | 20 ---- include/boost/range/algorithm/replace.hpp | 11 --- include/boost/range/algorithm/replace_if.hpp | 11 --- include/boost/range/algorithm/reverse.hpp | 9 -- .../boost/range/algorithm/reverse_copy.hpp | 10 +- include/boost/range/algorithm/rotate.hpp | 15 +-- include/boost/range/algorithm/rotate_copy.hpp | 6 +- include/boost/range/algorithm/search.hpp | 51 ----------- include/boost/range/algorithm/search_n.hpp | 80 +++------------- include/boost/range/algorithm/sort.hpp | 18 ---- .../range/algorithm/stable_partition.hpp | 20 ---- include/boost/range/algorithm/stable_sort.hpp | 18 ---- include/boost/range/algorithm/swap_ranges.hpp | 12 +-- include/boost/range/algorithm/unique.hpp | 36 -------- 32 files changed, 37 insertions(+), 821 deletions(-) diff --git a/include/boost/range/algorithm/adjacent_find.hpp b/include/boost/range/algorithm/adjacent_find.hpp index 1b88dae..6ff4ad6 100755 --- a/include/boost/range/algorithm/adjacent_find.hpp +++ b/include/boost/range/algorithm/adjacent_find.hpp @@ -28,8 +28,8 @@ namespace boost /// /// \pre ForwardRange is a model of the ForwardRangeConcept /// \pre BinaryPredicate is a model of the BinaryPredicateConcept -template< typename ForwardRange > -inline typename range_iterator::type +template< class ForwardRange > +inline BOOST_DEDUCED_TYPENAME range_iterator::type adjacent_find(ForwardRange & rng) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); @@ -37,43 +37,19 @@ adjacent_find(ForwardRange & rng) } /// \overload -template< typename ForwardRange > -inline typename range_iterator::type -adjacent_find(const ForwardRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - return std::adjacent_find(boost::begin(rng),boost::end(rng)); -} - -/// \overload -template< typename ForwardRange, typename BinaryPredicate > -inline typename range_iterator::type +template< class ForwardRange, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type adjacent_find(ForwardRange & rng, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, - typename range_value::type>)); - return std::adjacent_find(boost::begin(rng),boost::end(rng),pred); -} - -/// \overload -template< typename ForwardRange, typename BinaryPredicate > -inline typename range_iterator::type -adjacent_find(const ForwardRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, - typename range_value::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::type +template< range_return_value re, class ForwardRange > +inline BOOST_DEDUCED_TYPENAME range_return::type adjacent_find(ForwardRange & rng) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); @@ -83,41 +59,16 @@ adjacent_find(ForwardRange & rng) } /// \overload -template< range_return_value re, typename ForwardRange > -inline typename range_return::type -adjacent_find(const ForwardRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - return range_return:: - 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::type +template< range_return_value re, class ForwardRange, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type adjacent_find(ForwardRange& rng, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, - typename range_value::type>)); return range_return:: 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::type -adjacent_find(const ForwardRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - return range_return:: - pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred), - rng); -} - } // namespace range using range::adjacent_find; } // namespace boost diff --git a/include/boost/range/algorithm/count.hpp b/include/boost/range/algorithm/count.hpp index 8316ce0..3174dc0 100755 --- a/include/boost/range/algorithm/count.hpp +++ b/include/boost/range/algorithm/count.hpp @@ -27,15 +27,6 @@ namespace boost /// /// \pre SinglePassRange is a model of the SinglePassRangeConcept template< class SinglePassRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_difference::type -count(SinglePassRange& rng, const Value& val) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::count(boost::begin(rng), boost::end(rng), val); -} - -/// \overload -template< class SinglePassRange, class Value > inline BOOST_DEDUCED_TYPENAME range_difference::type count(const SinglePassRange& rng, const Value& val) { diff --git a/include/boost/range/algorithm/count_if.hpp b/include/boost/range/algorithm/count_if.hpp index ae17b0e..b101226 100755 --- a/include/boost/range/algorithm/count_if.hpp +++ b/include/boost/range/algorithm/count_if.hpp @@ -28,15 +28,6 @@ namespace boost /// \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::type -count_if(SinglePassRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::count_if(boost::begin(rng), boost::end(rng), pred); -} - -/// \overload -template< class SinglePassRange, class UnaryPredicate > inline BOOST_DEDUCED_TYPENAME boost::range_difference::type count_if(const SinglePassRange& rng, UnaryPredicate pred) { diff --git a/include/boost/range/algorithm/equal_range.hpp b/include/boost/range/algorithm/equal_range.hpp index 4aa4a54..cc3c510 100755 --- a/include/boost/range/algorithm/equal_range.hpp +++ b/include/boost/range/algorithm/equal_range.hpp @@ -37,18 +37,6 @@ equal_range(ForwardRange& rng, const Value& val) return std::equal_range(boost::begin(rng), boost::end(rng), val); } -/// \overload -template -inline std::pair< - BOOST_DEDUCED_TYPENAME boost::range_iterator::type, - BOOST_DEDUCED_TYPENAME boost::range_iterator::type - > -equal_range(const ForwardRange& rng, const Value& val) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::equal_range(boost::begin(rng), boost::end(rng), val); -} - /// \overload template inline std::pair< @@ -61,18 +49,6 @@ equal_range(ForwardRange& rng, const Value& val, SortPredicate pred) return std::equal_range(boost::begin(rng), boost::end(rng), val, pred); } -/// \overload -template -inline std::pair< - BOOST_DEDUCED_TYPENAME boost::range_iterator::type, - BOOST_DEDUCED_TYPENAME boost::range_iterator::type - > -equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::equal_range(boost::begin(rng), boost::end(rng), val, pred); -} - } // namespace range using range::equal_range; } // namespace boost diff --git a/include/boost/range/algorithm/for_each.hpp b/include/boost/range/algorithm/for_each.hpp index 714a06f..f258815 100755 --- a/include/boost/range/algorithm/for_each.hpp +++ b/include/boost/range/algorithm/for_each.hpp @@ -33,14 +33,6 @@ inline UnaryFunction for_each(SinglePassRange & rng, UnaryFunction fun) 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 )); - return std::for_each(boost::begin(rng), boost::end(rng), fun); -} - } // namespace range using range::for_each; } // namespace boost diff --git a/include/boost/range/algorithm/generate.hpp b/include/boost/range/algorithm/generate.hpp index 97a0d9d..bd63a48 100755 --- a/include/boost/range/algorithm/generate.hpp +++ b/include/boost/range/algorithm/generate.hpp @@ -33,15 +33,6 @@ inline ForwardRange& generate( ForwardRange& rng, Generator gen ) return rng; } -/// \overload -template< class ForwardRange, class Generator > -inline const ForwardRange& generate(const ForwardRange& rng, Generator gen) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - std::generate(boost::begin(rng), boost::end(rng), gen); - return rng; -} - } // namespace range using range::generate; } // namespace boost diff --git a/include/boost/range/algorithm/heap_algorithm.hpp b/include/boost/range/algorithm/heap_algorithm.hpp index 3a6d392..64df3e9 100755 --- a/include/boost/range/algorithm/heap_algorithm.hpp +++ b/include/boost/range/algorithm/heap_algorithm.hpp @@ -27,18 +27,10 @@ namespace boost /// \pre RandomAccessRange is a model of the RandomAccessRangeConcept /// \pre Compare is a model of the BinaryPredicateConcept template -inline void push_heap(RandomAccessRange& rng) +inline RandomAccessRange& push_heap(RandomAccessRange& rng) { BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); std::push_heap(boost::begin(rng), boost::end(rng)); -} - -/// \overload -template -inline const RandomAccessRange& push_heap(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::push_heap(boost::begin(rng), boost::end(rng)); return rng; } @@ -51,15 +43,6 @@ inline RandomAccessRange& push_heap(RandomAccessRange& rng, Compare comp_pred) return rng; } -/// \overload -template -inline const RandomAccessRange& push_heap(const RandomAccessRange& rng, Compare comp_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::push_heap(boost::begin(rng), boost::end(rng), comp_pred); - return rng; -} - /// \brief template function pop_heap /// /// range-based version of the pop_heap std algorithm @@ -74,15 +57,6 @@ inline RandomAccessRange& pop_heap(RandomAccessRange& rng) return rng; } -/// \overload -template -inline const RandomAccessRange& pop_heap(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::pop_heap(boost::begin(rng),boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare comp_pred) @@ -92,15 +66,6 @@ inline RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare comp_pred) return rng; } -/// \overload -template -inline const RandomAccessRange& pop_heap(const RandomAccessRange& rng, Compare comp_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred); - return rng; -} - /// \brief template function make_heap /// /// range-based version of the make_heap std algorithm @@ -115,15 +80,6 @@ inline RandomAccessRange& make_heap(RandomAccessRange& rng) return rng; } -/// \overload -template -inline RandomAccessRange& make_heap(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::make_heap(boost::begin(rng),boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& make_heap(RandomAccessRange& rng, Compare comp_pred) @@ -133,15 +89,6 @@ inline RandomAccessRange& make_heap(RandomAccessRange& rng, Compare comp_pred) return rng; } -/// \overload -template -inline const RandomAccessRange& make_heap(const RandomAccessRange& rng, Compare comp_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::make_heap(boost::begin(rng), boost::end(rng), comp_pred); - return rng; -} - /// \brief template function sort_heap /// /// range-based version of the sort_heap std algorithm @@ -156,15 +103,6 @@ inline RandomAccessRange& sort_heap(RandomAccessRange& rng) return rng; } -/// \overload -template -inline const RandomAccessRange& sort_heap(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::sort_heap(boost::begin(rng), boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& sort_heap(RandomAccessRange& rng, Compare comp_pred) @@ -174,15 +112,6 @@ inline RandomAccessRange& sort_heap(RandomAccessRange& rng, Compare comp_pred) return rng; } -/// \overload -template -inline const RandomAccessRange& sort_heap(const RandomAccessRange& rng, Compare comp_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred); - return rng; -} - } // namespace range using range::push_heap; using range::pop_heap; diff --git a/include/boost/range/algorithm/inplace_merge.hpp b/include/boost/range/algorithm/inplace_merge.hpp index dfadbaa..80c13f4 100755 --- a/include/boost/range/algorithm/inplace_merge.hpp +++ b/include/boost/range/algorithm/inplace_merge.hpp @@ -35,16 +35,6 @@ inline BidirectionalRange& inplace_merge(BidirectionalRange& rng, return rng; } -/// \overload -template -inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng, - BOOST_DEDUCED_TYPENAME boost::range_iterator::type middle) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - std::inplace_merge(boost::begin(rng), middle, boost::end(rng)); - return rng; -} - /// \overload template inline BidirectionalRange& inplace_merge(BidirectionalRange& rng, @@ -56,17 +46,6 @@ inline BidirectionalRange& inplace_merge(BidirectionalRange& rng, return rng; } -/// \overload -template -inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng, - BOOST_DEDUCED_TYPENAME boost::range_iterator::type middle, - BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred); - return rng; -} - } // namespace range using range::inplace_merge; } // namespace boost diff --git a/include/boost/range/algorithm/max_element.hpp b/include/boost/range/algorithm/max_element.hpp index a0c1ffd..d8ec692 100755 --- a/include/boost/range/algorithm/max_element.hpp +++ b/include/boost/range/algorithm/max_element.hpp @@ -35,15 +35,6 @@ max_element(ForwardRange& rng) return std::max_element(boost::begin(rng), boost::end(rng)); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_iterator::type -max_element(const ForwardRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::max_element(boost::begin(rng), boost::end(rng)); -} - /// \overload template inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -53,15 +44,6 @@ max_element(ForwardRange& rng, BinaryPredicate pred) return std::max_element(boost::begin(rng), boost::end(rng), pred); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_iterator::type -max_element(const ForwardRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::max_element(boost::begin(rng), boost::end(rng), pred); -} - // range_return overloads /// \overload @@ -75,17 +57,6 @@ max_element(ForwardRange& rng) rng); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_return::type -max_element(const ForwardRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return::pack( - std::max_element(boost::begin(rng), boost::end(rng)), - rng); -} - /// \overload template inline BOOST_DEDUCED_TYPENAME range_return::type @@ -97,17 +68,6 @@ max_element(ForwardRange& rng, BinaryPredicate pred) rng); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_return::type -max_element(const ForwardRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return::pack( - std::max_element(boost::begin(rng), boost::end(rng), pred), - rng); -} - } // namespace range using range::max_element; } // namespace boost diff --git a/include/boost/range/algorithm/min_element.hpp b/include/boost/range/algorithm/min_element.hpp index c966b1e..3bc02da 100755 --- a/include/boost/range/algorithm/min_element.hpp +++ b/include/boost/range/algorithm/min_element.hpp @@ -35,15 +35,6 @@ min_element(ForwardRange& rng) return std::min_element(boost::begin(rng), boost::end(rng)); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_iterator::type -min_element(const ForwardRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::min_element(boost::begin(rng), boost::end(rng)); -} - /// \overload template inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -53,15 +44,6 @@ min_element(ForwardRange& rng, BinaryPredicate pred) return std::min_element(boost::begin(rng), boost::end(rng), pred); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_iterator::type -min_element(const ForwardRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::min_element(boost::begin(rng), boost::end(rng), pred); -} - // range_return overloads /// \overload @@ -75,17 +57,6 @@ min_element(ForwardRange& rng) rng); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_return::type -min_element(const ForwardRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return::pack( - std::min_element(boost::begin(rng), boost::end(rng)), - rng); -} - /// \overload template inline BOOST_DEDUCED_TYPENAME range_return::type @@ -97,17 +68,6 @@ min_element(ForwardRange& rng, BinaryPredicate pred) rng); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_return::type -min_element(const ForwardRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return::pack( - std::min_element(boost::begin(rng), boost::end(rng), pred), - rng); -} - } // namespace range using range::min_element; } // namespace boost diff --git a/include/boost/range/algorithm/mismatch.hpp b/include/boost/range/algorithm/mismatch.hpp index 2819c33..c0cde9b 100755 --- a/include/boost/range/algorithm/mismatch.hpp +++ b/include/boost/range/algorithm/mismatch.hpp @@ -69,36 +69,6 @@ namespace boost /// \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::type, - BOOST_DEDUCED_TYPENAME range_iterator::type > -mismatch(SinglePassRange1& rng1, const SinglePassRange2 & rng2) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - - return ::boost::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::type, - BOOST_DEDUCED_TYPENAME range_iterator::type > -mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - - return ::boost::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::type, BOOST_DEDUCED_TYPENAME range_iterator::type > @@ -112,52 +82,6 @@ mismatch(SinglePassRange1& rng1, SinglePassRange2 & rng2) ::boost::begin(rng2), ::boost::end(rng2)); } -/// \overload -template< class SinglePassRange1, class SinglePassRange2 > -inline std::pair< - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_iterator::type > -mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - - 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::type, - BOOST_DEDUCED_TYPENAME range_iterator::type > -mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - - return ::boost::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::type, - BOOST_DEDUCED_TYPENAME range_iterator::type > -mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - - return ::boost::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< @@ -173,21 +97,6 @@ mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred) ::boost::begin(rng2), ::boost::end(rng2), pred); } -/// \overload -template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate > -inline std::pair< - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_iterator::type > -mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - - 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 diff --git a/include/boost/range/algorithm/nth_element.hpp b/include/boost/range/algorithm/nth_element.hpp index 94fbe80..cf143e9 100755 --- a/include/boost/range/algorithm/nth_element.hpp +++ b/include/boost/range/algorithm/nth_element.hpp @@ -35,16 +35,6 @@ inline RandomAccessRange& nth_element(RandomAccessRange& rng, return rng; } -/// \overload -template -inline const RandomAccessRange& nth_element(const RandomAccessRange& rng, - BOOST_DEDUCED_TYPENAME range_iterator::type nth) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::nth_element(boost::begin(rng),nth,boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& nth_element(RandomAccessRange& rng, @@ -56,17 +46,6 @@ inline RandomAccessRange& nth_element(RandomAccessRange& rng, return rng; } -/// \overload -template -inline const RandomAccessRange& nth_element(const RandomAccessRange& rng, - BOOST_DEDUCED_TYPENAME range_iterator::type nth, - BinaryPredicate sort_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::nth_element(boost::begin(rng),nth,boost::end(rng), sort_pred); - return rng; -} - } // namespace range using range::nth_element; } // namespace boost diff --git a/include/boost/range/algorithm/partial_sort.hpp b/include/boost/range/algorithm/partial_sort.hpp index a36af87..1797c55 100755 --- a/include/boost/range/algorithm/partial_sort.hpp +++ b/include/boost/range/algorithm/partial_sort.hpp @@ -35,16 +35,6 @@ inline RandomAccessRange& partial_sort(RandomAccessRange& rng, return rng; } -/// \overload -template -inline const RandomAccessRange& partial_sort(const RandomAccessRange& rng, - BOOST_DEDUCED_TYPENAME range_iterator::type middle) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::partial_sort(boost::begin(rng), middle, boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& partial_sort(RandomAccessRange& rng, @@ -57,17 +47,6 @@ inline RandomAccessRange& partial_sort(RandomAccessRange& rng, return rng; } -/// \overload -template -inline const RandomAccessRange& partial_sort(const RandomAccessRange& rng, - BOOST_DEDUCED_TYPENAME range_iterator::type middle, - BinaryPredicate sort_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::partial_sort(boost::begin(rng), middle, boost::end(rng), sort_pred); - return rng; -} - } // namespace range using range::partial_sort; } // namespace boost diff --git a/include/boost/range/algorithm/partial_sort_copy.hpp b/include/boost/range/algorithm/partial_sort_copy.hpp index 8cf3510..a2fe761 100755 --- a/include/boost/range/algorithm/partial_sort_copy.hpp +++ b/include/boost/range/algorithm/partial_sort_copy.hpp @@ -28,30 +28,24 @@ namespace boost /// \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 -inline typename range_iterator::type +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2) { BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((WriteableRandomAccessRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((range_detail::SameTypeConcept::type, typename range_value::type>)); - BOOST_RANGE_CONCEPT_ASSERT((LessThanComparableConcept::type>)); return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1), boost::begin(rng2), boost::end(rng2)); } /// \overload -template -inline typename range_iterator::type +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((WriteableRandomAccessRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((range_detail::SameTypeConcept::type, typename range_value::type>)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, typename range_value::type>)); return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1), boost::begin(rng2), boost::end(rng2), pred); diff --git a/include/boost/range/algorithm/partition.hpp b/include/boost/range/algorithm/partition.hpp index 05f41da..6404918 100755 --- a/include/boost/range/algorithm/partition.hpp +++ b/include/boost/range/algorithm/partition.hpp @@ -34,15 +34,6 @@ partition(ForwardRange& rng, UnaryPredicate pred) return std::partition(boost::begin(rng),boost::end(rng),pred); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_iterator::type -partition(const ForwardRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::partition(boost::begin(rng),boost::end(rng),pred); -} - // range_return overloads /// \overload @@ -56,17 +47,6 @@ partition(ForwardRange& rng, UnaryPredicate pred) 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::type -partition(const ForwardRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return boost::range_return:: - pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng); -} - } // namespace range using range::partition; } // namespace boost diff --git a/include/boost/range/algorithm/permutation.hpp b/include/boost/range/algorithm/permutation.hpp index 75388cc..7540c96 100755 --- a/include/boost/range/algorithm/permutation.hpp +++ b/include/boost/range/algorithm/permutation.hpp @@ -33,14 +33,6 @@ inline bool next_permutation(BidirectionalRange& rng) return std::next_permutation(boost::begin(rng), boost::end(rng)); } -/// \overload -template -inline bool next_permutation(const BidirectionalRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - return std::next_permutation(boost::begin(rng), boost::end(rng)); -} - /// \overload template inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred) @@ -50,16 +42,6 @@ inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred) comp_pred); } -/// \overload -template -inline bool next_permutation(const BidirectionalRange& rng, - Compare comp_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - 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 @@ -73,14 +55,6 @@ inline bool prev_permutation(BidirectionalRange& rng) return std::prev_permutation(boost::begin(rng), boost::end(rng)); } -/// \overload -template -inline bool prev_permutation(const BidirectionalRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - return std::prev_permutation(boost::begin(rng), boost::end(rng)); -} - /// \overload template inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred) @@ -90,16 +64,6 @@ inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred) comp_pred); } -/// \overload -template -inline bool prev_permutation(const BidirectionalRange& rng, - Compare comp_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - return std::prev_permutation(boost::begin(rng), boost::end(rng), - comp_pred); -} - } // namespace range using range::next_permutation; using range::prev_permutation; diff --git a/include/boost/range/algorithm/random_shuffle.hpp b/include/boost/range/algorithm/random_shuffle.hpp index eeae3d7..0b17333 100755 --- a/include/boost/range/algorithm/random_shuffle.hpp +++ b/include/boost/range/algorithm/random_shuffle.hpp @@ -34,15 +34,6 @@ inline RandomAccessRange& random_shuffle(RandomAccessRange& rng) return rng; } -/// \overload -template -inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::random_shuffle(boost::begin(rng),boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& random_shuffle(RandomAccessRange& rng, Generator& gen) @@ -52,15 +43,6 @@ inline RandomAccessRange& random_shuffle(RandomAccessRange& rng, Generator& gen) return rng; } -/// \overload -template -inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng, Generator& gen) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::random_shuffle(boost::begin(rng), boost::end(rng), gen); - return rng; -} - } // namespace range using range::random_shuffle; } // namespace boost diff --git a/include/boost/range/algorithm/remove.hpp b/include/boost/range/algorithm/remove.hpp index 699a7cd..638dff2 100755 --- a/include/boost/range/algorithm/remove.hpp +++ b/include/boost/range/algorithm/remove.hpp @@ -34,15 +34,6 @@ remove(ForwardRange& rng, const Value& val) return std::remove(boost::begin(rng),boost::end(rng),val); } -/// \overload -template< class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_iterator::type -remove(const ForwardRange& rng, const Value& val) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::remove(boost::begin(rng),boost::end(rng),val); -} - // range_return overloads /// \overload @@ -56,17 +47,6 @@ remove(ForwardRange& rng, const Value& val) rng); } -/// \overload -template< range_return_value re, class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_return::type -remove(const ForwardRange& rng, const Value& val) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return::pack( - std::remove(boost::begin(rng), boost::end(rng), val), - rng); -} - } // namespace range using range::remove; } // namespace boost diff --git a/include/boost/range/algorithm/remove_if.hpp b/include/boost/range/algorithm/remove_if.hpp index babcddc..349e7a4 100755 --- a/include/boost/range/algorithm/remove_if.hpp +++ b/include/boost/range/algorithm/remove_if.hpp @@ -35,15 +35,6 @@ remove_if(ForwardRange& rng, UnaryPredicate pred) return std::remove_if(boost::begin(rng), boost::end(rng), pred); } -/// \overload -template< class ForwardRange, class UnaryPredicate > -inline BOOST_DEDUCED_TYPENAME boost::range_iterator::type -remove_if(const ForwardRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::remove_if(boost::begin(rng),boost::end(rng),pred); -} - // range_return overloads /// \overload @@ -57,17 +48,6 @@ remove_if(ForwardRange& rng, UnaryPredicate pred) rng); } -/// \overload -template< range_return_value re, class ForwardRange, class UnaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type -remove_if(const ForwardRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return::pack( - std::remove_if(boost::begin(rng), boost::end(rng), pred), - rng); -} - } // namespace range using range::remove_if; } // namespace boost diff --git a/include/boost/range/algorithm/replace.hpp b/include/boost/range/algorithm/replace.hpp index 44d3e4c..3f2d72c 100755 --- a/include/boost/range/algorithm/replace.hpp +++ b/include/boost/range/algorithm/replace.hpp @@ -35,17 +35,6 @@ replace(ForwardRange& rng, const Value& 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 )); - std::replace(boost::begin(rng), boost::end(rng), what, with_what); - return rng; -} - } // namespace range using range::replace; } // namespace boost; diff --git a/include/boost/range/algorithm/replace_if.hpp b/include/boost/range/algorithm/replace_if.hpp index 93d5a1f..393a4ca 100755 --- a/include/boost/range/algorithm/replace_if.hpp +++ b/include/boost/range/algorithm/replace_if.hpp @@ -36,17 +36,6 @@ inline ForwardRange& 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 )); - std::replace_if(boost::begin(rng), boost::end(rng), pred, val); - return rng; -} - } // namespace range using range::replace_if; } // namespace boost diff --git a/include/boost/range/algorithm/reverse.hpp b/include/boost/range/algorithm/reverse.hpp index 20a7eb1..8741d66 100755 --- a/include/boost/range/algorithm/reverse.hpp +++ b/include/boost/range/algorithm/reverse.hpp @@ -34,15 +34,6 @@ inline BidirectionalRange& reverse(BidirectionalRange& rng) return rng; } -/// \overload -template -inline const BidirectionalRange& reverse(const BidirectionalRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - std::reverse(boost::begin(rng), boost::end(rng)); - return rng; -} - } // namespace range using range::reverse; } // namespace boost diff --git a/include/boost/range/algorithm/reverse_copy.hpp b/include/boost/range/algorithm/reverse_copy.hpp index 381f157..d86145d 100755 --- a/include/boost/range/algorithm/reverse_copy.hpp +++ b/include/boost/range/algorithm/reverse_copy.hpp @@ -26,15 +26,7 @@ namespace boost /// range-based version of the reverse_copy std algorithm /// /// \pre BidirectionalRange is a model of the BidirectionalRangeConcept -template -inline OutputIterator reverse_copy(BidirectionalRange& rng, OutputIterator out) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - return std::reverse_copy(boost::begin(rng), boost::end(rng), out); -} - -/// \overload -template +template inline OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out) { BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); diff --git a/include/boost/range/algorithm/rotate.hpp b/include/boost/range/algorithm/rotate.hpp index 2372a00..aef6062 100755 --- a/include/boost/range/algorithm/rotate.hpp +++ b/include/boost/range/algorithm/rotate.hpp @@ -25,26 +25,15 @@ namespace boost /// range-based version of the rotate std algorithm /// /// \pre Rng meets the requirements for a Forward range -template +template inline ForwardRange& rotate(ForwardRange& rng, - typename range_iterator::type middle) + BOOST_DEDUCED_TYPENAME range_iterator::type middle) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); std::rotate(boost::begin(rng), middle, boost::end(rng)); return rng; } -/// \overload -template -inline const ForwardRange& - rotate(const ForwardRange& rng, - typename range_iterator::type middle) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - std::rotate(boost::begin(rng), middle, boost::end(rng)); - return rng; -} - } // namespace range using range::rotate; } // namespace boost diff --git a/include/boost/range/algorithm/rotate_copy.hpp b/include/boost/range/algorithm/rotate_copy.hpp index 9030f73..0409ac5 100755 --- a/include/boost/range/algorithm/rotate_copy.hpp +++ b/include/boost/range/algorithm/rotate_copy.hpp @@ -28,9 +28,9 @@ namespace boost /// \pre Rng meets the requirements for a Forward range template inline OutputIterator rotate_copy( - const ForwardRange& rng, - typename range_iterator::type middle, - OutputIterator target + const ForwardRange& rng, + BOOST_DEDUCED_TYPENAME range_iterator::type middle, + OutputIterator target ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); diff --git a/include/boost/range/algorithm/search.hpp b/include/boost/range/algorithm/search.hpp index 45d7ade..3f5134f 100755 --- a/include/boost/range/algorithm/search.hpp +++ b/include/boost/range/algorithm/search.hpp @@ -38,17 +38,6 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2) boost::begin(rng2),boost::end(rng2)); } -/// \overload -template< class ForwardRange1, class ForwardRange2 > -inline BOOST_DEDUCED_TYPENAME range_iterator::type -search(const ForwardRange1& rng1, const ForwardRange2& rng2) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - 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::type @@ -60,18 +49,6 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) boost::begin(rng2),boost::end(rng2),pred); } -/// \overload -template< class ForwardRange1, class ForwardRange2, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type -search(const ForwardRange1& rng1, const ForwardRange2& rng2, - BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return std::search(boost::begin(rng1),boost::end(rng1), - boost::begin(rng2),boost::end(rng2),pred); -} - // range_return overloads /// \overload @@ -87,19 +64,6 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2) rng1); } -/// \overload -template< range_return_value re, class ForwardRange1, class ForwardRange2 > -inline BOOST_DEDUCED_TYPENAME range_return::type -search(const ForwardRange1& rng1, const ForwardRange2& rng2) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return:: - 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 > @@ -114,21 +78,6 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) rng1); } -/// \overload -template< range_return_value re, class ForwardRange1, class ForwardRange2, - class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type -search(const ForwardRange1& rng1, const ForwardRange2& rng2, - BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return:: - pack(std::search(boost::begin(rng1),boost::end(rng1), - boost::begin(rng2),boost::end(rng2),pred), - rng1); -} - } // namespace range using range::search; } // namespace boost diff --git a/include/boost/range/algorithm/search_n.hpp b/include/boost/range/algorithm/search_n.hpp index cd0340b..dfbb17a 100755 --- a/include/boost/range/algorithm/search_n.hpp +++ b/include/boost/range/algorithm/search_n.hpp @@ -31,8 +31,8 @@ namespace boost /// \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::type +template< class ForwardRange, class Integer, class Value > +inline BOOST_DEDUCED_TYPENAME range_iterator::type search_n(ForwardRange& rng, Integer count, const Value& value) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); @@ -40,38 +40,13 @@ search_n(ForwardRange& rng, Integer count, const Value& value) } /// \overload -template< typename ForwardRange, typename Integer, typename Value > -inline typename range_iterator::type -search_n(const ForwardRange& rng, Integer count, const Value& value) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - 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::type +template< class ForwardRange, class Integer, class Value, + class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type search_n(ForwardRange& rng, Integer count, const Value& value, BinaryPredicate binary_pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::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::type -search_n(const ForwardRange& rng, Integer count, const Value& value, - BinaryPredicate binary_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); return std::search_n(boost::begin(rng), boost::end(rng), count, value, binary_pred); } @@ -79,9 +54,9 @@ search_n(const ForwardRange& rng, Integer count, const Value& value, // range_return overloads /// \overload -template< range_return_value re, typename ForwardRange, typename Integer, - typename Value > -inline typename range_return::type +template< range_return_value re, class ForwardRange, class Integer, + class Value > +inline BOOST_DEDUCED_TYPENAME range_return::type search_n(ForwardRange& rng, Integer count, const Value& value) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); @@ -92,52 +67,19 @@ search_n(ForwardRange& rng, Integer count, const Value& value) } /// \overload -template< range_return_value re, typename ForwardRange, typename Integer, - class Value > -inline typename range_return::type -search_n(const ForwardRange& rng, Integer count, const Value& value) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - return range_return:: - 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::type +template< range_return_value re, class ForwardRange, class Integer, + class Value, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type search_n(ForwardRange& rng, Integer count, const Value& value, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, - const Value&>)); return range_return:: 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::type -search_n(const ForwardRange& rng, Integer count, const Value& value, - BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, - const Value&>)); - return range_return:: - pack(std::search_n(boost::begin(rng), boost::end(rng), - count, value, pred), - rng); -} - } // namespace range using range::search_n; } // namespace boost diff --git a/include/boost/range/algorithm/sort.hpp b/include/boost/range/algorithm/sort.hpp index a160907..0c6e3b2 100755 --- a/include/boost/range/algorithm/sort.hpp +++ b/include/boost/range/algorithm/sort.hpp @@ -34,15 +34,6 @@ inline RandomAccessRange& sort(RandomAccessRange& rng) return rng; } -/// \overload -template -inline const RandomAccessRange& sort(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::sort(boost::begin(rng),boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred) @@ -52,15 +43,6 @@ inline RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred) return rng; } -/// \overload -template -inline const RandomAccessRange& sort(const RandomAccessRange& rng, BinaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::sort(boost::begin(rng), boost::end(rng), pred); - return rng; -} - } // namespace range using range::sort; } // namespace boost diff --git a/include/boost/range/algorithm/stable_partition.hpp b/include/boost/range/algorithm/stable_partition.hpp index 24febfc..aa003df 100755 --- a/include/boost/range/algorithm/stable_partition.hpp +++ b/include/boost/range/algorithm/stable_partition.hpp @@ -35,15 +35,6 @@ stable_partition(BidirectionalRange& rng, UnaryPredicate pred) return std::stable_partition(boost::begin(rng), boost::end(rng), pred); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_iterator::type -stable_partition(const BidirectionalRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - return std::stable_partition(boost::begin(rng),boost::end(rng),pred); -} - // range_return overloads template inline BOOST_DEDUCED_TYPENAME range_return::type @@ -55,17 +46,6 @@ stable_partition(BidirectionalRange& rng, UnaryPredicate pred) rng); } -/// \overload -template -inline BOOST_DEDUCED_TYPENAME range_return::type -stable_partition(const BidirectionalRange& rng, UnaryPredicate pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); - return range_return::pack( - std::stable_partition(boost::begin(rng),boost::end(rng),pred), - rng); -} - } // namespace range using range::stable_partition; } // namespace boost diff --git a/include/boost/range/algorithm/stable_sort.hpp b/include/boost/range/algorithm/stable_sort.hpp index d18da4d..6a27aa4 100755 --- a/include/boost/range/algorithm/stable_sort.hpp +++ b/include/boost/range/algorithm/stable_sort.hpp @@ -34,15 +34,6 @@ inline RandomAccessRange& stable_sort(RandomAccessRange& rng) return rng; } -/// \overload -template -inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::stable_sort(boost::begin(rng), boost::end(rng)); - return rng; -} - /// \overload template inline RandomAccessRange& stable_sort(RandomAccessRange& rng, BinaryPredicate sort_pred) @@ -52,15 +43,6 @@ inline RandomAccessRange& stable_sort(RandomAccessRange& rng, BinaryPredicate so return rng; } -/// \overload -template -inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng, BinaryPredicate sort_pred) -{ - BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); - std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred); - return rng; -} - } // namespace range using range::stable_sort; } // namespace boost diff --git a/include/boost/range/algorithm/swap_ranges.hpp b/include/boost/range/algorithm/swap_ranges.hpp index 1acee0d..5b8967a 100755 --- a/include/boost/range/algorithm/swap_ranges.hpp +++ b/include/boost/range/algorithm/swap_ranges.hpp @@ -22,7 +22,7 @@ namespace boost { namespace range_detail { - template + template void swap_ranges_impl(Iterator1 it1, Iterator1 last1, Iterator2 it2, Iterator2 last2, single_pass_traversal_tag, @@ -36,7 +36,7 @@ namespace boost } } - template + template void swap_ranges_impl(Iterator1 it1, Iterator1 last1, Iterator2 it2, Iterator2 last2, random_access_traversal_tag, @@ -47,13 +47,13 @@ namespace boost std::swap_ranges(it1, last1, it2); } - template + template void swap_ranges_impl(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2) { swap_ranges_impl(first1, last1, first2, last2, - typename iterator_traversal::type(), - typename iterator_traversal::type()); + BOOST_DEDUCED_TYPENAME iterator_traversal::type(), + BOOST_DEDUCED_TYPENAME iterator_traversal::type()); } } // namespace range_detail @@ -66,7 +66,7 @@ namespace boost /// /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept -template< typename SinglePassRange1, typename SinglePassRange2 > +template< class SinglePassRange1, class SinglePassRange2 > inline SinglePassRange2& swap_ranges(SinglePassRange1& range1, SinglePassRange2& range2) { diff --git a/include/boost/range/algorithm/unique.hpp b/include/boost/range/algorithm/unique.hpp index be6eaf9..b930c54 100755 --- a/include/boost/range/algorithm/unique.hpp +++ b/include/boost/range/algorithm/unique.hpp @@ -36,16 +36,6 @@ unique( ForwardRange& rng ) boost::end(rng)), rng ); } -/// \overload -template< range_return_value re, class ForwardRange > -inline BOOST_DEDUCED_TYPENAME range_return::type -unique( const ForwardRange& rng ) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return:: - 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::type @@ -56,16 +46,6 @@ unique( ForwardRange& rng, BinaryPredicate pred ) 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::type -unique( const ForwardRange& rng, BinaryPredicate pred ) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return range_return:: - pack(std::unique(boost::begin(rng), boost::end(rng), pred), - rng); -} /// \overload template< class ForwardRange > @@ -76,14 +56,6 @@ unique( ForwardRange& rng ) return ::boost::range::unique(rng); } /// \overload -template< class ForwardRange > -inline BOOST_DEDUCED_TYPENAME range_return::type -unique( const ForwardRange& rng ) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return ::boost::range::unique(rng); -} -/// \overload template< class ForwardRange, class BinaryPredicate > inline BOOST_DEDUCED_TYPENAME range_return::type unique( ForwardRange& rng, BinaryPredicate pred ) @@ -91,14 +63,6 @@ unique( ForwardRange& rng, BinaryPredicate pred ) BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return ::boost::range::unique(rng); } -/// \overload -template< class ForwardRange, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type -unique( const ForwardRange& rng, BinaryPredicate pred ) -{ - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); - return ::boost::range::unique(rng, pred); -} } // namespace range using range::unique; From 4830359a93aac33b58ed64fe7d8811c9d004a1c6 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Sat, 17 Apr 2010 21:02:28 +0000 Subject: [PATCH 15/26] Boost.Range corrected istream_range implementation. Added the missing istream_range unit test. Removed the untested and undocumented unbounded_range for this release. [SVN r61345] --- include/boost/range/istream_range.hpp | 23 +++++--- include/boost/range/unbounded_range.hpp | 73 ------------------------- test/Jamfile.v2 | 1 + test/istream_range.cpp | 51 +++++++++++++++++ 4 files changed, 66 insertions(+), 82 deletions(-) delete mode 100755 include/boost/range/unbounded_range.hpp create mode 100644 test/istream_range.cpp diff --git a/include/boost/range/istream_range.hpp b/include/boost/range/istream_range.hpp index fac17a4..f0e9ef4 100755 --- a/include/boost/range/istream_range.hpp +++ b/include/boost/range/istream_range.hpp @@ -16,19 +16,24 @@ */ #include +#include #include -#include +#include namespace boost { - template inline - range > - istream_range(std::basic_istream& in) - { - return range >( - std::istream_iterator(in), - std::istream_iterator()); - } + namespace range + { + template inline + iterator_range > + istream_range(std::basic_istream& in) + { + return iterator_range >( + std::istream_iterator(in), + std::istream_iterator()); + } + } // namespace range + using range::istream_range; } // namespace boost #endif // include guard diff --git a/include/boost/range/unbounded_range.hpp b/include/boost/range/unbounded_range.hpp deleted file mode 100755 index 570a0a4..0000000 --- a/include/boost/range/unbounded_range.hpp +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef BOOST_RANGE_UNBOUNDED_RANGE_HPP -#define BOOST_RANGE_UNBOUNDED_RANGE_HPP - -#include -#include - -namespace boost -{ - template< class Iter > - struct unbounded_iterator_range : iterator_range - { - explicit unbounded_iterator_range( Iter r ) - : iterator_range( r, r ) - { - // - // Remark: by storing the same iterator - // twice, we can still allow - // comparison to execute without leading to - // operations on singular iterators - // - } - - private: - - bool empty() const - { - return false; - } - // - // Hide members that are illegal to use. - // - /* - void end() const; - void size() const; - void empty() const; - void equal() const; - operator bool() const; - bool operator==( unbounded_iterator_range ); - bool operator!=( unbounded_iterator_range ); - template< class S > - void operator[]( S s ) const; - template< class D > - void advance_end( D d ) const; - void back() const; - */ - }; - - template< class Iter > - inline unbounded_iterator_range unbounded_range( Iter r ) - { - return unbounded_iterator_range(r); - } - - namespace detail - { - char is_unbounded_range( ... ); - template< class Iter > - long is_unbounded_range( const unbounded_iterator_range* ); - } - - template< class T > - struct is_unbounded_range - { - private: - static T* ptr_; - - public: - BOOST_STATIC_CONSTANT( bool, - value = sizeof(long) == sizeof(detail::is_unbounded_range(ptr_) ) ); - }; -} - -#endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 965e3cc..e555e7c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -128,6 +128,7 @@ test-suite range : [ range-test counting_range ] [ range-test extension_mechanism ] [ range-test irange ] + [ range-test istream_range ] [ range-test iterator_pair ] [ range-test iterator_range ] # [ range-test mfc : $(VC71_ROOT)/atlmfc/include ] diff --git a/test/istream_range.cpp b/test/istream_range.cpp new file mode 100644 index 0000000..b3e16db --- /dev/null +++ b/test/istream_range.cpp @@ -0,0 +1,51 @@ +// Boost.Range library +// +// Copyright Neil Groves 2010. 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/ +// +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + // Test an integer range with a step size of 1. + void test_istream_range() + { + std::stringstream s; + std::vector reference; + for (int i = 0; i < 10; ++i) + { + reference.push_back(i); + s << i << " "; + } + + std::vector target; + boost::push_back(target, boost::range::istream_range(s)); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target.begin(), target.end() ); + } + +} // namespace anonymous namespace + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.istream_range" ); + + test->add(BOOST_TEST_CASE( &test_istream_range )); + + return test; +} From a1cb3d979565e35a8eb784c3f86800c19c1746a9 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Sun, 18 Apr 2010 19:55:46 +0000 Subject: [PATCH 16/26] Boost.Range added the strided adaptor to the boost/range/adaptors.hpp [SVN r61378] --- include/boost/range/adaptors.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/range/adaptors.hpp b/include/boost/range/adaptors.hpp index a1fad4f..92062a9 100755 --- a/include/boost/range/adaptors.hpp +++ b/include/boost/range/adaptors.hpp @@ -22,8 +22,9 @@ #include #include #include +#include #include #include #include -#endif +#endif From 4641e2e69d1e327e2a0bca589e99e35857a8ed13 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 19 Apr 2010 11:45:27 +0000 Subject: [PATCH 17/26] Boost.Range - removed unnecessary code from the sliced adaptor. Added a unit test to test the use of a non-member function as a transform functor and composition of strided, sliced and transformed range adaptors. [SVN r61404] --- include/boost/range/adaptor/sliced.hpp | 19 -------- test/Jamfile.v2 | 1 + test/adaptor_test/strided2.cpp | 67 ++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 test/adaptor_test/strided2.cpp diff --git a/include/boost/range/adaptor/sliced.hpp b/include/boost/range/adaptor/sliced.hpp index eb506e0..5134a4c 100755 --- a/include/boost/range/adaptor/sliced.hpp +++ b/include/boost/range/adaptor/sliced.hpp @@ -38,17 +38,6 @@ namespace boost return boost::make_iterator_range( rng, t, u - boost::size(rng) ); } - template< class RandomAccessRange > - inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - slice( const RandomAccessRange& rng, std::size_t t, std::size_t u ) - { - BOOST_ASSERT( t <= u && "error in slice indices" ); - BOOST_ASSERT( static_cast(boost::size(rng)) >= u && - "second slice index out of bounds" ); - - return boost::make_iterator_range( rng, t, u - boost::size(rng) ); - } - template< class RandomAccessRange > inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > @@ -57,14 +46,6 @@ namespace boost return adaptors::slice( r, f.t, f.u ); } - template< class RandomAccessRange > - inline iterator_range< - BOOST_DEDUCED_TYPENAME range_iterator::type > - operator|( const RandomAccessRange& r, const sliced& f ) - { - return adaptors::slice( r, f.t, f.u ); - } - } // namespace adaptors } // namespace boost diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index e555e7c..2b2466f 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -42,6 +42,7 @@ test-suite range : [ range-test adaptor_test/reversed ] [ range-test adaptor_test/sliced ] [ range-test adaptor_test/strided ] + [ range-test adaptor_test/strided2 ] [ range-test adaptor_test/tokenized ] [ range-test adaptor_test/transformed ] [ range-test adaptor_test/uniqued ] diff --git a/test/adaptor_test/strided2.cpp b/test/adaptor_test/strided2.cpp new file mode 100644 index 0000000..4ac91f5 --- /dev/null +++ b/test/adaptor_test/strided2.cpp @@ -0,0 +1,67 @@ +// Boost.Range library +// +// Copyright Neil Groves 2010. 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/ +// + +// This test was added due to a report that the Range Adaptors: +// 1. Caused havoc when using namespace boost::adaptors was used +// 2. Did not work with non-member functions +// 3. The strided adaptor could not be composed with sliced +// +// None of these issues could be reproduced on GCC 4.4, but this +// work makes for useful additional test coverage since this +// uses chaining of adaptors and non-member functions whereas +// most of the tests avoid this use case. + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +namespace boost +{ + namespace + { + int times_two(int x) { return x * 2; } + + void strided_test2() + { + using namespace boost::adaptors; + using namespace boost::assign; + std::vector v; + boost::push_back(v, boost::irange(0,10)); + std::vector z; + boost::push_back(z, v | sliced(2,6) | strided(2) | transformed(×_two)); + std::vector reference; + reference += 4,8; + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + z.begin(), z.end() ); + } + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.adaptor.strided2" ); + + test->add( BOOST_TEST_CASE( &boost::strided_test2 ) ); + + return test; +} From f6c15771e2380ba8ddce38db6a95bf9050e5b53d Mon Sep 17 00:00:00 2001 From: Jeremiah Willcock Date: Tue, 20 Apr 2010 17:54:16 +0000 Subject: [PATCH 18/26] Fixed tab and no-newline-at-end-of-file issues from inspection report [SVN r61435] --- .../boost/range/adaptor/adjacent_filtered.hpp | 288 +++++++++--------- include/boost/range/adaptor/argument_fwd.hpp | 92 +++--- include/boost/range/adaptor/copied.hpp | 52 ++-- include/boost/range/adaptor/filtered.hpp | 134 ++++---- include/boost/range/adaptor/indexed.hpp | 128 ++++---- include/boost/range/adaptor/indirected.hpp | 96 +++--- include/boost/range/adaptor/map.hpp | 284 ++++++++--------- include/boost/range/adaptor/replaced.hpp | 160 +++++----- include/boost/range/adaptor/replaced_if.hpp | 184 +++++------ include/boost/range/adaptor/reversed.hpp | 132 ++++---- include/boost/range/adaptor/sliced.hpp | 30 +- include/boost/range/adaptor/strided.hpp | 226 +++++++------- include/boost/range/adaptor/tokenized.hpp | 214 ++++++------- include/boost/range/adaptor/transformed.hpp | 152 ++++----- include/boost/range/adaptor/uniqued.hpp | 126 ++++---- include/boost/range/algorithm/equal.hpp | 2 +- .../boost/range/algorithm/remove_copy_if.hpp | 2 +- .../boost/range/algorithm_ext/for_each.hpp | 78 ++--- include/boost/range/counting_range.hpp | 58 ++-- .../detail/demote_iterator_traversal_tag.hpp | 8 +- include/boost/range/join.hpp | 44 +-- include/boost/range/numeric.hpp | 102 +++---- include/boost/range/size_type.hpp | 2 +- .../adjacent_filtered_example.cpp | 2 +- test/adaptor_test/copied_example.cpp | 2 +- test/algorithm_test/find.cpp | 20 +- test/algorithm_test/find_end.cpp | 38 +-- test/algorithm_test/find_first_of.cpp | 38 +-- test/algorithm_test/find_if.cpp | 20 +- test/algorithm_test/for_each.cpp | 2 +- test/algorithm_test/lower_bound.cpp | 44 +-- test/algorithm_test/max_element.cpp | 34 +-- test/algorithm_test/min_element.cpp | 34 +-- test/algorithm_test/partition.cpp | 18 +- test/algorithm_test/stable_partition.cpp | 18 +- test/algorithm_test/unique.cpp | 34 +-- test/algorithm_test/upper_bound.cpp | 48 +-- test/counting_range.cpp | 2 +- test/iterator_range.cpp | 2 +- test/test_driver/range_return_test_driver.hpp | 30 +- 40 files changed, 1490 insertions(+), 1490 deletions(-) diff --git a/include/boost/range/adaptor/adjacent_filtered.hpp b/include/boost/range/adaptor/adjacent_filtered.hpp index 5f66711..c01f1c1 100644 --- a/include/boost/range/adaptor/adjacent_filtered.hpp +++ b/include/boost/range/adaptor/adjacent_filtered.hpp @@ -28,11 +28,11 @@ namespace boost { - namespace range_detail - { - template< class Iter, class Pred, bool default_pass > - class skip_iterator - : public boost::iterator_adaptor< + namespace range_detail + { + template< class Iter, class Pred, bool default_pass > + class skip_iterator + : public boost::iterator_adaptor< skip_iterator, Iter, BOOST_DEDUCED_TYPENAME std::iterator_traits::value_type, @@ -40,10 +40,10 @@ namespace boost BOOST_DEDUCED_TYPENAME std::iterator_traits::reference, BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type > - , private Pred - { - private: - typedef boost::iterator_adaptor< + , private Pred + { + private: + typedef boost::iterator_adaptor< skip_iterator, Iter, BOOST_DEDUCED_TYPENAME std::iterator_traits::value_type, @@ -52,9 +52,9 @@ namespace boost BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type > base_t; - public: + public: typedef Pred pred_t; - typedef Iter iter_t; + typedef Iter iter_t; skip_iterator() : m_last() {} @@ -66,169 +66,169 @@ namespace boost move_to_next_valid(); } - template - skip_iterator( const skip_iterator& other ) - : base_t(other.base()) - , pred_t(other) - , m_last(other.m_last) {} + template + skip_iterator( const skip_iterator& other ) + : base_t(other.base()) + , pred_t(other) + , m_last(other.m_last) {} void move_to_next_valid() - { - iter_t& it = this->base_reference(); - pred_t& bi_pred = *this; - if (it != m_last) - { - if (default_pass) - { - iter_t nxt = ::boost::next(it); - while (nxt != m_last && !bi_pred(*it, *nxt)) - { - ++it; - ++nxt; - } - } - else - { - iter_t nxt = ::boost::next(it); - for(; nxt != m_last; ++it, ++nxt) - { - if (bi_pred(*it, *nxt)) - { - break; - } - } - if (nxt == m_last) - { - it = m_last; - } - } - } - } + { + iter_t& it = this->base_reference(); + pred_t& bi_pred = *this; + if (it != m_last) + { + if (default_pass) + { + iter_t nxt = ::boost::next(it); + while (nxt != m_last && !bi_pred(*it, *nxt)) + { + ++it; + ++nxt; + } + } + else + { + iter_t nxt = ::boost::next(it); + for(; nxt != m_last; ++it, ++nxt) + { + if (bi_pred(*it, *nxt)) + { + break; + } + } + if (nxt == m_last) + { + it = m_last; + } + } + } + } - void increment() - { - iter_t& it = this->base_reference(); - BOOST_ASSERT( it != m_last ); - ++it; - move_to_next_valid(); - } + void increment() + { + iter_t& it = this->base_reference(); + BOOST_ASSERT( it != m_last ); + ++it; + move_to_next_valid(); + } iter_t m_last; - }; + }; - template< class P, class R, bool default_pass > - struct adjacent_filter_range - : iterator_range< skip_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type, - P, - default_pass + template< class P, class R, bool default_pass > + struct adjacent_filter_range + : iterator_range< skip_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type, + P, + default_pass > > - { - private: - typedef skip_iterator< + { + private: + typedef skip_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type, P, default_pass > - skip_iter; + skip_iter; - typedef iterator_range - base_range; + typedef iterator_range + base_range; - typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iterator; + typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iterator; - public: - adjacent_filter_range( const P& p, R& r ) - : base_range( skip_iter( boost::begin(r), boost::end(r), p), - skip_iter( boost::end(r), boost::end(r), p) ) - { - } - }; + public: + adjacent_filter_range( const P& p, R& r ) + : base_range( skip_iter( boost::begin(r), boost::end(r), p), + skip_iter( boost::end(r), boost::end(r), p) ) + { + } + }; - template< class T > - struct adjacent_holder : holder - { - adjacent_holder( T r ) : holder(r) - { } - }; + template< class T > + struct adjacent_holder : holder + { + adjacent_holder( T r ) : holder(r) + { } + }; - template< class T > - struct adjacent_excl_holder : holder - { - adjacent_excl_holder( T r ) : holder(r) - { } - }; + template< class T > + struct adjacent_excl_holder : holder + { + adjacent_excl_holder( T r ) : holder(r) + { } + }; - template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range - operator|( ForwardRng& r, - const adjacent_holder& f ) - { - return adjacent_filter_range( f.val, r ); - } + template< class ForwardRng, class BinPredicate > + inline adjacent_filter_range + operator|( ForwardRng& r, + const adjacent_holder& f ) + { + return adjacent_filter_range( f.val, r ); + } - template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range - operator|( const ForwardRng& r, - const adjacent_holder& f ) - { - return adjacent_filter_range( f.val, r ); - } + template< class ForwardRng, class BinPredicate > + inline adjacent_filter_range + operator|( const ForwardRng& r, + const adjacent_holder& f ) + { + return adjacent_filter_range( f.val, r ); + } - template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range - operator|( ForwardRng& r, - const adjacent_excl_holder& f ) - { - return adjacent_filter_range( f.val, r ); - } + template< class ForwardRng, class BinPredicate > + inline adjacent_filter_range + operator|( ForwardRng& r, + const adjacent_excl_holder& f ) + { + return adjacent_filter_range( f.val, r ); + } - template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range - operator|( const ForwardRng& r, - const adjacent_excl_holder& f ) - { - return adjacent_filter_range( f.val, r ); - } + template< class ForwardRng, class BinPredicate > + inline adjacent_filter_range + operator|( const ForwardRng& r, + const adjacent_excl_holder& f ) + { + return adjacent_filter_range( f.val, r ); + } - } // 'range_detail' + } // 'range_detail' - // Bring adjacent_filter_range into the boost namespace so that users of - // this library may specify the return type of the '|' operator and - // adjacent_filter() - using range_detail::adjacent_filter_range; + // Bring adjacent_filter_range into the boost namespace so that users of + // this library may specify the return type of the '|' operator and + // adjacent_filter() + using range_detail::adjacent_filter_range; - namespace adaptors - { - namespace - { - const range_detail::forwarder + namespace adaptors + { + namespace + { + const range_detail::forwarder adjacent_filtered = range_detail::forwarder(); - const range_detail::forwarder - adjacent_filtered_excl = - range_detail::forwarder(); - } + const range_detail::forwarder + adjacent_filtered_excl = + range_detail::forwarder(); + } - template - inline adjacent_filter_range - adjacent_filter(ForwardRng& rng, BinPredicate filter_pred) - { - return adjacent_filter_range(filter_pred, rng); - } + template + inline adjacent_filter_range + adjacent_filter(ForwardRng& rng, BinPredicate filter_pred) + { + return adjacent_filter_range(filter_pred, rng); + } - template - inline adjacent_filter_range - adjacent_filter(const ForwardRng& rng, BinPredicate filter_pred) - { - return adjacent_filter_range(filter_pred, rng); - } + template + inline adjacent_filter_range + adjacent_filter(const ForwardRng& rng, BinPredicate filter_pred) + { + return adjacent_filter_range(filter_pred, rng); + } - } // 'adaptors' + } // 'adaptors' } diff --git a/include/boost/range/adaptor/argument_fwd.hpp b/include/boost/range/adaptor/argument_fwd.hpp index 357056b..fbfd40c 100755 --- a/include/boost/range/adaptor/argument_fwd.hpp +++ b/include/boost/range/adaptor/argument_fwd.hpp @@ -20,57 +20,57 @@ namespace boost { - namespace range_detail - { - template< class T > - struct holder - { - T val; - holder( T t ) : val(t) - { } - }; + namespace range_detail + { + template< class T > + struct holder + { + T val; + holder( T t ) : val(t) + { } + }; - template< class T > - struct holder2 - { - T val1, val2; - holder2( T t, T u ) : val1(t), val2(u) - { } - }; - - template< template class Holder > - struct forwarder - { - template< class T > - Holder operator()( T t ) const - { - return Holder(t); - } - }; + template< class T > + struct holder2 + { + T val1, val2; + holder2( T t, T u ) : val1(t), val2(u) + { } + }; + + template< template class Holder > + struct forwarder + { + template< class T > + Holder operator()( T t ) const + { + return Holder(t); + } + }; - template< template class Holder > - struct forwarder2 - { - template< class T > - Holder operator()( T t, T u ) const - { - return Holder(t,u); - } - }; + template< template class Holder > + struct forwarder2 + { + template< class T > + Holder operator()( T t, T u ) const + { + return Holder(t,u); + } + }; - template< template class Holder > - struct forwarder2TU - { - template< class T, class U > - Holder operator()( T t, U u ) const - { - return Holder(t, u); - } - }; + template< template class Holder > + struct forwarder2TU + { + template< class T, class U > + Holder operator()( T t, U u ) const + { + return Holder(t, u); + } + }; - } - + } + } #ifdef BOOST_MSVC diff --git a/include/boost/range/adaptor/copied.hpp b/include/boost/range/adaptor/copied.hpp index 1862b5f..f4cf2d1 100755 --- a/include/boost/range/adaptor/copied.hpp +++ b/include/boost/range/adaptor/copied.hpp @@ -18,40 +18,40 @@ namespace boost { - namespace adaptors - { - struct copied - { - copied(std::size_t t_, std::size_t u_) + namespace adaptors + { + 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::type > - temp( adaptors::slice( r, f.t, f.u ) ); - return CopyableRandomAccessRng( temp.begin(), temp.end() ); - } + template< class CopyableRandomAccessRng > + inline CopyableRandomAccessRng + operator|( const CopyableRandomAccessRng& r, const copied& f ) + { + iterator_range< + BOOST_DEDUCED_TYPENAME range_iterator::type > + temp( adaptors::slice( r, f.t, f.u ) ); + return CopyableRandomAccessRng( temp.begin(), temp.end() ); + } - template - inline CopyableRandomAccessRange - copy(const CopyableRandomAccessRange& rng, std::size_t t, std::size_t u) - { - iterator_range< - BOOST_DEDUCED_TYPENAME range_iterator::type> temp( - adaptors::slice(rng, t, u)); + template + inline CopyableRandomAccessRange + copy(const CopyableRandomAccessRange& rng, std::size_t t, std::size_t u) + { + iterator_range< + BOOST_DEDUCED_TYPENAME range_iterator::type> temp( + adaptors::slice(rng, t, u)); return CopyableRandomAccessRange( temp.begin(), temp.end() ); - } - } // 'adaptors' + } + } // 'adaptors' } diff --git a/include/boost/range/adaptor/filtered.hpp b/include/boost/range/adaptor/filtered.hpp index 1bc4799..62888e7 100755 --- a/include/boost/range/adaptor/filtered.hpp +++ b/include/boost/range/adaptor/filtered.hpp @@ -17,84 +17,84 @@ namespace boost { - namespace range_detail - { - template< class P, class R > - struct filter_range : + namespace range_detail + { + template< class P, class R > + struct filter_range : boost::iterator_range< boost::filter_iterator< P, - BOOST_DEDUCED_TYPENAME range_iterator::type + BOOST_DEDUCED_TYPENAME range_iterator::type > > - { - private: - typedef boost::iterator_range< + { + private: + typedef boost::iterator_range< boost::filter_iterator< P, BOOST_DEDUCED_TYPENAME range_iterator::type > > base; - public: - 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) ) ) - { } - }; + public: + 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) ) ) + { } + }; - template< class T > - struct filter_holder : holder - { - filter_holder( T r ) : holder(r) - { } - }; + template< class T > + struct filter_holder : holder + { + filter_holder( T r ) : holder(r) + { } + }; - template< class InputRng, class Predicate > - inline filter_range - operator|( InputRng& r, - const filter_holder& f ) - { - return filter_range( f.val, r ); - } - - template< class InputRng, class Predicate > - inline filter_range - operator|( const InputRng& r, - const filter_holder& f ) - { - return filter_range( 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 filter() - using range_detail::filter_range; - - namespace adaptors - { - namespace - { - const range_detail::forwarder - filtered = - range_detail::forwarder(); - } - - template - inline filter_range - filter(InputRange& rng, Predicate filter_pred) - { - return range_detail::filter_range( filter_pred, rng ); - } - - template - inline filter_range - filter(const InputRange& rng, Predicate filter_pred) - { - return range_detail::filter_range( filter_pred, rng ); + template< class InputRng, class Predicate > + inline filter_range + operator|( InputRng& r, + const filter_holder& f ) + { + return filter_range( f.val, r ); } - } // 'adaptors' + + template< class InputRng, class Predicate > + inline filter_range + operator|( const InputRng& r, + const filter_holder& f ) + { + return filter_range( 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 filter() + using range_detail::filter_range; + + namespace adaptors + { + namespace + { + const range_detail::forwarder + filtered = + range_detail::forwarder(); + } + + template + inline filter_range + filter(InputRange& rng, Predicate filter_pred) + { + return range_detail::filter_range( filter_pred, rng ); + } + + template + inline filter_range + filter(const InputRange& rng, Predicate filter_pred) + { + return range_detail::filter_range( filter_pred, rng ); + } + } // 'adaptors' } diff --git a/include/boost/range/adaptor/indexed.hpp b/include/boost/range/adaptor/indexed.hpp index 7050185..5a523ce 100755 --- a/include/boost/range/adaptor/indexed.hpp +++ b/include/boost/range/adaptor/indexed.hpp @@ -40,56 +40,56 @@ namespace boost }; } - namespace range_detail - { - template< class Iter > - class indexed_iterator - : public boost::iterator_adaptor< indexed_iterator, Iter > - { - private: - typedef boost::iterator_adaptor< indexed_iterator, Iter > - base; + namespace range_detail + { + template< class Iter > + class indexed_iterator + : public boost::iterator_adaptor< indexed_iterator, Iter > + { + private: + typedef boost::iterator_adaptor< indexed_iterator, Iter > + base; - typedef BOOST_DEDUCED_TYPENAME base::difference_type index_type; + typedef BOOST_DEDUCED_TYPENAME base::difference_type index_type; - index_type m_index; + index_type m_index; - public: - explicit indexed_iterator( Iter i, index_type index ) - : base(i), m_index(index) - { - BOOST_ASSERT( m_index >= 0 && "Indexed Iterator out of bounds" ); - } + public: + explicit indexed_iterator( Iter i, index_type index ) + : base(i), m_index(index) + { + BOOST_ASSERT( m_index >= 0 && "Indexed Iterator out of bounds" ); + } - index_type index() const - { - return m_index; - } + index_type index() const + { + return m_index; + } - private: - friend class boost::iterator_core_access; + private: + friend class boost::iterator_core_access; - void increment() - { + void increment() + { ++m_index; ++(this->base_reference()); - } + } - void decrement() + void decrement() { BOOST_ASSERT( m_index > 0 && "Indexed Iterator out of bounds" ); --m_index; --(this->base_reference()); } - void advance( index_type n ) + void advance( index_type n ) { m_index += n; BOOST_ASSERT( m_index >= 0 && "Indexed Iterator out of bounds" ); this->base_reference() += n; } - }; + }; template< class Rng > struct indexed_range : @@ -107,45 +107,45 @@ namespace boost { } }; - } // 'range_detail' + } // 'range_detail' - // Make this available to users of this library. It will sometimes be - // required since it is the return type of operator '|' and - // index(). - using range_detail::indexed_range; + // Make this available to users of this library. It will sometimes be + // required since it is the return type of operator '|' and + // index(). + using range_detail::indexed_range; - namespace adaptors - { + namespace adaptors + { template< class SinglePassRange > - inline indexed_range - operator|( SinglePassRange& r, - const indexed& f ) - { - return indexed_range( f.val, r ); - } - - template< class SinglePassRange > - inline indexed_range - operator|( const SinglePassRange& r, - const indexed& f ) - { - return indexed_range( f.val, r ); - } - - template - inline indexed_range - index(SinglePassRange& rng, Index index_value) - { - return indexed_range(index_value, rng); - } - - template - inline indexed_range - index(const SinglePassRange& rng, Index index_value) - { - return indexed_range(index_value, rng); + inline indexed_range + operator|( SinglePassRange& r, + const indexed& f ) + { + return indexed_range( f.val, r ); } - } // 'adaptors' + + template< class SinglePassRange > + inline indexed_range + operator|( const SinglePassRange& r, + const indexed& f ) + { + return indexed_range( f.val, r ); + } + + template + inline indexed_range + index(SinglePassRange& rng, Index index_value) + { + return indexed_range(index_value, rng); + } + + template + inline indexed_range + index(const SinglePassRange& rng, Index index_value) + { + return indexed_range(index_value, rng); + } + } // 'adaptors' } diff --git a/include/boost/range/adaptor/indirected.hpp b/include/boost/range/adaptor/indirected.hpp index 5b13cfb..4abb3ec 100644 --- a/include/boost/range/adaptor/indirected.hpp +++ b/include/boost/range/adaptor/indirected.hpp @@ -16,72 +16,72 @@ namespace boost { - namespace range_detail - { - template< class R > - struct indirect_range : - public boost::iterator_range< + namespace range_detail + { + template< class R > + struct indirect_range : + public boost::iterator_range< boost::indirect_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type > > - { - private: - typedef boost::iterator_range< + { + private: + typedef boost::iterator_range< boost::indirect_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type > > - base; + base; - public: - explicit indirect_range( R& r ) + public: + explicit indirect_range( R& r ) : base( r ) - { } - }; + { } + }; - struct indirect_forwarder {}; + struct indirect_forwarder {}; - template< class InputRng > - inline indirect_range - operator|( InputRng& r, indirect_forwarder ) - { - return indirect_range( r ); - } + template< class InputRng > + inline indirect_range + operator|( InputRng& r, indirect_forwarder ) + { + return indirect_range( r ); + } - template< class InputRng > - inline indirect_range - operator|( const InputRng& r, indirect_forwarder ) - { - return indirect_range( r ); - } + template< class InputRng > + inline indirect_range + operator|( const InputRng& r, indirect_forwarder ) + { + return indirect_range( r ); + } - } // 'range_detail' + } // 'range_detail' - using range_detail::indirect_range; + using range_detail::indirect_range; - namespace adaptors - { - namespace - { - const range_detail::indirect_forwarder indirected = - range_detail::indirect_forwarder(); - } + namespace adaptors + { + namespace + { + const range_detail::indirect_forwarder indirected = + range_detail::indirect_forwarder(); + } - template - inline indirect_range - indirect(InputRange& rng) - { - return indirect_range(rng); - } + template + inline indirect_range + indirect(InputRange& rng) + { + return indirect_range(rng); + } - template - inline indirect_range - indirect(const InputRange& rng) - { - return indirect_range(rng); - } - } // 'adaptors' + template + inline indirect_range + indirect(const InputRange& rng) + { + return indirect_range(rng); + } + } // 'adaptors' } diff --git a/include/boost/range/adaptor/map.hpp b/include/boost/range/adaptor/map.hpp index f790e1a..a8a2c20 100755 --- a/include/boost/range/adaptor/map.hpp +++ b/include/boost/range/adaptor/map.hpp @@ -17,161 +17,161 @@ namespace boost { - namespace range_detail - { - struct map_keys_forwarder {}; - struct map_values_forwarder {}; + namespace range_detail + { + struct map_keys_forwarder {}; + struct map_values_forwarder {}; - template< class Map > - struct select_first - { - typedef BOOST_DEDUCED_TYPENAME Map::value_type pair_t; - typedef const BOOST_DEDUCED_TYPENAME pair_t::first_type& - result_type; + template< class Map > + struct select_first + { + typedef BOOST_DEDUCED_TYPENAME Map::value_type pair_t; + typedef const BOOST_DEDUCED_TYPENAME pair_t::first_type& + result_type; - result_type operator()( const pair_t& r ) const - { - return r.first; - } - }; + result_type operator()( const pair_t& r ) const + { + return r.first; + } + }; - template< class Map > - struct select_second_mutable - { - typedef BOOST_DEDUCED_TYPENAME Map::value_type pair_t; - typedef BOOST_DEDUCED_TYPENAME pair_t::second_type& result_type; + template< class Map > + struct select_second_mutable + { + typedef BOOST_DEDUCED_TYPENAME Map::value_type pair_t; + typedef BOOST_DEDUCED_TYPENAME pair_t::second_type& result_type; - result_type operator()( pair_t& r ) const - { - return r.second; - } - }; + result_type operator()( pair_t& r ) const + { + return r.second; + } + }; - template< class Map > - struct select_second_const - { - typedef BOOST_DEDUCED_TYPENAME Map::value_type pair_t; - typedef const BOOST_DEDUCED_TYPENAME pair_t::second_type& - result_type; - - result_type operator()( const pair_t& r ) const - { - return r.second; - } - }; - - template - class select_first_range - : public transform_range< - select_first, - const StdPairRng> - { - typedef transform_range, const StdPairRng> base; - public: - typedef select_first transform_fn_type; - typedef const StdPairRng source_range_type; + template< class Map > + struct select_second_const + { + typedef BOOST_DEDUCED_TYPENAME Map::value_type pair_t; + typedef const BOOST_DEDUCED_TYPENAME pair_t::second_type& + result_type; + + result_type operator()( const pair_t& r ) const + { + return r.second; + } + }; + + template + class select_first_range + : public transform_range< + select_first, + const StdPairRng> + { + typedef transform_range, const StdPairRng> base; + public: + typedef select_first transform_fn_type; + typedef const StdPairRng source_range_type; - select_first_range(transform_fn_type fn, source_range_type& rng) - : base(fn, rng) - { - } + select_first_range(transform_fn_type fn, source_range_type& rng) + : base(fn, rng) + { + } - select_first_range(const base& other) : base(other) {} - }; - - template - class select_second_mutable_range - : public transform_range< - select_second_mutable, - StdPairRng> - { - typedef transform_range, StdPairRng> base; - public: - typedef select_second_mutable transform_fn_type; - typedef StdPairRng source_range_type; + select_first_range(const base& other) : base(other) {} + }; + + template + class select_second_mutable_range + : public transform_range< + select_second_mutable, + StdPairRng> + { + typedef transform_range, StdPairRng> base; + public: + typedef select_second_mutable transform_fn_type; + typedef StdPairRng source_range_type; - select_second_mutable_range(transform_fn_type fn, source_range_type& rng) - : base(fn, rng) - { - } + select_second_mutable_range(transform_fn_type fn, source_range_type& rng) + : base(fn, rng) + { + } - select_second_mutable_range(const base& other) : base(other) {} - }; - - template - class select_second_const_range - : public transform_range< - select_second_const, - const StdPairRng> - { - typedef transform_range, const StdPairRng> base; - public: - typedef select_second_const transform_fn_type; - typedef const StdPairRng source_range_type; + select_second_mutable_range(const base& other) : base(other) {} + }; + + template + class select_second_const_range + : public transform_range< + select_second_const, + const StdPairRng> + { + typedef transform_range, const StdPairRng> base; + public: + typedef select_second_const transform_fn_type; + typedef const StdPairRng source_range_type; - select_second_const_range(transform_fn_type fn, source_range_type& rng) - : base(fn, rng) - { - } + select_second_const_range(transform_fn_type fn, source_range_type& rng) + : base(fn, rng) + { + } - select_second_const_range(const base& other) : base(other) {} - }; - - template< class StdPairRng > - inline select_first_range - operator|( const StdPairRng& r, map_keys_forwarder ) - { - return operator|( r, - boost::adaptors::transformed( select_first() ) ); - } + select_second_const_range(const base& other) : base(other) {} + }; + + template< class StdPairRng > + inline select_first_range + operator|( const StdPairRng& r, map_keys_forwarder ) + { + return operator|( r, + boost::adaptors::transformed( select_first() ) ); + } - template< class StdPairRng > - inline select_second_mutable_range - operator|( StdPairRng& r, map_values_forwarder ) - { - return operator|( r, - boost::adaptors::transformed( select_second_mutable() ) ); - } + template< class StdPairRng > + inline select_second_mutable_range + operator|( StdPairRng& r, map_values_forwarder ) + { + return operator|( r, + boost::adaptors::transformed( select_second_mutable() ) ); + } - template< class StdPairRng > - inline select_second_const_range - operator|( const StdPairRng& r, map_values_forwarder ) - { - return operator|( r, - boost::adaptors::transformed( select_second_const() ) ); - } - - } // 'range_detail' - - using range_detail::select_first_range; - using range_detail::select_second_mutable_range; - using range_detail::select_second_const_range; + template< class StdPairRng > + inline select_second_const_range + operator|( const StdPairRng& r, map_values_forwarder ) + { + return operator|( r, + boost::adaptors::transformed( select_second_const() ) ); + } + + } // 'range_detail' + + using range_detail::select_first_range; + using range_detail::select_second_mutable_range; + using range_detail::select_second_const_range; - namespace adaptors - { - namespace - { - const range_detail::map_keys_forwarder map_keys = - range_detail::map_keys_forwarder(); + namespace adaptors + { + namespace + { + const range_detail::map_keys_forwarder map_keys = + range_detail::map_keys_forwarder(); - const range_detail::map_values_forwarder map_values = - range_detail::map_values_forwarder(); - } - - template - inline select_first_range - keys(const StdPairRange& rng) - { - return select_first_range( - range_detail::select_first(), rng ); - } - - template - inline select_second_const_range - values(const StdPairRange& rng) - { - return select_second_const_range( - range_detail::select_second_const(), rng ); + const range_detail::map_values_forwarder map_values = + range_detail::map_values_forwarder(); + } + + template + inline select_first_range + keys(const StdPairRange& rng) + { + return select_first_range( + range_detail::select_first(), rng ); + } + + template + inline select_second_const_range + values(const StdPairRange& rng) + { + return select_second_const_range( + range_detail::select_second_const(), rng ); } template @@ -181,8 +181,8 @@ namespace boost return select_second_mutable_range( range_detail::select_second_mutable(), rng ); } - } // 'adaptors' - + } // 'adaptors' + } #endif diff --git a/include/boost/range/adaptor/replaced.hpp b/include/boost/range/adaptor/replaced.hpp index bdc0a2d..3c40918 100644 --- a/include/boost/range/adaptor/replaced.hpp +++ b/include/boost/range/adaptor/replaced.hpp @@ -22,99 +22,99 @@ namespace boost { - namespace range_detail - { - template< class Value > - class replace_value - { - public: - typedef const Value& result_type; - typedef const Value& first_argument_type; + namespace range_detail + { + template< class Value > + class replace_value + { + public: + typedef const Value& result_type; + typedef const Value& first_argument_type; - replace_value(const Value& from, const Value& to) - : m_from(from), m_to(to) - { - } + replace_value(const Value& from, const Value& to) + : m_from(from), m_to(to) + { + } - const Value& operator()(const Value& x) const - { - return (x == m_from) ? m_to : x; - } + const Value& operator()(const Value& x) const + { + return (x == m_from) ? m_to : x; + } - private: - Value m_from; - Value m_to; - }; + private: + Value m_from; + Value m_to; + }; - template< class R > - class replace_range : - public boost::iterator_range< - boost::transform_iterator< - replace_value< BOOST_DEDUCED_TYPENAME range_value::type >, - BOOST_DEDUCED_TYPENAME range_iterator::type > > - { - private: - typedef replace_value< BOOST_DEDUCED_TYPENAME range_value::type > Fn; + template< class R > + class replace_range : + public boost::iterator_range< + boost::transform_iterator< + replace_value< BOOST_DEDUCED_TYPENAME range_value::type >, + BOOST_DEDUCED_TYPENAME range_iterator::type > > + { + private: + typedef replace_value< BOOST_DEDUCED_TYPENAME range_value::type > Fn; - typedef boost::iterator_range< - boost::transform_iterator< - replace_value< BOOST_DEDUCED_TYPENAME range_value::type >, - BOOST_DEDUCED_TYPENAME range_iterator::type > > base_t; + typedef boost::iterator_range< + boost::transform_iterator< + replace_value< BOOST_DEDUCED_TYPENAME range_value::type >, + BOOST_DEDUCED_TYPENAME range_iterator::type > > base_t; - public: - typedef BOOST_DEDUCED_TYPENAME range_value::type value_type; + public: + typedef BOOST_DEDUCED_TYPENAME range_value::type value_type; - replace_range( R& r, value_type from, value_type to ) - : base_t( make_transform_iterator( boost::begin(r), Fn(from, to) ), - make_transform_iterator( boost::end(r), Fn(from, to) ) ) - { } - }; + replace_range( R& r, value_type from, value_type to ) + : base_t( make_transform_iterator( boost::begin(r), Fn(from, to) ), + make_transform_iterator( boost::end(r), Fn(from, to) ) ) + { } + }; - template< class T > - class replace_holder : public holder2 - { - public: - replace_holder( const T& from, const T& to ) - : holder2(from, to) - { } - private: - // not assignable - void operator=(const replace_holder&); - }; + template< class T > + class replace_holder : public holder2 + { + public: + replace_holder( const T& from, const T& to ) + : holder2(from, to) + { } + private: + // not assignable + void operator=(const replace_holder&); + }; - template< class InputRng > - inline replace_range - operator|( InputRng& r, - const replace_holder::type>& f ) - { - return replace_range(r, f.val1, f.val2); - } + template< class InputRng > + inline replace_range + operator|( InputRng& r, + const replace_holder::type>& f ) + { + return replace_range(r, f.val1, f.val2); + } - template< class InputRng > - inline replace_range - operator|( const InputRng& r, - const replace_holder::type>& f ) - { - return replace_range(r, f.val1, f.val2); - } - } // 'range_detail' + template< class InputRng > + inline replace_range + operator|( const InputRng& r, + const replace_holder::type>& f ) + { + return replace_range(r, f.val1, f.val2); + } + } // 'range_detail' using range_detail::replace_range; - namespace adaptors - { - namespace - { - const range_detail::forwarder2 - replaced = - range_detail::forwarder2(); - } + namespace adaptors + { + namespace + { + const range_detail::forwarder2 + replaced = + range_detail::forwarder2(); + } - template - inline replace_range - replace(InputRange& rng, - BOOST_DEDUCED_TYPENAME range_value::type from, - BOOST_DEDUCED_TYPENAME range_value::type to) + template + inline replace_range + replace(InputRange& rng, + BOOST_DEDUCED_TYPENAME range_value::type from, + BOOST_DEDUCED_TYPENAME range_value::type to) { return replace_range(rng, from, to); } @@ -128,7 +128,7 @@ namespace boost return replace_range(rng, from ,to); } - } // 'adaptors' + } // 'adaptors' } // 'boost' #endif // include guard diff --git a/include/boost/range/adaptor/replaced_if.hpp b/include/boost/range/adaptor/replaced_if.hpp index 22264a2..9353abd 100644 --- a/include/boost/range/adaptor/replaced_if.hpp +++ b/include/boost/range/adaptor/replaced_if.hpp @@ -22,115 +22,115 @@ namespace boost { - namespace range_detail - { - template< class Pred, class Value > - class replace_value_if - { - public: - typedef const Value& result_type; - typedef const Value& first_argument_type; + namespace range_detail + { + template< class Pred, class Value > + class replace_value_if + { + public: + typedef const Value& result_type; + typedef const Value& first_argument_type; - replace_value_if(const Pred& pred, const Value& to) - : m_pred(pred), m_to(to) - { - } + replace_value_if(const Pred& pred, const Value& to) + : m_pred(pred), m_to(to) + { + } - const Value& operator()(const Value& x) const - { - return m_pred(x) ? m_to : x; - } + const Value& operator()(const Value& x) const + { + return m_pred(x) ? m_to : x; + } - private: - Pred m_pred; - Value m_to; - }; + private: + Pred m_pred; + Value m_to; + }; - template< class Pred, class R > - class replace_if_range : - public boost::iterator_range< - boost::transform_iterator< - replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type >, - BOOST_DEDUCED_TYPENAME range_iterator::type > > - { - private: - typedef replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type > Fn; + template< class Pred, class R > + class replace_if_range : + public boost::iterator_range< + boost::transform_iterator< + replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type >, + BOOST_DEDUCED_TYPENAME range_iterator::type > > + { + private: + typedef replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type > Fn; - typedef boost::iterator_range< - boost::transform_iterator< - replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type >, - BOOST_DEDUCED_TYPENAME range_iterator::type > > base_t; + typedef boost::iterator_range< + boost::transform_iterator< + replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type >, + BOOST_DEDUCED_TYPENAME range_iterator::type > > base_t; - public: - typedef BOOST_DEDUCED_TYPENAME range_value::type value_type; + public: + typedef BOOST_DEDUCED_TYPENAME range_value::type value_type; - replace_if_range( R& r, const Pred& pred, value_type to ) - : base_t( make_transform_iterator( boost::begin(r), Fn(pred, to) ), - make_transform_iterator( boost::end(r), Fn(pred, to) ) ) - { } - }; + replace_if_range( R& r, const Pred& pred, value_type to ) + : base_t( make_transform_iterator( boost::begin(r), Fn(pred, to) ), + make_transform_iterator( boost::end(r), Fn(pred, to) ) ) + { } + }; - template< class Pred, class T > - class replace_if_holder - { - public: - replace_if_holder( const Pred& pred, const T& to ) - : m_pred(pred), m_to(to) - { } + template< class Pred, class T > + class replace_if_holder + { + public: + replace_if_holder( const Pred& pred, const T& to ) + : m_pred(pred), m_to(to) + { } - const Pred& pred() const { return m_pred; } - const T& to() const { return m_to; } + const Pred& pred() const { return m_pred; } + const T& to() const { return m_to; } - private: - Pred m_pred; - T m_to; - }; + private: + Pred m_pred; + T m_to; + }; - template< class Pred, class InputRng > - inline replace_if_range - operator|( InputRng& r, - const replace_if_holder::type>& f ) - { - return replace_if_range(r, f.pred(), f.to()); - } + template< class Pred, class InputRng > + inline replace_if_range + operator|( InputRng& r, + const replace_if_holder::type>& f ) + { + return replace_if_range(r, f.pred(), f.to()); + } - template< class Pred, class InputRng > - inline replace_if_range - operator|( const InputRng& r, - const replace_if_holder::type>& f ) - { - return replace_if_range(r, f.pred(), f.to()); - } - } // 'range_detail' + template< class Pred, class InputRng > + inline replace_if_range + operator|( const InputRng& r, + const replace_if_holder::type>& f ) + { + return replace_if_range(r, f.pred(), f.to()); + } + } // 'range_detail' using range_detail::replace_if_range; - namespace adaptors - { - namespace - { - const range_detail::forwarder2TU - replaced_if = - range_detail::forwarder2TU(); - } - - template - inline replace_if_range - replace_if(InputRange& rng, Pred pred, + namespace adaptors + { + namespace + { + const range_detail::forwarder2TU + replaced_if = + range_detail::forwarder2TU(); + } + + template + inline replace_if_range + replace_if(InputRange& rng, Pred pred, BOOST_DEDUCED_TYPENAME range_value::type to) - { - return range_detail::replace_if_range(rng, pred, to); - } + { + return range_detail::replace_if_range(rng, pred, to); + } - template - inline replace_if_range - replace_if(const InputRange& rng, Pred pred, - BOOST_DEDUCED_TYPENAME range_value::type to) - { - return range_detail::replace_if_range(rng, pred, to); - } - } // 'adaptors' - + template + inline replace_if_range + replace_if(const InputRange& rng, Pred pred, + BOOST_DEDUCED_TYPENAME range_value::type to) + { + return range_detail::replace_if_range(rng, pred, to); + } + } // 'adaptors' + } // 'boost' #endif // include guard diff --git a/include/boost/range/adaptor/reversed.hpp b/include/boost/range/adaptor/reversed.hpp index afe7517..229702b 100755 --- a/include/boost/range/adaptor/reversed.hpp +++ b/include/boost/range/adaptor/reversed.hpp @@ -16,75 +16,75 @@ namespace boost { - namespace range_detail - { - template< class R > - struct reverse_range : - public boost::iterator_range< - boost::reverse_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type - > - > - { - private: - typedef boost::iterator_range< - boost::reverse_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type - > - > - base; - - public: - typedef boost::reverse_iterator::type> iterator; + namespace range_detail + { + template< class R > + struct reverse_range : + public boost::iterator_range< + boost::reverse_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type + > + > + { + private: + typedef boost::iterator_range< + boost::reverse_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type + > + > + base; + + public: + typedef boost::reverse_iterator::type> iterator; - reverse_range( R& r ) - : base( iterator(boost::end(r)), iterator(boost::begin(r)) ) - { } - }; + reverse_range( R& r ) + : base( iterator(boost::end(r)), iterator(boost::begin(r)) ) + { } + }; - struct reverse_forwarder {}; - - template< class BidirectionalRng > - inline reverse_range - operator|( BidirectionalRng& r, reverse_forwarder ) - { - return reverse_range( r ); - } - - template< class BidirectionalRng > - inline reverse_range - operator|( const BidirectionalRng& r, reverse_forwarder ) - { - return reverse_range( r ); - } - - } // 'range_detail' - - using range_detail::reverse_range; - - namespace adaptors - { - namespace - { - const range_detail::reverse_forwarder reversed = - range_detail::reverse_forwarder(); - } - - template - inline reverse_range - reverse(BidirectionalRange& rng) - { - return reverse_range(rng); - } - - template - inline reverse_range - reverse(const BidirectionalRange& rng) - { - return reverse_range(rng); + struct reverse_forwarder {}; + + template< class BidirectionalRng > + inline reverse_range + operator|( BidirectionalRng& r, reverse_forwarder ) + { + return reverse_range( r ); } - } // 'adaptors' - + + template< class BidirectionalRng > + inline reverse_range + operator|( const BidirectionalRng& r, reverse_forwarder ) + { + return reverse_range( r ); + } + + } // 'range_detail' + + using range_detail::reverse_range; + + namespace adaptors + { + namespace + { + const range_detail::reverse_forwarder reversed = + range_detail::reverse_forwarder(); + } + + template + inline reverse_range + reverse(BidirectionalRange& rng) + { + return reverse_range(rng); + } + + template + inline reverse_range + reverse(const BidirectionalRange& rng) + { + return reverse_range(rng); + } + } // 'adaptors' + } // 'boost' #endif diff --git a/include/boost/range/adaptor/sliced.hpp b/include/boost/range/adaptor/sliced.hpp index 5134a4c..e5084d6 100755 --- a/include/boost/range/adaptor/sliced.hpp +++ b/include/boost/range/adaptor/sliced.hpp @@ -27,24 +27,24 @@ namespace boost std::size_t u; }; - template< class RandomAccessRange > - inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - slice( RandomAccessRange& rng, std::size_t t, std::size_t u ) - { - BOOST_ASSERT( t <= u && "error in slice indices" ); + template< class RandomAccessRange > + inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > + slice( RandomAccessRange& rng, std::size_t t, std::size_t u ) + { + BOOST_ASSERT( t <= u && "error in slice indices" ); BOOST_ASSERT( static_cast(boost::size(rng)) >= u && - "second slice index out of bounds" ); + "second slice index out of bounds" ); - return boost::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::type > - operator|( RandomAccessRange& r, const sliced& f ) - { - return adaptors::slice( r, f.t, f.u ); - } + template< class RandomAccessRange > + inline iterator_range< + BOOST_DEDUCED_TYPENAME range_iterator::type > + operator|( RandomAccessRange& r, const sliced& f ) + { + return adaptors::slice( r, f.t, f.u ); + } } // namespace adaptors } // namespace boost diff --git a/include/boost/range/adaptor/strided.hpp b/include/boost/range/adaptor/strided.hpp index 0c394b2..5f4c4fa 100755 --- a/include/boost/range/adaptor/strided.hpp +++ b/include/boost/range/adaptor/strided.hpp @@ -18,132 +18,132 @@ namespace boost { - namespace range_detail - { + namespace range_detail + { - template - class strided_iterator - : public iterator_adaptor< - strided_iterator, - BaseIterator> - { - friend class iterator_core_access; + template + class strided_iterator + : public iterator_adaptor< + strided_iterator, + BaseIterator> + { + friend class iterator_core_access; - typedef iterator_adaptor, BaseIterator> super_t; - - public: - typedef BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type difference_type; - - strided_iterator() : m_stride() { } - - strided_iterator(const strided_iterator& other) - : super_t(other), m_stride(other.m_stride) { } - - explicit strided_iterator(BaseIterator base_it, difference_type stride) - : super_t(base_it), m_stride(stride) { } - - strided_iterator& - operator=(const strided_iterator& other) - { - super_t::operator=(other); - - // Is the interoperation of the stride safe? - m_stride = other.m_stride; - return *this; - } - - void increment() { std::advance(this->base_reference(), m_stride); } - - void decrement() { std::advance(this->base_reference(), -m_stride); } - - void advance(difference_type n) { std::advance(this->base_reference(), n * m_stride); } - - difference_type - distance_to(const strided_iterator& other) const - { - return std::distance(this->base_reference(), other.base_reference()) / m_stride; - } + typedef iterator_adaptor, BaseIterator> super_t; + + public: + typedef BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type difference_type; + + strided_iterator() : m_stride() { } + + strided_iterator(const strided_iterator& other) + : super_t(other), m_stride(other.m_stride) { } + + explicit strided_iterator(BaseIterator base_it, difference_type stride) + : super_t(base_it), m_stride(stride) { } + + strided_iterator& + operator=(const strided_iterator& other) + { + super_t::operator=(other); + + // Is the interoperation of the stride safe? + m_stride = other.m_stride; + return *this; + } + + void increment() { std::advance(this->base_reference(), m_stride); } + + void decrement() { std::advance(this->base_reference(), -m_stride); } + + void advance(difference_type n) { std::advance(this->base_reference(), n * m_stride); } + + difference_type + distance_to(const strided_iterator& other) const + { + return std::distance(this->base_reference(), other.base_reference()) / m_stride; + } - // Using the compiler generated copy constructor and - // and assignment operator - - private: - difference_type m_stride; - }; - - template inline - strided_iterator - make_strided_iterator( - const BaseIterator& first, - BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type stride) - { - return strided_iterator(first, stride); - } + // Using the compiler generated copy constructor and + // and assignment operator + + private: + difference_type m_stride; + }; + + template inline + strided_iterator + make_strided_iterator( + const BaseIterator& first, + BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type stride) + { + return strided_iterator(first, stride); + } - template< class Rng > - class strided_range - : public iterator_range::type> > - { - typedef range_detail::strided_iterator::type> iter_type; - typedef iterator_range super_t; - public: - template< typename Difference > - strided_range(Difference stride, Rng& rng) + template< class Rng > + class strided_range + : public iterator_range::type> > + { + typedef range_detail::strided_iterator::type> iter_type; + typedef iterator_range super_t; + public: + template< typename Difference > + strided_range(Difference stride, Rng& rng) : super_t(make_strided_iterator(boost::begin(rng), stride), make_strided_iterator(boost::end(rng), stride)) - { - } - }; + { + } + }; - template - class strided_holder : public holder - { - public: - strided_holder(Difference value) : holder(value) {} - }; + template + class strided_holder : public holder + { + public: + strided_holder(Difference value) : holder(value) {} + }; - template - inline strided_range - operator|(Rng& rng, const strided_holder& stride) - { - return strided_range(stride.val, rng); - } + template + inline strided_range + operator|(Rng& rng, const strided_holder& stride) + { + return strided_range(stride.val, rng); + } - template - inline strided_range - operator|(const Rng& rng, const strided_holder& stride) - { - return strided_range(stride.val, rng); - } + template + inline strided_range + operator|(const Rng& rng, const strided_holder& stride) + { + return strided_range(stride.val, rng); + } - } // namespace range_detail - - using range_detail::strided_range; + } // namespace range_detail + + using range_detail::strided_range; - namespace adaptors - { - - namespace - { - const range_detail::forwarder - strided = range_detail::forwarder(); - } - - template - inline strided_range - stride(Range& rng, Difference step) - { - return strided_range(step, rng); - } - - template - inline strided_range - stride(const Range& rng, Difference step) - { - return strided_range(step, rng); + namespace adaptors + { + + namespace + { + const range_detail::forwarder + strided = range_detail::forwarder(); } - } // namespace 'adaptors' + template + inline strided_range + stride(Range& rng, Difference step) + { + return strided_range(step, rng); + } + + template + inline strided_range + stride(const Range& rng, Difference step) + { + return strided_range(step, rng); + } + + } // namespace 'adaptors' } // namespace 'boost' #endif diff --git a/include/boost/range/adaptor/tokenized.hpp b/include/boost/range/adaptor/tokenized.hpp index c81d515..6b6a6fa 100755 --- a/include/boost/range/adaptor/tokenized.hpp +++ b/include/boost/range/adaptor/tokenized.hpp @@ -16,122 +16,122 @@ namespace boost { - namespace range_detail - { + namespace range_detail + { - template< class R > - struct token_range : - public boost::iterator_range< - boost::regex_token_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type - > - > - { - private: - typedef - boost::regex_token_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type - > - regex_iter; - - typedef BOOST_DEDUCED_TYPENAME regex_iter::regex_type - regex_type; - - typedef boost::iterator_range - base; + template< class R > + struct token_range : + public boost::iterator_range< + boost::regex_token_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type + > + > + { + private: + typedef + boost::regex_token_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type + > + regex_iter; + + typedef BOOST_DEDUCED_TYPENAME regex_iter::regex_type + regex_type; + + typedef boost::iterator_range + base; - public: - template< class Regex, class Submatch, class Flag > - token_range( R& r, const Regex& re, const Submatch& sub, Flag f ) - : base( regex_iter( boost::begin(r), boost::end(r), - regex_type(re), sub, f ), - regex_iter() ) - { } - }; + public: + template< class Regex, class Submatch, class Flag > + token_range( R& r, const Regex& re, const Submatch& sub, Flag f ) + : base( regex_iter( boost::begin(r), boost::end(r), + regex_type(re), sub, f ), + regex_iter() ) + { } + }; - template< class T, class U, class V > - struct regex_holder - { - const T& re; - const U& sub; - V f; + template< class T, class U, class V > + struct regex_holder + { + const T& re; + const U& sub; + V f; - regex_holder( const T& rex, const U& subm, V flag ) : - re(rex), sub(subm), f(flag) - { } - private: - // Not assignable - void operator=(const regex_holder&); - }; + regex_holder( const T& rex, const U& subm, V flag ) : + re(rex), sub(subm), f(flag) + { } + private: + // Not assignable + void operator=(const regex_holder&); + }; - struct regex_forwarder - { - template< class Regex > - regex_holder - operator()( const Regex& re, - int submatch = 0, - regex_constants::match_flag_type f = - regex_constants::match_default ) const - { - return regex_holder( re, submatch, f ); - } - - template< class Regex, class Submatch > - regex_holder - operator()( const Regex& re, - const Submatch& sub, - regex_constants::match_flag_type f = - regex_constants::match_default ) const - { - return regex_holder( re, sub, f ); - } - }; - - template< class BidirectionalRng, class R, class S, class F > - inline token_range - operator|( BidirectionalRng& r, - const regex_holder& f ) - { - return token_range( r, f.re, f.sub, f.f ); - } + struct regex_forwarder + { + template< class Regex > + regex_holder + operator()( const Regex& re, + int submatch = 0, + regex_constants::match_flag_type f = + regex_constants::match_default ) const + { + return regex_holder( re, submatch, f ); + } + + template< class Regex, class Submatch > + regex_holder + operator()( const Regex& re, + const Submatch& sub, + regex_constants::match_flag_type f = + regex_constants::match_default ) const + { + return regex_holder( re, sub, f ); + } + }; + + template< class BidirectionalRng, class R, class S, class F > + inline token_range + operator|( BidirectionalRng& r, + const regex_holder& f ) + { + return token_range( r, f.re, f.sub, f.f ); + } - template< class BidirectionalRng, class R, class S, class F > - inline token_range - operator|( const BidirectionalRng& r, - const regex_holder& f ) - { - return token_range( r, f.re, f.sub, f.f ); - } - - } // 'range_detail' + template< class BidirectionalRng, class R, class S, class F > + inline token_range + operator|( const BidirectionalRng& r, + const regex_holder& f ) + { + return token_range( r, f.re, f.sub, f.f ); + } + + } // 'range_detail' using range_detail::token_range; - namespace adaptors - { - namespace - { - const range_detail::regex_forwarder tokenized = - range_detail::regex_forwarder(); - } - - template - inline token_range - tokenize(BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f) - { - return token_range(rng, reg, sub, f); - } - - template - inline token_range - tokenize(const BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f) - { - return token_range(rng, reg, sub, f); - } - } // 'adaptors' - + namespace adaptors + { + namespace + { + const range_detail::regex_forwarder tokenized = + range_detail::regex_forwarder(); + } + + template + inline token_range + tokenize(BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f) + { + return token_range(rng, reg, sub, f); + } + + template + inline token_range + tokenize(const BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f) + { + return token_range(rng, reg, sub, f); + } + } // 'adaptors' + } #endif diff --git a/include/boost/range/adaptor/transformed.hpp b/include/boost/range/adaptor/transformed.hpp index 0eeaee7..00297ca 100755 --- a/include/boost/range/adaptor/transformed.hpp +++ b/include/boost/range/adaptor/transformed.hpp @@ -17,87 +17,87 @@ namespace boost { - namespace range_detail - { + namespace range_detail + { - template< class F, class R > - struct transform_range : - public boost::iterator_range< - boost::transform_iterator< F, - BOOST_DEDUCED_TYPENAME range_iterator::type - > - > - { - private: - typedef boost::iterator_range< - boost::transform_iterator< F, - BOOST_DEDUCED_TYPENAME range_iterator::type - > - > - base; + template< class F, class R > + struct transform_range : + public boost::iterator_range< + boost::transform_iterator< F, + BOOST_DEDUCED_TYPENAME range_iterator::type + > + > + { + private: + typedef boost::iterator_range< + boost::transform_iterator< F, + BOOST_DEDUCED_TYPENAME range_iterator::type + > + > + base; - public: - typedef F transform_fn_type; - typedef R source_range_type; - - transform_range( F f, R& r ) - : base( make_transform_iterator( boost::begin(r), f ), - make_transform_iterator( boost::end(r), f ) ) - - { } - }; + public: + typedef F transform_fn_type; + typedef R source_range_type; + + transform_range( F f, R& r ) + : base( make_transform_iterator( boost::begin(r), f ), + make_transform_iterator( boost::end(r), f ) ) + + { } + }; - template< class T > - struct transform_holder : holder - { - transform_holder( T r ) : holder(r) - { } - }; - - template< class InputRng, class UnaryFunction > - inline transform_range - operator|( InputRng& r, - const transform_holder& f ) - { - return transform_range( f.val, r ); - } - - template< class InputRng, class UnaryFunction > - inline transform_range - operator|( const InputRng& r, - const transform_holder& f ) - { - return transform_range( f.val, r ); - } - - } // 'range_detail' + template< class T > + struct transform_holder : holder + { + transform_holder( T r ) : holder(r) + { } + }; + + template< class InputRng, class UnaryFunction > + inline transform_range + operator|( InputRng& r, + const transform_holder& f ) + { + return transform_range( f.val, r ); + } + + template< class InputRng, class UnaryFunction > + inline transform_range + operator|( const InputRng& r, + const transform_holder& f ) + { + return transform_range( f.val, r ); + } + + } // 'range_detail' - using range_detail::transform_range; - - namespace adaptors - { - namespace - { - const range_detail::forwarder - transformed = + using range_detail::transform_range; + + namespace adaptors + { + namespace + { + const range_detail::forwarder + transformed = range_detail::forwarder(); - } - - template - inline transform_range - transform(InputRange& rng, UnaryFunction fn) - { - return transform_range(fn, rng); - } - - template - inline transform_range - transform(const InputRange& rng, UnaryFunction fn) - { - return transform_range(fn, rng); - } - } // 'adaptors' - + } + + template + inline transform_range + transform(InputRange& rng, UnaryFunction fn) + { + return transform_range(fn, rng); + } + + template + inline transform_range + transform(const InputRange& rng, UnaryFunction fn) + { + return transform_range(fn, rng); + } + } // 'adaptors' + } #endif diff --git a/include/boost/range/adaptor/uniqued.hpp b/include/boost/range/adaptor/uniqued.hpp index ddaf3fe..ad6f7f4 100755 --- a/include/boost/range/adaptor/uniqued.hpp +++ b/include/boost/range/adaptor/uniqued.hpp @@ -16,74 +16,74 @@ namespace boost { - namespace range_detail - { - struct unique_forwarder { }; + namespace range_detail + { + struct unique_forwarder { }; - struct unique_not_equal_to - { - typedef bool result_type; + struct unique_not_equal_to + { + typedef bool result_type; - template< class T > - bool operator()( const T& l, const T& r ) const - { - return !(l == r); - } - }; + template< class T > + bool operator()( const T& l, const T& r ) const + { + return !(l == r); + } + }; - template - class unique_range : public adjacent_filter_range - { - typedef adjacent_filter_range base; - public: - explicit unique_range(ForwardRng& rng) - : base(unique_not_equal_to(), rng) - { - } - }; + template + class unique_range : public adjacent_filter_range + { + typedef adjacent_filter_range base; + public: + explicit unique_range(ForwardRng& rng) + : base(unique_not_equal_to(), rng) + { + } + }; - template< class ForwardRng > - inline unique_range - operator|( ForwardRng& r, - unique_forwarder ) - { - return unique_range(r); - } - - template< class ForwardRng > - inline unique_range - operator|( const ForwardRng& r, - unique_forwarder ) - { - return unique_range(r); - } - - } // 'range_detail' - - using range_detail::unique_range; - - namespace adaptors - { - namespace - { - const range_detail::unique_forwarder uniqued = - range_detail::unique_forwarder(); - } - - template - inline unique_range - unique(ForwardRange& rng) - { - return unique_range(rng); - } - - template - inline unique_range - unique(const ForwardRange& rng) - { - return unique_range(rng); + template< class ForwardRng > + inline unique_range + operator|( ForwardRng& r, + unique_forwarder ) + { + return unique_range(r); } - } // 'adaptors' + + template< class ForwardRng > + inline unique_range + operator|( const ForwardRng& r, + unique_forwarder ) + { + return unique_range(r); + } + + } // 'range_detail' + + using range_detail::unique_range; + + namespace adaptors + { + namespace + { + const range_detail::unique_forwarder uniqued = + range_detail::unique_forwarder(); + } + + template + inline unique_range + unique(ForwardRange& rng) + { + return unique_range(rng); + } + + template + inline unique_range + unique(const ForwardRange& rng) + { + return unique_range(rng); + } + } // 'adaptors' } diff --git a/include/boost/range/algorithm/equal.hpp b/include/boost/range/algorithm/equal.hpp index e210ef5..7226440 100755 --- a/include/boost/range/algorithm/equal.hpp +++ b/include/boost/range/algorithm/equal.hpp @@ -20,7 +20,7 @@ namespace boost { // An implementation of equality comparison that is optimized for iterator // traversal categories less than RandomAccessTraversal. - template< class SinglePassTraversalReadableIterator1, + template< class SinglePassTraversalReadableIterator1, class SinglePassTraversalReadableIterator2, class IteratorCategoryTag1, class IteratorCategoryTag2 > diff --git a/include/boost/range/algorithm/remove_copy_if.hpp b/include/boost/range/algorithm/remove_copy_if.hpp index 665b359..791a38f 100755 --- a/include/boost/range/algorithm/remove_copy_if.hpp +++ b/include/boost/range/algorithm/remove_copy_if.hpp @@ -31,7 +31,7 @@ namespace boost remove_copy_if(SinglePassRange& rng, OutputIterator out_it, Predicate pred) { boost::function_requires< SinglePassRangeConcept >(); - return std::remove_copy_if(boost::begin(rng), boost::end(rng), out_it, pred); + return std::remove_copy_if(boost::begin(rng), boost::end(rng), out_it, pred); } } diff --git a/include/boost/range/algorithm_ext/for_each.hpp b/include/boost/range/algorithm_ext/for_each.hpp index 6a3b35c..a470e2b 100755 --- a/include/boost/range/algorithm_ext/for_each.hpp +++ b/include/boost/range/algorithm_ext/for_each.hpp @@ -19,55 +19,55 @@ namespace boost { - namespace range_detail - { - template - inline Fn2 for_each_impl(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - Fn2 fn) - { - for (; first1 != last1 && first2 != last2; ++first1, ++first2) - { - fn(*first1, *first2); - } - return fn; - } - } + namespace range_detail + { + template + inline Fn2 for_each_impl(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + Fn2 fn) + { + for (; first1 != last1 && first2 != last2; ++first1, ++first2) + { + fn(*first1, *first2); + } + return fn; + } + } - namespace range - { - template - inline Fn2 for_each(const SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn) - { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + namespace range + { + template + inline Fn2 for_each(const SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn) + { + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return ::boost::range_detail::for_each_impl( + return ::boost::range_detail::for_each_impl( ::boost::begin(rng1), ::boost::end(rng1), ::boost::begin(rng2), ::boost::end(rng2), fn); - } + } - template - inline Fn2 for_each(const SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn) - { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + template + inline Fn2 for_each(const SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn) + { + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return ::boost::range_detail::for_each_impl( + return ::boost::range_detail::for_each_impl( ::boost::begin(rng1), ::boost::end(rng1), ::boost::begin(rng2), ::boost::end(rng2), fn); - } + } - template - inline Fn2 for_each(SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn) - { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + template + inline Fn2 for_each(SinglePassRange1& rng1, const SinglePassRange2& rng2, Fn2 fn) + { + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return ::boost::range_detail::for_each_impl( + return ::boost::range_detail::for_each_impl( ::boost::begin(rng1), ::boost::end(rng1), ::boost::begin(rng2), ::boost::end(rng2), fn); - } + } template inline Fn2 for_each(SinglePassRange1& rng1, SinglePassRange2& rng2, Fn2 fn) @@ -79,8 +79,8 @@ namespace boost ::boost::begin(rng1), ::boost::end(rng1), ::boost::begin(rng2), ::boost::end(rng2), fn); } - } // namespace range - using range::for_each; + } // namespace range + using range::for_each; } // namespace boost #endif // include guard diff --git a/include/boost/range/counting_range.hpp b/include/boost/range/counting_range.hpp index c1ca5ec..bf22f7c 100755 --- a/include/boost/range/counting_range.hpp +++ b/include/boost/range/counting_range.hpp @@ -25,41 +25,41 @@ namespace boost { - template - inline iterator_range > - counting_range(Value first, Value last) - { - typedef counting_iterator counting_iterator_t; - typedef iterator_range result_t; - return result_t(counting_iterator_t(first), - counting_iterator_t(last)); - } + template + inline iterator_range > + counting_range(Value first, Value last) + { + typedef counting_iterator counting_iterator_t; + typedef iterator_range result_t; + return result_t(counting_iterator_t(first), + counting_iterator_t(last)); + } - template - inline iterator_range::type> > - counting_range(const Range& rng) - { - typedef counting_iterator::type> counting_iterator_t; - typedef iterator_range result_t; - return boost::empty(rng) - ? result_t() - : result_t( + template + inline iterator_range::type> > + counting_range(const Range& rng) + { + typedef counting_iterator::type> counting_iterator_t; + typedef iterator_range result_t; + return boost::empty(rng) + ? result_t() + : result_t( counting_iterator_t(*boost::begin(rng)), counting_iterator_t(*boost::prior(boost::end(rng)))); - } + } - template - inline iterator_range::type> > - counting_range(Range& rng) - { - typedef counting_iterator::type> counting_iterator_t; - typedef iterator_range result_t; - return boost::empty(rng) - ? result_t() - : result_t( + template + inline iterator_range::type> > + counting_range(Range& rng) + { + typedef counting_iterator::type> counting_iterator_t; + typedef iterator_range result_t; + return boost::empty(rng) + ? result_t() + : result_t( counting_iterator_t(*boost::begin(rng)), counting_iterator_t(*boost::prior(boost::end(rng)))); - } + } } // namespace boost #if BOOST_MSVC >= 1400 diff --git a/include/boost/range/detail/demote_iterator_traversal_tag.hpp b/include/boost/range/detail/demote_iterator_traversal_tag.hpp index 4351c85..5d77678 100755 --- a/include/boost/range/detail/demote_iterator_traversal_tag.hpp +++ b/include/boost/range/detail/demote_iterator_traversal_tag.hpp @@ -15,8 +15,8 @@ namespace boost { - namespace range_detail - { + namespace range_detail + { template struct demote_iterator_traversal_tag @@ -26,7 +26,7 @@ struct demote_iterator_traversal_tag #define BOOST_DEMOTE_TRAVERSAL_TAG( Tag1, Tag2, ResultTag ) \ template<> struct demote_iterator_traversal_tag< Tag1 , Tag2 > \ { \ - typedef ResultTag type; \ + typedef ResultTag type; \ }; BOOST_DEMOTE_TRAVERSAL_TAG( no_traversal_tag, no_traversal_tag, no_traversal_tag ) @@ -73,7 +73,7 @@ BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, random_access_traversal #undef BOOST_DEMOTE_TRAVERSAL_TAG - } // namespace range_detail + } // namespace range_detail } // namespace boost #endif // include guard diff --git a/include/boost/range/join.hpp b/include/boost/range/join.hpp index 374df86..518026c 100644 --- a/include/boost/range/join.hpp +++ b/include/boost/range/join.hpp @@ -21,46 +21,46 @@ namespace boost template iterator_range::type, - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME add_const< - BOOST_DEDUCED_TYPENAME range_value::type>::type> + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME add_const< + BOOST_DEDUCED_TYPENAME range_value::type>::type> > join(const SinglePassRange1& r1, const SinglePassRange2& r2) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - typedef range_detail::join_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME add_const< - BOOST_DEDUCED_TYPENAME range_value::type>::type> iterator_t; + typedef range_detail::join_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME add_const< + BOOST_DEDUCED_TYPENAME range_value::type>::type> iterator_t; - return iterator_range( - iterator_t(r1, r2, range_detail::join_iterator_begin_tag()), - iterator_t(r1, r2, range_detail::join_iterator_end_tag())); + return iterator_range( + iterator_t(r1, r2, range_detail::join_iterator_begin_tag()), + iterator_t(r1, r2, range_detail::join_iterator_end_tag())); } template iterator_range::type, - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_value::type> + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_value::type> > join(SinglePassRange1& r1, SinglePassRange2& r2) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - typedef range_detail::join_iterator< - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_value::type> iterator_t; + typedef range_detail::join_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_value::type> iterator_t; - return iterator_range( - iterator_t(r1, r2, range_detail::join_iterator_begin_tag()), - iterator_t(r1, r2, range_detail::join_iterator_end_tag())); + return iterator_range( + iterator_t(r1, r2, range_detail::join_iterator_begin_tag()), + iterator_t(r1, r2, range_detail::join_iterator_end_tag())); } } // namespace boost diff --git a/include/boost/range/numeric.hpp b/include/boost/range/numeric.hpp index 17e2cfe..0a76151 100755 --- a/include/boost/range/numeric.hpp +++ b/include/boost/range/numeric.hpp @@ -20,7 +20,7 @@ // http://www.boost.org/LICENSE_1_0.txt) #if defined(_MSC_VER) && _MSC_VER >= 1000 - #pragma once + #pragma once #endif #ifndef BOOST_RANGE_NUMERIC_HPP @@ -36,82 +36,82 @@ namespace boost { - template< class SinglePassRange, class Value > - inline Value accumulate( const SinglePassRange& rng, Value init ) - { + template< class SinglePassRange, class Value > + inline Value accumulate( const SinglePassRange& rng, Value init ) + { boost::function_requires< SinglePassRangeConcept >(); - return std::accumulate( boost::begin(rng), boost::end(rng), init ); - } + return std::accumulate( boost::begin(rng), boost::end(rng), init ); + } - template< class SinglePassRange, class Value, class BinaryOperation > - inline Value accumulate( const SinglePassRange& rng, Value init, BinaryOperation op ) - { + template< class SinglePassRange, class Value, class BinaryOperation > + inline Value accumulate( const SinglePassRange& rng, Value init, BinaryOperation op ) + { boost::function_requires< SinglePassRangeConcept >(); - return std::accumulate( boost::begin(rng), boost::end(rng), init, op ); - } + return std::accumulate( boost::begin(rng), boost::end(rng), init, op ); + } - template< class SinglePassRange1, class SinglePassRange2, class Value > - inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, Value init ) - { + template< class SinglePassRange1, class SinglePassRange2, class Value > + inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, Value init ) + { boost::function_requires< SinglePassRangeConcept >(); boost::function_requires< SinglePassRangeConcept >(); BOOST_ASSERT( boost::distance(rng2) >= boost::distance(rng1) ); - return std::inner_product( boost::begin(rng1), boost::end(rng1), + return std::inner_product( boost::begin(rng1), boost::end(rng1), boost::begin(rng2), init ); - } + } - template< class SinglePassRange1, + template< class SinglePassRange1, class SinglePassRange2, class Value, - class BinaryOperation1, class BinaryOperation2 > - inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, + class BinaryOperation1, class BinaryOperation2 > + inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, Value init, - BinaryOperation1 op1, BinaryOperation2 op2 ) - { + BinaryOperation1 op1, BinaryOperation2 op2 ) + { boost::function_requires< SinglePassRangeConcept >(); boost::function_requires< SinglePassRangeConcept >(); BOOST_ASSERT( boost::distance(rng2) >= boost::distance(rng1) ); - return std::inner_product( boost::begin(rng1), boost::end(rng1), + return std::inner_product( boost::begin(rng1), boost::end(rng1), boost::begin(rng2), init, op1, op2 ); - } + } - template< class SinglePassRange, class OutputIterator > - inline OutputIterator partial_sum ( const SinglePassRange& rng, - OutputIterator result ) - { + template< class SinglePassRange, class OutputIterator > + inline OutputIterator partial_sum ( const SinglePassRange& rng, + OutputIterator result ) + { boost::function_requires< SinglePassRangeConcept >(); - return std::partial_sum( boost::begin(rng), boost::end(rng), result ); - } + return std::partial_sum( boost::begin(rng), boost::end(rng), result ); + } - template< class SinglePassRange, class OutputIterator, class BinaryOperation > - inline OutputIterator partial_sum ( const SinglePassRange& rng, OutputIterator result, - BinaryOperation op ) - { + template< class SinglePassRange, class OutputIterator, class BinaryOperation > + inline OutputIterator partial_sum ( const SinglePassRange& rng, OutputIterator result, + BinaryOperation op ) + { boost::function_requires< SinglePassRangeConcept >(); - return std::partial_sum( boost::begin(rng), boost::end(rng), result, op ); - } + return std::partial_sum( boost::begin(rng), boost::end(rng), result, op ); + } - template< class SinglePassRange, class OutputIterator > - inline OutputIterator adjacent_difference ( const SinglePassRange& rng, - OutputIterator result ) - { + template< class SinglePassRange, class OutputIterator > + inline OutputIterator adjacent_difference ( const SinglePassRange& rng, + OutputIterator result ) + { boost::function_requires< SinglePassRangeConcept >(); - return std::adjacent_difference( boost::begin(rng), boost::end(rng), - result ); - } + return std::adjacent_difference( boost::begin(rng), boost::end(rng), + result ); + } - template< class SinglePassRange, class OutputIterator, class BinaryOperation > - inline OutputIterator adjacent_difference ( const SinglePassRange& rng, - OutputIterator result, - BinaryOperation op ) - { + template< class SinglePassRange, class OutputIterator, class BinaryOperation > + inline OutputIterator adjacent_difference ( const SinglePassRange& rng, + OutputIterator result, + BinaryOperation op ) + { boost::function_requires< SinglePassRangeConcept >(); - return std::adjacent_difference( boost::begin(rng), boost::end(rng), - result, op ); - } - + return std::adjacent_difference( boost::begin(rng), boost::end(rng), + result, op ); + } + } #endif diff --git a/include/boost/range/size_type.hpp b/include/boost/range/size_type.hpp index 9993d55..8c184f8 100644 --- a/include/boost/range/size_type.hpp +++ b/include/boost/range/size_type.hpp @@ -68,7 +68,7 @@ namespace boost template< class T > struct range_size - : detail::range_size + : detail::range_size { }; } // namespace boost diff --git a/test/adaptor_test/adjacent_filtered_example.cpp b/test/adaptor_test/adjacent_filtered_example.cpp index b3538e8..ce132d6 100644 --- a/test/adaptor_test/adjacent_filtered_example.cpp +++ b/test/adaptor_test/adjacent_filtered_example.cpp @@ -55,4 +55,4 @@ init_unit_test_suite(int argc, char* argv[]) test->add( BOOST_TEST_CASE( &adjacent_filtered_example_test ) ); return test; -} \ No newline at end of file +} diff --git a/test/adaptor_test/copied_example.cpp b/test/adaptor_test/copied_example.cpp index f662a45..154a110 100644 --- a/test/adaptor_test/copied_example.cpp +++ b/test/adaptor_test/copied_example.cpp @@ -55,4 +55,4 @@ init_unit_test_suite(int argc, char* argv[]) test->add( BOOST_TEST_CASE( &copied_example_test ) ); return test; -} \ No newline at end of file +} diff --git a/test/algorithm_test/find.cpp b/test/algorithm_test/find.cpp index 6b3d532..fd179f1 100644 --- a/test/algorithm_test/find.cpp +++ b/test/algorithm_test/find.cpp @@ -36,16 +36,16 @@ namespace boost return boost::find(cont, 3); } - template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy&, Container& cont) - { - return boost::find(cont, 3); - } - }; + template + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy&, Container& cont) + { + return boost::find(cont, 3); + } + }; template BOOST_DEDUCED_TYPENAME range_iterator::type diff --git a/test/algorithm_test/find_end.cpp b/test/algorithm_test/find_end.cpp index fb44e52..a126e87 100644 --- a/test/algorithm_test/find_end.cpp +++ b/test/algorithm_test/find_end.cpp @@ -35,7 +35,7 @@ namespace boost { } - container2_t cont() { return m_cont; } + container2_t cont() { return m_cont; } template BOOST_DEDUCED_TYPENAME range_iterator::type @@ -45,14 +45,14 @@ namespace boost } template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::find_end(cont, policy.cont()); - } + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::find_end(cont, policy.cont()); + } }; template @@ -77,8 +77,8 @@ namespace boost { } - container2_t& cont() { return m_cont; } - BinaryPredicate& pred() { return m_pred; } + container2_t& cont() { return m_cont; } + BinaryPredicate& pred() { return m_pred; } template BOOST_DEDUCED_TYPENAME range_iterator::type @@ -88,14 +88,14 @@ namespace boost } template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::find_end(cont, policy.cont(), policy.pred()); - } + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::find_end(cont, policy.cont(), policy.pred()); + } }; template diff --git a/test/algorithm_test/find_first_of.cpp b/test/algorithm_test/find_first_of.cpp index b3d18e2..9ff7adb 100644 --- a/test/algorithm_test/find_first_of.cpp +++ b/test/algorithm_test/find_first_of.cpp @@ -35,7 +35,7 @@ namespace boost { } - container2_t& cont() { return m_cont; } + container2_t& cont() { return m_cont; } template BOOST_DEDUCED_TYPENAME range_iterator::type @@ -45,14 +45,14 @@ namespace boost } template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::find_first_of(cont, policy.cont()); - } + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::find_first_of(cont, policy.cont()); + } }; template @@ -77,8 +77,8 @@ namespace boost { } - container2_t& cont() { return m_cont; } - BinaryPredicate& pred() { return m_pred; } + container2_t& cont() { return m_cont; } + BinaryPredicate& pred() { return m_pred; } template BOOST_DEDUCED_TYPENAME range_iterator::type @@ -88,14 +88,14 @@ namespace boost } template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::find_first_of(cont, policy.cont(), policy.pred()); - } + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::find_first_of(cont, policy.cont(), policy.pred()); + } }; template diff --git a/test/algorithm_test/find_if.cpp b/test/algorithm_test/find_if.cpp index 4ee85a2..a5fe459 100644 --- a/test/algorithm_test/find_if.cpp +++ b/test/algorithm_test/find_if.cpp @@ -41,15 +41,15 @@ namespace boost return boost::find_if(cont, m_pred); } - template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(find_if_test_policy& policy, Container& cont) - { - return boost::find_if(cont, policy.pred()); - } + template + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(find_if_test_policy& policy, Container& cont) + { + return boost::find_if(cont, policy.pred()); + } }; template @@ -59,7 +59,7 @@ namespace boost return std::find_if(cont.begin(), cont.end(), m_pred); } - UnaryPredicate& pred() { return m_pred; } + UnaryPredicate& pred() { return m_pred; } private: UnaryPredicate m_pred; diff --git a/test/algorithm_test/for_each.cpp b/test/algorithm_test/for_each.cpp index 56f2ef5..ac517ad 100644 --- a/test/algorithm_test/for_each.cpp +++ b/test/algorithm_test/for_each.cpp @@ -83,4 +83,4 @@ init_unit_test_suite(int argc, char* argv[]) test->add( BOOST_TEST_CASE( &boost::test_for_each ) ); return test; -} \ No newline at end of file +} diff --git a/test/algorithm_test/lower_bound.cpp b/test/algorithm_test/lower_bound.cpp index 44cc120..ca622bc 100644 --- a/test/algorithm_test/lower_bound.cpp +++ b/test/algorithm_test/lower_bound.cpp @@ -36,16 +36,16 @@ namespace boost return boost::lower_bound(cont, 5); } - template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy&, Container& cont) - { - return boost::lower_bound(cont, 5); - } - }; + template + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy&, Container& cont) + { + return boost::lower_bound(cont, 5); + } + }; template< class Container > BOOST_DEDUCED_TYPENAME range_iterator::type @@ -66,15 +66,15 @@ namespace boost } template< range_return_value return_type > - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::lower_bound( - cont, 5, policy.pred()); - } + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::lower_bound( + cont, 5, policy.pred()); + } }; template @@ -85,10 +85,10 @@ namespace boost cont.begin(), cont.end(), 5, m_pred); } - BinaryPredicate& pred() { return m_pred; } + BinaryPredicate& pred() { return m_pred; } - private: - BinaryPredicate m_pred; + private: + BinaryPredicate m_pred; }; template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy&, Container& cont) - { - return boost::max_element(cont); - } + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy&, Container& cont) + { + return boost::max_element(cont); + } }; template< class Container > @@ -66,17 +66,17 @@ namespace boost return boost::max_element(cont, Pred()); } - Pred pred() const { return Pred(); } + Pred pred() const { return Pred(); } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::max_element(cont, policy.pred()); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::max_element(cont, policy.pred()); + } }; template< class Container > diff --git a/test/algorithm_test/min_element.cpp b/test/algorithm_test/min_element.cpp index 400372d..c68a655 100644 --- a/test/algorithm_test/min_element.cpp +++ b/test/algorithm_test/min_element.cpp @@ -37,14 +37,14 @@ namespace boost } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy&, Container& cont) - { - return boost::min_element(cont); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy&, Container& cont) + { + return boost::min_element(cont); + } }; template< class Container > @@ -66,17 +66,17 @@ namespace boost return boost::min_element(cont, Pred()); } - Pred pred() const { return Pred(); } + Pred pred() const { return Pred(); } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::min_element(cont, policy.pred()); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::min_element(cont, policy.pred()); + } }; template< class Container > diff --git a/test/algorithm_test/partition.cpp b/test/algorithm_test/partition.cpp index e71c9a7..3f0ce61 100644 --- a/test/algorithm_test/partition.cpp +++ b/test/algorithm_test/partition.cpp @@ -44,17 +44,17 @@ namespace boost return boost::partition(cont, UnaryPredicate()); } - UnaryPredicate pred() const { return UnaryPredicate(); } + UnaryPredicate pred() const { return UnaryPredicate(); } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::partition(cont, policy.pred()); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::partition(cont, policy.pred()); + } }; template< class Container > diff --git a/test/algorithm_test/stable_partition.cpp b/test/algorithm_test/stable_partition.cpp index 99db6be..fad4bef 100644 --- a/test/algorithm_test/stable_partition.cpp +++ b/test/algorithm_test/stable_partition.cpp @@ -44,17 +44,17 @@ namespace boost return boost::stable_partition(cont, UnaryPredicate()); } - UnaryPredicate pred() const { return UnaryPredicate(); } + UnaryPredicate pred() const { return UnaryPredicate(); } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::stable_partition(cont, policy.pred()); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::stable_partition(cont, policy.pred()); + } }; template< class Container > diff --git a/test/algorithm_test/unique.cpp b/test/algorithm_test/unique.cpp index f5d75cf..2e2ebfa 100644 --- a/test/algorithm_test/unique.cpp +++ b/test/algorithm_test/unique.cpp @@ -41,14 +41,14 @@ namespace boost } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy&, Container& cont) - { - return boost::unique(cont); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy&, Container& cont) + { + return boost::unique(cont); + } }; template< class Container > @@ -73,17 +73,17 @@ namespace boost return std::unique(cont.begin(), cont.end(), Pred()); } - Pred pred() const { return Pred(); } + Pred pred() const { return Pred(); } template< range_return_value return_type > - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::unique(cont, policy.pred()); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::unique(cont, policy.pred()); + } }; template< class Container > diff --git a/test/algorithm_test/upper_bound.cpp b/test/algorithm_test/upper_bound.cpp index 3df7164..2eb64cf 100644 --- a/test/algorithm_test/upper_bound.cpp +++ b/test/algorithm_test/upper_bound.cpp @@ -35,16 +35,16 @@ namespace boost return boost::upper_bound(cont, 5); } - template - struct test_range - { - template - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy&, Container& cont) - { - return boost::upper_bound(cont, 5); - } - }; + template + struct test_range + { + template + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy&, Container& cont) + { + return boost::upper_bound(cont, 5); + } + }; template< class Container > BOOST_DEDUCED_TYPENAME range_iterator::type @@ -65,15 +65,15 @@ namespace boost } template< range_return_value result_type> - struct test_range - { - template< class Container, class Policy > - BOOST_DEDUCED_TYPENAME range_return::type - operator()(Policy& policy, Container& cont) - { - return boost::upper_bound( - cont, 5, policy.pred()); - } + struct test_range + { + template< class Container, class Policy > + BOOST_DEDUCED_TYPENAME range_return::type + operator()(Policy& policy, Container& cont) + { + return boost::upper_bound( + cont, 5, policy.pred()); + } }; template @@ -83,11 +83,11 @@ namespace boost return std::upper_bound( cont.begin(), cont.end(), 5, BinaryPredicate()); } - - BinaryPredicate& pred() { return m_pred; } - - private: - BinaryPredicate m_pred; + + BinaryPredicate& pred() { return m_pred; } + + private: + BinaryPredicate m_pred; }; templateadd( BOOST_TEST_CASE( &boost::counting_range_test ) ); return test; -} \ No newline at end of file +} diff --git a/test/iterator_range.cpp b/test/iterator_range.cpp index cf22463..7c53a8b 100644 --- a/test/iterator_range.cpp +++ b/test/iterator_range.cpp @@ -61,7 +61,7 @@ void check_iterator_range() BOOST_CHECK_EQUAL( r2.size(), size( r2 ) ); BOOST_CHECK_EQUAL( std::distance( r.begin(), r.end() ), - std::distance( boost::begin( r2 ), boost::end( r2 ) ) ); + std::distance( boost::begin( r2 ), boost::end( r2 ) ) ); std::cout << r << r2; diff --git a/test/test_driver/range_return_test_driver.hpp b/test/test_driver/range_return_test_driver.hpp index 6f4fc3b..eb52474 100644 --- a/test/test_driver/range_return_test_driver.hpp +++ b/test/test_driver/range_return_test_driver.hpp @@ -379,25 +379,25 @@ namespace boost range_result, reference_it); } - template< range_return_value result_type, class Container, class TestPolicy > - struct test_range - { - void operator()(Container& cont, TestPolicy policy) - { - typedef BOOST_DEDUCED_TYPENAME range_iterator::type iterator_t; - typedef BOOST_DEDUCED_TYPENAME range_return::type range_return_t; - typedef BOOST_DEDUCED_TYPENAME TestPolicy::template test_range test_range_t; + template< range_return_value result_type, class Container, class TestPolicy > + struct test_range + { + void operator()(Container& cont, TestPolicy policy) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iterator_t; + typedef BOOST_DEDUCED_TYPENAME range_return::type range_return_t; + typedef BOOST_DEDUCED_TYPENAME TestPolicy::template test_range test_range_t; - Container reference(cont); - Container test_cont(cont); + Container reference(cont); + Container test_cont(cont); - range_return_t range_result = test_range_t()(policy, test_cont); - iterator_t reference_it = policy.reference(reference); + range_return_t range_result = test_range_t()(policy, test_cont); + iterator_t reference_it = policy.reference(reference); - check_results::check(test_cont, reference, + check_results::check(test_cont, reference, range_result, reference_it); - } - }; + } + }; }; } } From 3e2d5cb7864d8e2698ce61351e624902a4ecf3b5 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Tue, 20 Apr 2010 21:56:33 +0000 Subject: [PATCH 19/26] Boost.MultiArray disambiguated calls to equal functions in the unit tests. These became ambiguous due to changes in Boost.Range. [SVN r61441] --- test/adaptor_test/strided2.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/adaptor_test/strided2.cpp b/test/adaptor_test/strided2.cpp index 4ac91f5..ee8b4d1 100644 --- a/test/adaptor_test/strided2.cpp +++ b/test/adaptor_test/strided2.cpp @@ -51,6 +51,9 @@ namespace boost reference += 4,8; BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), z.begin(), z.end() ); + + // C++0x Lambda experiment + std::sort( v.begin(), v.end(), [](int l, int r) { return l < r; }); } } } From 1dea353fa31bf4088ae00fc905f217448d35a908 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 21 Apr 2010 07:37:25 +0000 Subject: [PATCH 20/26] Boost.Range revert accidental check-in of lambda test. It kinda breaks most compilers - doh. [SVN r61452] --- test/adaptor_test/strided2.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/adaptor_test/strided2.cpp b/test/adaptor_test/strided2.cpp index ee8b4d1..4ac91f5 100644 --- a/test/adaptor_test/strided2.cpp +++ b/test/adaptor_test/strided2.cpp @@ -51,9 +51,6 @@ namespace boost reference += 4,8; BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), z.begin(), z.end() ); - - // C++0x Lambda experiment - std::sort( v.begin(), v.end(), [](int l, int r) { return l < r; }); } } } From adc4b5db3b493d29cbf943f9510d41c27d342888 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 22 Apr 2010 22:43:57 +0000 Subject: [PATCH 21/26] Boost.Range brought back some of the const overloads that were over-zealously removed. [SVN r61495] --- include/boost/range/adaptor/sliced.hpp | 47 +++++++--- .../boost/range/algorithm/adjacent_find.hpp | 65 +++++++++++-- include/boost/range/algorithm/count.hpp | 9 ++ include/boost/range/algorithm/count_if.hpp | 9 ++ include/boost/range/algorithm/equal_range.hpp | 24 +++++ include/boost/range/algorithm/for_each.hpp | 8 ++ .../boost/range/algorithm/inplace_merge.hpp | 21 +++++ include/boost/range/algorithm/max_element.hpp | 40 ++++++++ include/boost/range/algorithm/min_element.hpp | 40 ++++++++ include/boost/range/algorithm/mismatch.hpp | 91 +++++++++++++++++++ include/boost/range/algorithm/nth_element.hpp | 21 +++++ include/boost/range/algorithm/permutation.hpp | 36 ++++++++ include/boost/range/algorithm/search.hpp | 49 ++++++++++ include/boost/range/algorithm/search_n.hpp | 58 ++++++++++++ .../range/algorithm/stable_partition.hpp | 20 ++++ include/boost/range/algorithm/unique.hpp | 36 ++++++++ 16 files changed, 552 insertions(+), 22 deletions(-) diff --git a/include/boost/range/adaptor/sliced.hpp b/include/boost/range/adaptor/sliced.hpp index e5084d6..eb506e0 100755 --- a/include/boost/range/adaptor/sliced.hpp +++ b/include/boost/range/adaptor/sliced.hpp @@ -27,24 +27,43 @@ namespace boost std::size_t u; }; - template< class RandomAccessRange > - inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - slice( RandomAccessRange& rng, std::size_t t, std::size_t u ) - { - BOOST_ASSERT( t <= u && "error in slice indices" ); + template< class RandomAccessRange > + inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > + slice( RandomAccessRange& rng, std::size_t t, std::size_t u ) + { + BOOST_ASSERT( t <= u && "error in slice indices" ); BOOST_ASSERT( static_cast(boost::size(rng)) >= u && - "second slice index out of bounds" ); + "second slice index out of bounds" ); + + return boost::make_iterator_range( rng, t, u - boost::size(rng) ); + } + + template< class RandomAccessRange > + inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > + slice( const RandomAccessRange& rng, std::size_t t, std::size_t u ) + { + BOOST_ASSERT( t <= u && "error in slice indices" ); + BOOST_ASSERT( static_cast(boost::size(rng)) >= u && + "second slice index out of bounds" ); return boost::make_iterator_range( rng, t, u - boost::size(rng) ); - } + } - template< class RandomAccessRange > - inline iterator_range< - BOOST_DEDUCED_TYPENAME range_iterator::type > - operator|( RandomAccessRange& r, const sliced& f ) - { - return adaptors::slice( r, f.t, f.u ); - } + template< class RandomAccessRange > + inline iterator_range< + BOOST_DEDUCED_TYPENAME range_iterator::type > + operator|( RandomAccessRange& r, const sliced& f ) + { + return adaptors::slice( r, f.t, f.u ); + } + + template< class RandomAccessRange > + inline iterator_range< + BOOST_DEDUCED_TYPENAME range_iterator::type > + operator|( const RandomAccessRange& r, const sliced& f ) + { + return adaptors::slice( r, f.t, f.u ); + } } // namespace adaptors } // namespace boost diff --git a/include/boost/range/algorithm/adjacent_find.hpp b/include/boost/range/algorithm/adjacent_find.hpp index 6ff4ad6..1b88dae 100755 --- a/include/boost/range/algorithm/adjacent_find.hpp +++ b/include/boost/range/algorithm/adjacent_find.hpp @@ -28,8 +28,8 @@ namespace boost /// /// \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::type +template< typename ForwardRange > +inline typename range_iterator::type adjacent_find(ForwardRange & rng) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); @@ -37,19 +37,43 @@ adjacent_find(ForwardRange & rng) } /// \overload -template< class ForwardRange, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +template< typename ForwardRange > +inline typename range_iterator::type +adjacent_find(const ForwardRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + return std::adjacent_find(boost::begin(rng),boost::end(rng)); +} + +/// \overload +template< typename ForwardRange, typename BinaryPredicate > +inline typename range_iterator::type adjacent_find(ForwardRange & rng, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, + typename range_value::type>)); + return std::adjacent_find(boost::begin(rng),boost::end(rng),pred); +} + +/// \overload +template< typename ForwardRange, typename BinaryPredicate > +inline typename range_iterator::type +adjacent_find(const ForwardRange& rng, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, + typename range_value::type>)); return std::adjacent_find(boost::begin(rng),boost::end(rng),pred); } // range_return overloads /// \overload -template< range_return_value re, class ForwardRange > -inline BOOST_DEDUCED_TYPENAME range_return::type +template< range_return_value re, typename ForwardRange > +inline typename range_return::type adjacent_find(ForwardRange & rng) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); @@ -59,16 +83,41 @@ adjacent_find(ForwardRange & rng) } /// \overload -template< range_return_value re, class ForwardRange, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type +template< range_return_value re, typename ForwardRange > +inline typename range_return::type +adjacent_find(const ForwardRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + return range_return:: + 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::type adjacent_find(ForwardRange& rng, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, + typename range_value::type>)); return range_return:: 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::type +adjacent_find(const ForwardRange& rng, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + return range_return:: + pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred), + rng); +} + } // namespace range using range::adjacent_find; } // namespace boost diff --git a/include/boost/range/algorithm/count.hpp b/include/boost/range/algorithm/count.hpp index 3174dc0..8316ce0 100755 --- a/include/boost/range/algorithm/count.hpp +++ b/include/boost/range/algorithm/count.hpp @@ -27,6 +27,15 @@ namespace boost /// /// \pre SinglePassRange is a model of the SinglePassRangeConcept template< class SinglePassRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_difference::type +count(SinglePassRange& rng, const Value& val) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::count(boost::begin(rng), boost::end(rng), val); +} + +/// \overload +template< class SinglePassRange, class Value > inline BOOST_DEDUCED_TYPENAME range_difference::type count(const SinglePassRange& rng, const Value& val) { diff --git a/include/boost/range/algorithm/count_if.hpp b/include/boost/range/algorithm/count_if.hpp index b101226..ae17b0e 100755 --- a/include/boost/range/algorithm/count_if.hpp +++ b/include/boost/range/algorithm/count_if.hpp @@ -28,6 +28,15 @@ namespace boost /// \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::type +count_if(SinglePassRange& rng, UnaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::count_if(boost::begin(rng), boost::end(rng), pred); +} + +/// \overload +template< class SinglePassRange, class UnaryPredicate > inline BOOST_DEDUCED_TYPENAME boost::range_difference::type count_if(const SinglePassRange& rng, UnaryPredicate pred) { diff --git a/include/boost/range/algorithm/equal_range.hpp b/include/boost/range/algorithm/equal_range.hpp index cc3c510..4aa4a54 100755 --- a/include/boost/range/algorithm/equal_range.hpp +++ b/include/boost/range/algorithm/equal_range.hpp @@ -37,6 +37,18 @@ equal_range(ForwardRange& rng, const Value& val) return std::equal_range(boost::begin(rng), boost::end(rng), val); } +/// \overload +template +inline std::pair< + BOOST_DEDUCED_TYPENAME boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME boost::range_iterator::type + > +equal_range(const ForwardRange& rng, const Value& val) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::equal_range(boost::begin(rng), boost::end(rng), val); +} + /// \overload template inline std::pair< @@ -49,6 +61,18 @@ equal_range(ForwardRange& rng, const Value& val, SortPredicate pred) return std::equal_range(boost::begin(rng), boost::end(rng), val, pred); } +/// \overload +template +inline std::pair< + BOOST_DEDUCED_TYPENAME boost::range_iterator::type, + BOOST_DEDUCED_TYPENAME boost::range_iterator::type + > +equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::equal_range(boost::begin(rng), boost::end(rng), val, pred); +} + } // namespace range using range::equal_range; } // namespace boost diff --git a/include/boost/range/algorithm/for_each.hpp b/include/boost/range/algorithm/for_each.hpp index f258815..714a06f 100755 --- a/include/boost/range/algorithm/for_each.hpp +++ b/include/boost/range/algorithm/for_each.hpp @@ -33,6 +33,14 @@ inline UnaryFunction for_each(SinglePassRange & rng, UnaryFunction fun) 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 )); + return std::for_each(boost::begin(rng), boost::end(rng), fun); +} + } // namespace range using range::for_each; } // namespace boost diff --git a/include/boost/range/algorithm/inplace_merge.hpp b/include/boost/range/algorithm/inplace_merge.hpp index 80c13f4..dfadbaa 100755 --- a/include/boost/range/algorithm/inplace_merge.hpp +++ b/include/boost/range/algorithm/inplace_merge.hpp @@ -35,6 +35,16 @@ inline BidirectionalRange& inplace_merge(BidirectionalRange& rng, return rng; } +/// \overload +template +inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng, + BOOST_DEDUCED_TYPENAME boost::range_iterator::type middle) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + std::inplace_merge(boost::begin(rng), middle, boost::end(rng)); + return rng; +} + /// \overload template inline BidirectionalRange& inplace_merge(BidirectionalRange& rng, @@ -46,6 +56,17 @@ inline BidirectionalRange& inplace_merge(BidirectionalRange& rng, return rng; } +/// \overload +template +inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng, + BOOST_DEDUCED_TYPENAME boost::range_iterator::type middle, + BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred); + return rng; +} + } // namespace range using range::inplace_merge; } // namespace boost diff --git a/include/boost/range/algorithm/max_element.hpp b/include/boost/range/algorithm/max_element.hpp index d8ec692..a0c1ffd 100755 --- a/include/boost/range/algorithm/max_element.hpp +++ b/include/boost/range/algorithm/max_element.hpp @@ -35,6 +35,15 @@ max_element(ForwardRange& rng) return std::max_element(boost::begin(rng), boost::end(rng)); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +max_element(const ForwardRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::max_element(boost::begin(rng), boost::end(rng)); +} + /// \overload template inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -44,6 +53,15 @@ max_element(ForwardRange& rng, BinaryPredicate pred) return std::max_element(boost::begin(rng), boost::end(rng), pred); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +max_element(const ForwardRange& rng, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::max_element(boost::begin(rng), boost::end(rng), pred); +} + // range_return overloads /// \overload @@ -57,6 +75,17 @@ max_element(ForwardRange& rng) rng); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_return::type +max_element(const ForwardRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return::pack( + std::max_element(boost::begin(rng), boost::end(rng)), + rng); +} + /// \overload template inline BOOST_DEDUCED_TYPENAME range_return::type @@ -68,6 +97,17 @@ max_element(ForwardRange& rng, BinaryPredicate pred) rng); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_return::type +max_element(const ForwardRange& rng, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return::pack( + std::max_element(boost::begin(rng), boost::end(rng), pred), + rng); +} + } // namespace range using range::max_element; } // namespace boost diff --git a/include/boost/range/algorithm/min_element.hpp b/include/boost/range/algorithm/min_element.hpp index 3bc02da..c966b1e 100755 --- a/include/boost/range/algorithm/min_element.hpp +++ b/include/boost/range/algorithm/min_element.hpp @@ -35,6 +35,15 @@ min_element(ForwardRange& rng) return std::min_element(boost::begin(rng), boost::end(rng)); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +min_element(const ForwardRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::min_element(boost::begin(rng), boost::end(rng)); +} + /// \overload template inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -44,6 +53,15 @@ min_element(ForwardRange& rng, BinaryPredicate pred) return std::min_element(boost::begin(rng), boost::end(rng), pred); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +min_element(const ForwardRange& rng, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::min_element(boost::begin(rng), boost::end(rng), pred); +} + // range_return overloads /// \overload @@ -57,6 +75,17 @@ min_element(ForwardRange& rng) rng); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_return::type +min_element(const ForwardRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return::pack( + std::min_element(boost::begin(rng), boost::end(rng)), + rng); +} + /// \overload template inline BOOST_DEDUCED_TYPENAME range_return::type @@ -68,6 +97,17 @@ min_element(ForwardRange& rng, BinaryPredicate pred) rng); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_return::type +min_element(const ForwardRange& rng, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return::pack( + std::min_element(boost::begin(rng), boost::end(rng), pred), + rng); +} + } // namespace range using range::min_element; } // namespace boost diff --git a/include/boost/range/algorithm/mismatch.hpp b/include/boost/range/algorithm/mismatch.hpp index c0cde9b..2819c33 100755 --- a/include/boost/range/algorithm/mismatch.hpp +++ b/include/boost/range/algorithm/mismatch.hpp @@ -69,6 +69,36 @@ namespace boost /// \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::type, + BOOST_DEDUCED_TYPENAME range_iterator::type > +mismatch(SinglePassRange1& rng1, const SinglePassRange2 & rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + return ::boost::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::type, + BOOST_DEDUCED_TYPENAME range_iterator::type > +mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + return ::boost::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::type, BOOST_DEDUCED_TYPENAME range_iterator::type > @@ -82,6 +112,52 @@ mismatch(SinglePassRange1& rng1, SinglePassRange2 & rng2) ::boost::begin(rng2), ::boost::end(rng2)); } +/// \overload +template< class SinglePassRange1, class SinglePassRange2 > +inline std::pair< + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type > +mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + 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::type, + BOOST_DEDUCED_TYPENAME range_iterator::type > +mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + return ::boost::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::type, + BOOST_DEDUCED_TYPENAME range_iterator::type > +mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + return ::boost::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< @@ -97,6 +173,21 @@ mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred) ::boost::begin(rng2), ::boost::end(rng2), pred); } +/// \overload +template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate > +inline std::pair< + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type > +mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + 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 diff --git a/include/boost/range/algorithm/nth_element.hpp b/include/boost/range/algorithm/nth_element.hpp index cf143e9..a605595 100755 --- a/include/boost/range/algorithm/nth_element.hpp +++ b/include/boost/range/algorithm/nth_element.hpp @@ -35,6 +35,16 @@ inline RandomAccessRange& nth_element(RandomAccessRange& rng, return rng; } +/// \overload +template +inline const RandomAccessRange& nth_element(const RandomAccessRange& rng, + BOOST_DEDUCED_TYPENAME range_iterator::type nth) +{ + BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); + std::nth_element(boost::begin(rng), nth, boost::end(rng)); + return rng; +} + /// \overload template inline RandomAccessRange& nth_element(RandomAccessRange& rng, @@ -46,6 +56,17 @@ inline RandomAccessRange& nth_element(RandomAccessRange& rng, return rng; } +/// \overload +template +inline const RandomAccessRange& nth_element(const RandomAccessRange& rng, + BOOST_DEDUCED_TYPENAME range_iterator::type nth, + BinaryPredicate sort_pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessRangeConcept )); + std::nth_element(boost::begin(rng), nth, boost::end(rng), sort_pred); + return rng; +} + } // namespace range using range::nth_element; } // namespace boost diff --git a/include/boost/range/algorithm/permutation.hpp b/include/boost/range/algorithm/permutation.hpp index 7540c96..75388cc 100755 --- a/include/boost/range/algorithm/permutation.hpp +++ b/include/boost/range/algorithm/permutation.hpp @@ -33,6 +33,14 @@ inline bool next_permutation(BidirectionalRange& rng) return std::next_permutation(boost::begin(rng), boost::end(rng)); } +/// \overload +template +inline bool next_permutation(const BidirectionalRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + return std::next_permutation(boost::begin(rng), boost::end(rng)); +} + /// \overload template inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred) @@ -42,6 +50,16 @@ inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred) comp_pred); } +/// \overload +template +inline bool next_permutation(const BidirectionalRange& rng, + Compare comp_pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + 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 @@ -55,6 +73,14 @@ inline bool prev_permutation(BidirectionalRange& rng) return std::prev_permutation(boost::begin(rng), boost::end(rng)); } +/// \overload +template +inline bool prev_permutation(const BidirectionalRange& rng) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + return std::prev_permutation(boost::begin(rng), boost::end(rng)); +} + /// \overload template inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred) @@ -64,6 +90,16 @@ inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred) comp_pred); } +/// \overload +template +inline bool prev_permutation(const BidirectionalRange& rng, + Compare comp_pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + return std::prev_permutation(boost::begin(rng), boost::end(rng), + comp_pred); +} + } // namespace range using range::next_permutation; using range::prev_permutation; diff --git a/include/boost/range/algorithm/search.hpp b/include/boost/range/algorithm/search.hpp index 3f5134f..28cc6e6 100755 --- a/include/boost/range/algorithm/search.hpp +++ b/include/boost/range/algorithm/search.hpp @@ -38,6 +38,17 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2) boost::begin(rng2),boost::end(rng2)); } +/// \overload +template< class ForwardRange1, class ForwardRange2 > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +search(const ForwardRange1& rng1, const ForwardRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + 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::type @@ -49,6 +60,17 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) boost::begin(rng2),boost::end(rng2),pred); } +/// \overload +template< class ForwardRange1, class ForwardRange2, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +search(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::search(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2), pred); +} + // range_return overloads /// \overload @@ -64,6 +86,19 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2) rng1); } +/// \overload +template< range_return_value re, class ForwardRange1, class ForwardRange2 > +inline BOOST_DEDUCED_TYPENAME range_return::type +search(const ForwardRange1& rng1, const ForwardRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + 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 > @@ -78,6 +113,20 @@ search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) rng1); } +/// \overload +template< range_return_value re, class ForwardRange1, class ForwardRange2, + class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type +search(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + pack(std::search(boost::begin(rng1),boost::end(rng1), + boost::begin(rng2),boost::end(rng2),pred), + rng1); +} + } // namespace range using range::search; } // namespace boost diff --git a/include/boost/range/algorithm/search_n.hpp b/include/boost/range/algorithm/search_n.hpp index dfbb17a..2ced140 100755 --- a/include/boost/range/algorithm/search_n.hpp +++ b/include/boost/range/algorithm/search_n.hpp @@ -39,6 +39,15 @@ search_n(ForwardRange& rng, Integer count, const Value& value) return std::search_n(boost::begin(rng),boost::end(rng), count, value); } +/// \overload +template< class ForwardRange, class Integer, class Value > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +search_n(const ForwardRange& rng, Integer count, const Value& value) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + return std::search_n(boost::begin(rng), boost::end(rng), count, value); +} + /// \overload template< class ForwardRange, class Integer, class Value, class BinaryPredicate > @@ -47,6 +56,22 @@ search_n(ForwardRange& rng, Integer count, const Value& value, BinaryPredicate binary_pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); + return std::search_n(boost::begin(rng), boost::end(rng), + count, value, binary_pred); +} + +/// \overload +template< class ForwardRange, class Integer, class Value, + class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +search_n(const ForwardRange& rng, Integer count, const Value& value, + BinaryPredicate binary_pred) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); return std::search_n(boost::begin(rng), boost::end(rng), count, value, binary_pred); } @@ -66,6 +91,19 @@ search_n(ForwardRange& rng, Integer count, const Value& value) rng); } +/// \overload +template< range_return_value re, class ForwardRange, class Integer, + class Value > +inline BOOST_DEDUCED_TYPENAME range_return::type +search_n(const ForwardRange& rng, Integer count, const Value& value) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + return range_return:: + pack(std::search_n(boost::begin(rng), boost::end(rng), + count, value), + rng); +} + /// \overload template< range_return_value re, class ForwardRange, class Integer, class Value, class BinaryPredicate > @@ -74,12 +112,32 @@ search_n(ForwardRange& rng, Integer count, const Value& value, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, + const Value&>)); return range_return:: pack(std::search_n(boost::begin(rng), boost::end(rng), count, value, pred), rng); } +/// \overload +template< range_return_value re, class ForwardRange, class Integer, + class Value, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type +search_n(const ForwardRange& rng, Integer count, const Value& value, + BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, + const Value&>)); + return range_return:: + pack(std::search_n(boost::begin(rng), boost::end(rng), + count, value, pred), + rng); +} + } // namespace range using range::search_n; } // namespace boost diff --git a/include/boost/range/algorithm/stable_partition.hpp b/include/boost/range/algorithm/stable_partition.hpp index aa003df..24febfc 100755 --- a/include/boost/range/algorithm/stable_partition.hpp +++ b/include/boost/range/algorithm/stable_partition.hpp @@ -35,6 +35,15 @@ stable_partition(BidirectionalRange& rng, UnaryPredicate pred) return std::stable_partition(boost::begin(rng), boost::end(rng), pred); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +stable_partition(const BidirectionalRange& rng, UnaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + return std::stable_partition(boost::begin(rng),boost::end(rng),pred); +} + // range_return overloads template inline BOOST_DEDUCED_TYPENAME range_return::type @@ -46,6 +55,17 @@ stable_partition(BidirectionalRange& rng, UnaryPredicate pred) rng); } +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_return::type +stable_partition(const BidirectionalRange& rng, UnaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + return range_return::pack( + std::stable_partition(boost::begin(rng),boost::end(rng),pred), + rng); +} + } // namespace range using range::stable_partition; } // namespace boost diff --git a/include/boost/range/algorithm/unique.hpp b/include/boost/range/algorithm/unique.hpp index b930c54..be6eaf9 100755 --- a/include/boost/range/algorithm/unique.hpp +++ b/include/boost/range/algorithm/unique.hpp @@ -36,6 +36,16 @@ unique( ForwardRange& rng ) boost::end(rng)), rng ); } +/// \overload +template< range_return_value re, class ForwardRange > +inline BOOST_DEDUCED_TYPENAME range_return::type +unique( const ForwardRange& rng ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + 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::type @@ -46,6 +56,16 @@ unique( ForwardRange& rng, BinaryPredicate pred ) 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::type +unique( const ForwardRange& rng, BinaryPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + pack(std::unique(boost::begin(rng), boost::end(rng), pred), + rng); +} /// \overload template< class ForwardRange > @@ -56,6 +76,14 @@ unique( ForwardRange& rng ) return ::boost::range::unique(rng); } /// \overload +template< class ForwardRange > +inline BOOST_DEDUCED_TYPENAME range_return::type +unique( const ForwardRange& rng ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return ::boost::range::unique(rng); +} +/// \overload template< class ForwardRange, class BinaryPredicate > inline BOOST_DEDUCED_TYPENAME range_return::type unique( ForwardRange& rng, BinaryPredicate pred ) @@ -63,6 +91,14 @@ unique( ForwardRange& rng, BinaryPredicate pred ) BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return ::boost::range::unique(rng); } +/// \overload +template< class ForwardRange, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +unique( const ForwardRange& rng, BinaryPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return ::boost::range::unique(rng, pred); +} } // namespace range using range::unique; From abc18532e4f2ec89fdf341b36c8713ade29b6a07 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 16:09:03 +0000 Subject: [PATCH 22/26] Boost.Range documentation update iteration. [SVN r61647] --- doc/boost_range.qbk | 111 ++++- doc/headers.qbk | 109 +++++ doc/history_ack.qbk | 31 +- doc/html/index.html | 60 +-- doc/html/quickbook_HTML.manifest | 199 +++++---- .../range/concepts/bidirectional_range.html | 16 +- doc/html/range/concepts/concept_checking.html | 2 +- doc/html/range/concepts/forward_range.html | 10 +- .../range/concepts/random_access_range.html | 12 +- .../range/concepts/single_pass_range.html | 16 +- doc/html/range/examples.html | 6 +- doc/html/range/faq.html | 5 +- doc/html/range/history_ack.html | 58 +++ doc/html/range/library_headers.html | 402 +----------------- doc/html/range/mfc_atl.html | 4 +- doc/html/range/portability.html | 2 +- doc/html/range/reference.html | 35 +- doc/html/range/reference/adaptors.html | 14 +- .../adaptors/adaptors_introduction.html | 6 +- .../reference/adaptors/adaptors_synopsis.html | 8 +- .../adaptors/general_requirements.html | 141 ++++++ .../reference/adaptors/introduction.html | 274 ++++++++++++ .../range/reference/adaptors/reference.html | 63 +++ doc/html/range/reference/algorithms.html | 25 +- .../{heap_algorithms.html => heap.html} | 22 +- .../{heap_algorithms => heap}/make_heap.html | 39 +- .../{heap_algorithms => heap}/pop_heap.html | 45 +- .../{heap_algorithms => heap}/push_heap.html | 47 +- .../{heap_algorithms => heap}/sort_heap.html | 47 +- .../range/reference/algorithms/mutating.html | 91 ++++ .../copy.html | 53 ++- .../copy_backward.html | 54 +-- .../fill.html | 47 +- .../fill_n.html | 47 +- .../generate.html | 53 ++- .../inplace_merge.html | 72 ++-- .../merge.html | 65 ++- .../nth_element.html | 48 +-- .../partial_sort.html | 48 +-- .../partition.html | 47 +- .../random_shuffle.html | 54 +-- .../remove.html | 47 +- .../algorithms/mutating/remove_copy.html | 109 +++++ .../algorithms/mutating/remove_copy_if.html | 104 +++++ .../remove_if.html | 47 +- .../replace.html | 47 +- .../algorithms/mutating/replace_copy.html | 112 +++++ .../algorithms/mutating/replace_copy_if.html | 114 +++++ .../replace_if.html | 48 +-- .../algorithms/mutating/reverse.html | 96 +++++ .../algorithms/mutating/reverse_copy.html | 101 +++++ .../rotate.html | 55 ++- .../algorithms/mutating/rotate_copy.html | 112 +++++ .../sort.html | 47 +- .../stable_partition.html | 48 +-- .../stable_sort.html | 48 +-- .../algorithms/mutating/swap_ranges.html | 104 +++++ .../transform.html | 55 ++- .../unique.html | 47 +- .../algorithms/mutating/unique_copy.html | 143 +++++++ doc/html/range/reference/algorithms/new.html | 57 +++ .../reference/algorithms/new/copy_n.html | 103 +++++ .../erase.html | 41 +- .../for_each.html | 39 +- .../insert.html | 39 +- .../iota.html | 41 +- .../reference/algorithms/new/is_sorted.html | 108 +++++ .../overwrite.html | 41 +- .../push_back.html | 39 +- .../push_front.html | 39 +- .../remove_erase.html | 39 +- .../remove_erase_if.html | 40 +- doc/html/range/reference/algorithms/non.html | 64 +++ .../reference/algorithms/non_mutating.html | 81 ++++ .../adjacent_find.html | 46 +- .../binary_search.html | 46 +- .../count.html | 41 +- .../algorithms/non_mutating/count_if.html | 104 +++++ .../equal.html | 41 +- .../equal_range.html | 44 +- .../find.html | 39 +- .../find_end.html | 38 +- .../find_first_of.html | 38 +- .../find_if.html | 44 +- .../for_each.html | 38 +- .../lexicographical_compare.html | 38 +- .../lower_bound.html | 44 +- .../max_element.html | 38 +- .../min_element.html | 38 +- .../mismatch.html | 50 +-- .../search.html | 40 +- .../algorithms/non_mutating/search_n.html | 148 +++++++ .../upper_bound.html | 48 +-- .../{range_numeric.html => numeric.html} | 20 +- .../accumulate.html | 53 ++- .../adjacent_difference.html | 56 +-- .../inner_product.html | 56 +-- .../partial_sum.html | 56 +-- ...ation_algorithms.html => permutation.html} | 16 +- .../next_permutation.html | 40 +- .../prev_permutation.html | 40 +- .../range_algorithm_introduction.html | 257 ----------- .../range_algorithm_mutating_algorithms.html | 88 ---- .../range_algorithm_new_algorithms.html | 64 --- ...nge_algorithm_non_mutating_algorithms.html | 80 ---- .../algorithms/range_numeric/irange.html | 105 ----- .../{set_algorithms.html => set.html} | 23 +- .../{set_algorithms => set}/includes.html | 47 +- .../set_difference.html | 45 +- .../set_intersection.html | 44 +- .../set_symmetric_difference.html | 46 +- .../{set_algorithms => set}/set_union.html | 45 +- doc/html/range/reference/extending.html | 6 +- .../extending/method_3/method_3_2.html | 6 +- doc/html/range/reference/overview.html | 2 +- doc/html/range/reference/ranges.html | 6 +- .../reference/ranges/counting_range.html | 8 +- doc/html/range/reference/ranges/irange.html | 16 +- .../range/reference/ranges/istream_range.html | 6 +- doc/html/range/reference/semantics.html | 2 +- doc/html/range/reference/utilities.html | 83 ++++ .../reference/utilities/iterator_range.html | 328 ++++++++++++++ doc/html/range/reference/utilities/join.html | 89 ++++ .../range/reference/utilities/sub_range.html | 123 ++++++ doc/html/range/style_guide.html | 8 +- doc/html/range/utilities.html | 82 ---- doc/html/range/utilities/iterator_range.html | 6 +- doc/html/range/utilities/join.html | 4 +- doc/html/range/utilities/sub_range.html | 2 +- doc/reference.qbk | 3 +- doc/reference/adaptors.qbk | 6 +- doc/reference/algorithm/adjacent_find.qbk | 2 +- doc/reference/algorithm/copy.qbk | 2 +- doc/reference/algorithm/copy_backward.qbk | 2 +- doc/reference/algorithm/count_if.qbk | 32 ++ doc/reference/algorithm/fill.qbk | 2 +- doc/reference/algorithm/fill_n.qbk | 2 +- doc/reference/algorithm/generate.qbk | 2 +- doc/reference/algorithm/inplace_merge.qbk | 8 +- doc/reference/algorithm/merge.qbk | 2 +- doc/reference/algorithm/mismatch.qbk | 2 +- doc/reference/algorithm/nth_element.qbk | 2 +- doc/reference/algorithm/partial_sort.qbk | 2 +- doc/reference/algorithm/partition.qbk | 2 +- doc/reference/algorithm/random_shuffle.qbk | 2 +- doc/reference/algorithm/remove.qbk | 2 +- doc/reference/algorithm/remove_copy.qbk | 34 ++ doc/reference/algorithm/remove_copy_if.qbk | 33 ++ doc/reference/algorithm/remove_if.qbk | 2 +- doc/reference/algorithm/replace.qbk | 2 +- doc/reference/algorithm/replace_copy.qbk | 33 ++ doc/reference/algorithm/replace_copy_if.qbk | 34 ++ doc/reference/algorithm/replace_if.qbk | 2 +- doc/reference/algorithm/reverse.qbk | 2 +- doc/reference/algorithm/reverse_copy.qbk | 31 ++ doc/reference/algorithm/rotate.qbk | 4 +- doc/reference/algorithm/rotate_copy.qbk | 38 ++ doc/reference/algorithm/search_n.qbk | 58 +++ doc/reference/algorithm/sort.qbk | 2 +- doc/reference/algorithm/stable_partition.qbk | 2 +- doc/reference/algorithm/stable_sort.qbk | 2 +- doc/reference/algorithm/swap_ranges.qbk | 32 ++ doc/reference/algorithm/transform.qbk | 4 +- doc/reference/algorithm/unique.qbk | 2 +- doc/reference/algorithm/unique_copy.qbk | 44 ++ doc/reference/algorithm_ext/copy_n.qbk | 32 ++ doc/reference/algorithm_ext/is_sorted.qbk | 35 ++ doc/reference/algorithms.qbk | 27 +- doc/{ => reference}/utilities.qbk | 0 169 files changed, 5356 insertions(+), 2838 deletions(-) create mode 100644 doc/html/range/reference/adaptors/general_requirements.html create mode 100644 doc/html/range/reference/adaptors/introduction.html create mode 100644 doc/html/range/reference/adaptors/reference.html rename doc/html/range/reference/algorithms/{heap_algorithms.html => heap.html} (51%) rename doc/html/range/reference/algorithms/{heap_algorithms => heap}/make_heap.html (83%) rename doc/html/range/reference/algorithms/{heap_algorithms => heap}/pop_heap.html (84%) rename doc/html/range/reference/algorithms/{heap_algorithms => heap}/push_heap.html (81%) rename doc/html/range/reference/algorithms/{heap_algorithms => heap}/sort_heap.html (81%) create mode 100644 doc/html/range/reference/algorithms/mutating.html rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/copy.html (69%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/copy_backward.html (72%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/fill.html (69%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/fill_n.html (70%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/generate.html (72%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/inplace_merge.html (83%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/merge.html (87%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/nth_element.html (80%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/partial_sort.html (82%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/partition.html (79%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/random_shuffle.html (76%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/remove.html (81%) create mode 100644 doc/html/range/reference/algorithms/mutating/remove_copy.html create mode 100644 doc/html/range/reference/algorithms/mutating/remove_copy_if.html rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/remove_if.html (79%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/replace.html (75%) create mode 100644 doc/html/range/reference/algorithms/mutating/replace_copy.html create mode 100644 doc/html/range/reference/algorithms/mutating/replace_copy_if.html rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/replace_if.html (74%) create mode 100644 doc/html/range/reference/algorithms/mutating/reverse.html create mode 100644 doc/html/range/reference/algorithms/mutating/reverse_copy.html rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/rotate.html (70%) create mode 100644 doc/html/range/reference/algorithms/mutating/rotate_copy.html rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/sort.html (80%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/stable_partition.html (80%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/stable_sort.html (82%) create mode 100644 doc/html/range/reference/algorithms/mutating/swap_ranges.html rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/transform.html (86%) rename doc/html/range/reference/algorithms/{range_algorithm_mutating_algorithms => mutating}/unique.html (85%) create mode 100644 doc/html/range/reference/algorithms/mutating/unique_copy.html create mode 100644 doc/html/range/reference/algorithms/new.html create mode 100644 doc/html/range/reference/algorithms/new/copy_n.html rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/erase.html (72%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/for_each.html (84%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/insert.html (74%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/iota.html (73%) create mode 100644 doc/html/range/reference/algorithms/new/is_sorted.html rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/overwrite.html (70%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/push_back.html (72%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/push_front.html (72%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/remove_erase.html (69%) rename doc/html/range/reference/algorithms/{range_algorithm_new_algorithms => new}/remove_erase_if.html (69%) create mode 100644 doc/html/range/reference/algorithms/non.html create mode 100644 doc/html/range/reference/algorithms/non_mutating.html rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/adjacent_find.html (82%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/binary_search.html (79%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/count.html (76%) create mode 100644 doc/html/range/reference/algorithms/non_mutating/count_if.html rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/equal.html (81%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/equal_range.html (85%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/find.html (77%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/find_end.html (86%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/find_first_of.html (84%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/find_if.html (76%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/for_each.html (75%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/lexicographical_compare.html (82%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/lower_bound.html (81%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/max_element.html (86%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/min_element.html (86%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/mismatch.html (88%) rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/search.html (89%) create mode 100644 doc/html/range/reference/algorithms/non_mutating/search_n.html rename doc/html/range/reference/algorithms/{range_algorithm_non_mutating_algorithms => non_mutating}/upper_bound.html (79%) rename doc/html/range/reference/algorithms/{range_numeric.html => numeric.html} (54%) rename doc/html/range/reference/algorithms/{range_numeric => numeric}/accumulate.html (76%) rename doc/html/range/reference/algorithms/{range_numeric => numeric}/adjacent_difference.html (80%) rename doc/html/range/reference/algorithms/{range_numeric => numeric}/inner_product.html (83%) rename doc/html/range/reference/algorithms/{range_numeric => numeric}/partial_sum.html (81%) rename doc/html/range/reference/algorithms/{permutation_algorithms.html => permutation.html} (56%) rename doc/html/range/reference/algorithms/{permutation_algorithms => permutation}/next_permutation.html (79%) rename doc/html/range/reference/algorithms/{permutation_algorithms => permutation}/prev_permutation.html (81%) delete mode 100644 doc/html/range/reference/algorithms/range_algorithm_introduction.html delete mode 100644 doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html delete mode 100644 doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html delete mode 100644 doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html delete mode 100644 doc/html/range/reference/algorithms/range_numeric/irange.html rename doc/html/range/reference/algorithms/{set_algorithms.html => set.html} (51%) rename doc/html/range/reference/algorithms/{set_algorithms => set}/includes.html (83%) rename doc/html/range/reference/algorithms/{set_algorithms => set}/set_difference.html (85%) rename doc/html/range/reference/algorithms/{set_algorithms => set}/set_intersection.html (86%) rename doc/html/range/reference/algorithms/{set_algorithms => set}/set_symmetric_difference.html (84%) rename doc/html/range/reference/algorithms/{set_algorithms => set}/set_union.html (86%) create mode 100644 doc/html/range/reference/utilities.html create mode 100644 doc/html/range/reference/utilities/iterator_range.html create mode 100644 doc/html/range/reference/utilities/join.html create mode 100644 doc/html/range/reference/utilities/sub_range.html delete mode 100644 doc/html/range/utilities.html create mode 100644 doc/reference/algorithm/count_if.qbk create mode 100644 doc/reference/algorithm/remove_copy.qbk create mode 100644 doc/reference/algorithm/remove_copy_if.qbk create mode 100644 doc/reference/algorithm/replace_copy.qbk create mode 100644 doc/reference/algorithm/replace_copy_if.qbk create mode 100644 doc/reference/algorithm/reverse_copy.qbk create mode 100644 doc/reference/algorithm/rotate_copy.qbk create mode 100644 doc/reference/algorithm/search_n.qbk create mode 100644 doc/reference/algorithm/swap_ranges.qbk create mode 100644 doc/reference/algorithm/unique_copy.qbk create mode 100644 doc/reference/algorithm_ext/copy_n.qbk create mode 100644 doc/reference/algorithm_ext/is_sorted.qbk rename doc/{ => reference}/utilities.qbk (100%) diff --git a/doc/boost_range.qbk b/doc/boost_range.qbk index 1d56b82..6f6af4f 100644 --- a/doc/boost_range.qbk +++ b/doc/boost_range.qbk @@ -33,8 +33,8 @@ [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 __iterator_range__ [link range.reference.utilities.iterator_range `iterator_range`]] +[def __sub_range__ [link range.reference.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]] @@ -60,9 +60,104 @@ [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 __counting_range__ [link range.reference.ranges.counting_range `counting_range`]] +[def __irange__ [link range.reference.ranges.irange `irange`]] +[def __istream_range__ [link range.reference.ranges.istream_range `istream_range`]] +[def __join__ [link range.reference.utilities.join `join`]] -[def __range_adaptors__ [link range.reference.adaptors Range adaptors]] -[def __range_algorithms__ [link range.reference.algorithms Range algorithms]] +[def __range_adaptors__ [link range.reference.adaptors Range adaptors]] +[def __range_adaptors_adjacent_filtered__ [link range.reference.adaptors.reference.adjacent_filtered adjacent_filtered]] +[def __range_adaptors_copied__ [link range.reference.adaptors.reference.copied copied]] +[def __range_adaptors_filtered__ [link range.reference.adaptors.reference.filtered filtered]] +[def __range_adaptors_indexed__ [link range.reference.adaptors.reference.indexed indexed]] +[def __range_adaptors_indirected__ [link range.reference.adaptors.reference.indirected indirected]] +[def __range_adaptors_map_keys__ [link range.reference.adaptors.reference.map_keys map_keys]] +[def __range_adaptors_map_values__ [link range.reference.adaptors.reference.map_values map_values]] +[def __range_adaptors_replaced__ [link range.reference.adaptors.reference.replaced replaced]] +[def __range_adaptors_replaced_if__ [link range.reference.adaptors.reference.replaced_if replaced_if]] +[def __range_adaptors_reversed__ [link range.reference.adaptors.reference.reversed reversed]] +[def __range_adaptors_sliced__ [link range.reference.adaptors.reference.sliced sliced]] +[def __range_adaptors_strided__ [link range.reference.adaptors.reference.strided strided]] +[def __range_adaptors_tokenized__ [link range.reference.adaptors.reference.tokenized tokenized]] +[def __range_adaptors_transformed__ [link range.reference.adaptors.reference.transformed transformed]] +[def __range_adaptors_uniqued__ [link range.reference.adaptors.reference.uniqued uniqued]] + + +[def __range_algorithms__ [link range.reference.algorithms Range algorithms]] +[def __range_algorithms_adjacent_find__ [link range.reference.algorithms.non_mutating.adjacent_find adjacent_find]] +[def __range_algorithms_binary_search__ [link range.reference.algorithms.non_mutating.binary_search binary_search]] +[def __range_algorithms_count__ [link range.reference.algorithms.non_mutating.count count]] +[def __range_algorithms_count_if__ [link range.reference.algorithms.non_mutating.count_if count_if]] +[def __range_algorithms_equal__ [link range.reference.algorithms.non_mutating.equal equal]] +[def __range_algorithms_equal_range__ [link range.reference.algorithms.non_mutating.equal_range equal_range]] +[def __range_algorithms_for_each__ [link range.reference.algorithms.non_mutating.for_each for_each]] +[def __range_algorithms_find__ [link range.reference.algorithms.non_mutating.find find]] +[def __range_algorithms_find_end__ [link range.reference.algorithms.non_mutating.find_end find_end]] +[def __range_algorithms_find_first_of__ [link range.reference.algorithms.non_mutating.find_first_of find_first_of]] +[def __range_algorithms_find_if__ [link range.reference.algorithms.non_mutating.find_if find_if]] +[def __range_algorithms_lexicographical_compare__ [link range.reference.algorithms.non_mutating.lexicographical_compare lexicographical_compare]] +[def __range_algorithms_lower_bound__ [link range.reference.algorithms.non_mutating.lower_bound lower_bound]] +[def __range_algorithms_max_element__ [link range.reference.algorithms.non_mutating.max_element max_element]] +[def __range_algorithms_min_element__ [link range.reference.algorithms.non_mutating.min_element min_element]] +[def __range_algorithms_mismatch__ [link range.reference.algorithms.non_mutating.mismatch mismatch]] +[def __range_algorithms_search__ [link range.reference.algorithms.non_mutating.search search]] +[def __range_algorithms_search_n__ [link range.reference.algorithms.non_mutating.search_n search_n]] +[def __range_algorithms_upper_bound__ [link range.reference.algorithms.non_mutating.upper_bound upper_bound]] + +[def __range_algorithms_copy__ [link range.reference.algorithms.mutating.copy copy]] +[def __range_algorithms_copy_backward__ [link range.reference.algorithms.mutating.copy_backward copy_backward]] +[def __range_algorithms_fill__ [link range.reference.algorithms.mutating.fill fill]] +[def __range_algorithms_fill_n__ [link range.reference.algorithms.mutating.fill_n fill_n]] +[def __range_algorithms_generate__ [link range.reference.algorithms.mutating.generate generate]] +[def __range_algorithms_inplace_merge__ [link range.reference.algorithms.mutating.inplace_merge inplace_merge]] +[def __range_algorithms_merge__ [link range.reference.algorithms.mutating.merge merge]] +[def __range_algorithms_nth_element__ [link range.reference.algorithms.mutating.nth_element nth_element]] +[def __range_algorithms_partial_sort__ [link range.reference.algorithms.mutating.partial_sort partial_sort]] +[def __range_algorithms_partition__ [link range.reference.algorithms.mutating.partition partition]] +[def __range_algorithms_random_shuffle__ [link range.reference.algorithms.mutating.random_shuffle random_shuffle]] +[def __range_algorithms_remove__ [link range.reference.algorithms.mutating.remove remove]] +[def __range_algorithms_remove_copy__ [link range.reference.algorithms.mutating.remove_copy remove_copy]] +[def __range_algorithms_remove_copy_if__ [link range.reference.algorithms.mutating.remove_copy_if remove_copy_if]] +[def __range_algorithms_remove_if__ [link range.reference.algorithms.mutating.remove_if remove_if]] +[def __range_algorithms_replace__ [link range.reference.algorithms.mutating.replace replace]] +[def __range_algorithms_replace_copy__ [link range.reference.algorithms.mutating.replace_copy replace_copy]] +[def __range_algorithms_replace_copy_if__ [link range.reference.algorithms.mutating.replace_copy_if replace_copy_if]] +[def __range_algorithms_replace_if__ [link range.reference.algorithms.mutating.replace_if replace_if]] +[def __range_algorithms_reverse__ [link range.reference.algorithms.mutating.reverse reverse]] +[def __range_algorithms_reverse_copy__ [link range.reference.algorithms.mutating.reverse_copy reverse_copy]] +[def __range_algorithms_rotate__ [link range.reference.algorithms.mutating.rotate rotate]] +[def __range_algorithms_rotate_copy__ [link range.reference.algorithms.mutating.rotate_copy rotate_copy]] +[def __range_algorithms_sort__ [link range.reference.algorithms.mutating.sort sort]] +[def __range_algorithms_stable_partition__ [link range.reference.algorithms.mutating.stable_partition stable_partition]] +[def __range_algorithms_stable_sort__ [link range.reference.algorithms.mutating.stable_sort stable_sort]] +[def __range_algorithms_swap_ranges__ [link range.reference.algorithms.mutating.swap_ranges swap_ranges]] +[def __range_algorithms_transform__ [link range.reference.algorithms.mutating.transform transform]] +[def __range_algorithms_unique__ [link range.reference.algorithms.mutating.unique unique]] +[def __range_algorithms_unique_copy__ [link range.reference.algorithms.mutating.unique_copy unique_copy]] + +[def __range_algorithms_includes__ [link range.reference.algorithms.set.includes includes]] +[def __range_algorithms_set_union__ [link range.reference.algorithms.set.set_union set_union]] +[def __range_algorithms_set_intersection__ [link range.reference.algorithms.set.set_intersection set_intersection]] +[def __range_algorithms_set_difference__ [link range.reference.algorithms.set.set_difference set_difference]] +[def __range_algorithms_set_symmetric_difference__ [link range.reference.algorithms.set.set_symmetric_difference set_symmetric_difference]] + +[def __range_algorithms_push_heap__ [link range.reference.algorithms.heap.push_heap push_heap]] +[def __range_algorithms_pop_heap__ [link range.reference.algorithms.heap.pop_heap pop_heap]] +[def __range_algorithms_make_heap__ [link range.reference.algorithms.heap.make_heap make_heap]] +[def __range_algorithms_sort_heap__ [link range.reference.algorithms.heap.sort_heap sort_heap]] + +[def __range_algorithms_next_permutation__ [link range.reference.algorithms.permutation.next_permutation next_permutation]] +[def __range_algorithms_prev_permutation__ [link range.reference.algorithms.permutation.prev_permutation prev_permutation]] + +[def __range_algorithm_ext_copy_n__ [link range.reference.algorithms.new.copy_n copy_n]] +[def __range_algorithm_ext_erase__ [link range.reference.algorithms.new.erase erase]] +[def __range_algorithm_ext_for_each__ [link range.reference.algorithms.new.for_each for_each]] +[def __range_algorithm_ext_insert__ [link range.reference.algorithms.new.insert insert]] +[def __range_algorithm_ext_iota__ [link range.reference.algorithms.new.iota iota]] +[def __range_algorithm_ext_is_sorted__ [link range.reference.algorithms.new.is_sorted is_sorted]] +[def __range_algorithm_ext_overwrite__ [link range.reference.algorithms.new.overwrite overwrite]] +[def __range_algorithm_ext_push_back__ [link range.reference.algorithms.new.push_back push_back]] +[def __range_algorithm_ext_push_front__ [link range.reference.algorithms.new.push_front push_front]] [def __single_pass_iterator__ [@boost:/libs/iterator/doc/new-iter-concepts.html#singls-pass-iterators-lib-single-pass-iterators Single Pass Iterator]] [def __forward_traversal_iterator__ [@boost:/libs/iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators Forward Traversal Iterator]] @@ -80,11 +175,15 @@ [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. +Boost.Range is a collection of concepts and utilities, range-based algorithms, +as well as range adaptors that allow for efficient and expressive code. + +Using Boost.Range inplace of the standard library alternatives results in more +readable code and in many cases greater efficiency. + [include introduction.qbk] [include concepts.qbk] [include reference.qbk] -[include utilities.qbk] [include style.qbk] [include headers.qbk] [include examples.qbk] diff --git a/doc/headers.qbk b/doc/headers.qbk index 9e29745..0013853 100644 --- a/doc/headers.qbk +++ b/doc/headers.qbk @@ -1,5 +1,6 @@ [section Library Headers] +[section General] [table [[Header ] [Includes ] [Related Concept ]] [[`` ] [everything from Boost.Range version 1 (Boost versions 1.42 and below). Includes the core range functions and metafunctinos, but excludes Range Adaptors and Range Algorithms. ] [- ]] @@ -23,7 +24,115 @@ [[`` ] [__iterator_range__ ] [- ]] [[`` ] [__sub_range__ ] [- ]] [[`` ] [__range_concepts__ ] [- ]] + [[`` ] [every range adaptor ] [- ]] + [[`` ] [every range equivalent of an STL algorithm ] [- ]] + [[`` ] [every range algorithm that is an extension of the STL algorithms ] [- ]] + [[`` ] [ __counting_range__ ] [-]] + [[`` ] [ __istream_range__ ] [-]] + [[`` ] [ __irange__ ] [-]] + [[`` ] [ __join__ ] [-]] ] +[endsect] + +[section Adaptors] +[table + [[Header ][Includes ]] + [[``] [__range_adaptors_adjacent_filtered__ ]] + [[``] [__range_adaptors_copied__]] + [[``] [__range_adaptors_filtered__]] + [[``] [__range_adaptors_indexed__]] + [[``] [__range_adaptors_map_keys__ __range_adaptors_map_values__]] + [[``] [__range_adaptors_replaced__]] + [[``] [__range_adaptors_replaced_if__]] + [[``] [__range_adaptors_reversed__]] + [[``] [__range_adaptors_sliced__]] + [[``] [__range_adaptors_strided__]] + [[``] [__range_adaptors_tokenized__]] + [[``] [__range_adaptors_transformed__]] + [[``] [__range_adaptors_uniqued__]] +] +[endsect] + +[section Algorithm] +[table + [[Header ][Includes ]] + [[``] [__range_algorithms_adjacent_find__]] + [[``] [__range_algorithms_binary_search__]] + [[``] [__range_algorithms_copy__]] + [[``] [__range_algorithms_copy_backward__]] + [[``] [__range_algorithms_count__]] + [[``] [__range_algorithms_count_if__]] + [[``] [__range_algorithms_equal__]] + [[``] [__range_algorithms_equal_range__]] + [[``] [__range_algorithms_fill__]] + [[``] [__range_algorithms_fill_n__]] + [[``] [__range_algorithms_find__]] + [[``] [__range_algorithms_find_end__]] + [[``] [__range_algorithms_find_first_of__]] + [[``] [__range_algorithms_find_if__]] + [[``] [__range_algorithms_for_each__]] + [[``] [__range_algorithms_generate__]] + [[``] [__range_algorithms_push_heap__ + __range_algorithms_pop_heap__ + __range_algorithms_make_heap__ + __range_algorithms_sort_heap__]] + [[``] [__range_algorithms_inplace_merge__]] + [[``] [__range_algorithms_lexicographical_compare__]] + [[``] [__range_algorithms_lower_bound__]] + [[``] [__range_algorithms_max_element__]] + [[``] [__range_algorithms_merge__]] + [[``] [__range_algorithms_min_element__]] + [[``] [__range_algorithms_mismatch__]] + [[``] [__range_algorithms_nth_element__]] + [[``] [__range_algorithms_partial_sort__]] + [[``] [__range_algorithms_partition__]] + [[``] [__range_algorithms_next_permutation__ + __range_algorithms_prev_permutation__]] + [[``] [__range_algorithms_random_shuffle__]] + [[``] [__range_algorithms_remove__]] + [[``] [__range_algorithms_remove_copy__]] + [[``] [__range_algorithms_remove_copy_if__]] + [[``] [__range_algorithms_remove_if__]] + [[``] [__range_algorithms_replace__]] + [[``] [__range_algorithms_replace_copy__]] + [[``] [__range_algorithms_replace_copy_if__]] + [[``] [__range_algorithms_replace_if__]] + [[``] [__range_algorithms_reverse__]] + [[``] [__range_algorithms_reverse_copy__]] + [[``] [__range_algorithms_rotate__]] + [[``] [__range_algorithms_rotate_copy__]] + [[``] [__range_algorithms_search__]] + [[``] [__range_algorithms_search_n__]] + [[``] [__range_algorithms_includes__ + __range_algorithms_set_union__ + __range_algorithms_set_intersection__ + __range_algorithms_set_difference__ + __range_algorithms_set_symmetric_difference__]] + [[``] [__range_algorithms_sort__]] + [[``] [__range_algorithms_stable_partition__]] + [[``] [__range_algorithms_swap_ranges__]] + [[``] [__range_algorithms_transform__]] + [[``] [__range_algorithms_unique__]] + [[``] [__range_algorithms_unique_copy__]] + [[``] [__range_algorithms_upper_bound__]] +] +[endsect] + +[section Algorithm Extensions] +[table + [[Header ][Includes ]] + [[``] [__range_algorithm_ext_copy_n__]] + [[``] [__range_algorithm_ext_erase__]] + [[``] [__range_algorithm_ext_for_each__]] + [[``] [__range_algorithm_ext_insert__]] + [[``] [__range_algorithm_ext_iota__]] + [[``] [__range_algorithm_ext_is_sorted__]] + [[``] [__range_algorithm_ext_overwrite__]] + [[``] [__range_algorithm_ext_push_back__]] + [[``] [__range_algorithm_ext_push_front__]] +] +[endsect] [endsect] diff --git a/doc/history_ack.qbk b/doc/history_ack.qbk index 4d4b103..545b3ab 100644 --- a/doc/history_ack.qbk +++ b/doc/history_ack.qbk @@ -1,12 +1,13 @@ [section:history_ack History and Acknowledgement] +[heading Version 1 - before Boost 1.43] 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. +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 @@ -14,9 +15,33 @@ Special thanks goes to * 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. +* 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. +The concept checks and their documentation was provided by Daniel Walker. + +[heading Version 2 - Boost 1.43 and beyond] +This version introduced Range Adaptors and Range Algorithms. This version 2 is +the result of a merge of all of the RangeEx features into Boost.Range. + +There were an enormous number of very significant contributors through all +stages of this library. + +The people in the following list all made contributions in the form of reviews, +user feedback, design suggestions, or defect detection: + +* Thorsten Ottosen: review management, design advice, documentation feedback +* Eric Niebler: feedback +* Joel de Guzman: review +* Mathias Gaunard: review +* David Abrahams: implementation advice +* Robert Jones: defect reports, usage feedback +* Sean Parent: contributed experience from the Adobe range library +* Arno Schoedl: implementations, and review +* Rogier van Dalen: review +* Vincente Botet: review, documentation feedback + +Regardless of how I write this section it will never truly fairly capture the +gratitude that I feel to all who have contributed. Thank you everyone. [endsect] diff --git a/doc/html/index.html b/doc/html/index.html index 27ee9ba..b2f6b77 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -30,7 +30,7 @@

- Boost.Range is a collection of concepts and utilities that are particularly useful - for specifying and implementing generic algorithms. + Boost.Range is a collection of concepts and utilities, range-based algorithms, + as well as range adaptors that allow for efficient and expressive code. +

+

+ Using Boost.Range inplace of the standard library alternatives results in more + readable code and in many cases greater efficiency.

- +

Last revised: April 11, 2010 at 21:49:16 GMT

Last revised: April 28, 2010 at 15:53:14 GMT


diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index df8f151..8a0d31a 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -14,112 +14,129 @@ range/reference/semantics.html range/reference/semantics/metafunctions.html range/reference/semantics/functions.html range/reference/adaptors.html -range/reference/adaptors/adaptors_introduction.html +range/reference/adaptors/introduction.html range/reference/adaptors/adaptors_synopsis.html -range/reference/adaptors/adaptors_general_requirements.html -range/reference/adaptors/adaptors_reference.html -range/reference/adaptors/adaptors_reference/adjacent_filtered.html -range/reference/adaptors/adaptors_reference/copied.html -range/reference/adaptors/adaptors_reference/filtered.html -range/reference/adaptors/adaptors_reference/indexed.html -range/reference/adaptors/adaptors_reference/indirected.html -range/reference/adaptors/adaptors_reference/map_keys.html -range/reference/adaptors/adaptors_reference/map_values.html -range/reference/adaptors/adaptors_reference/replaced.html -range/reference/adaptors/adaptors_reference/replaced_if.html -range/reference/adaptors/adaptors_reference/reversed.html -range/reference/adaptors/adaptors_reference/sliced.html -range/reference/adaptors/adaptors_reference/strided.html -range/reference/adaptors/adaptors_reference/tokenized.html -range/reference/adaptors/adaptors_reference/transformed.html -range/reference/adaptors/adaptors_reference/uniqued.html +range/reference/adaptors/general_requirements.html +range/reference/adaptors/reference.html +range/reference/adaptors/reference/adjacent_filtered.html +range/reference/adaptors/reference/copied.html +range/reference/adaptors/reference/filtered.html +range/reference/adaptors/reference/indexed.html +range/reference/adaptors/reference/indirected.html +range/reference/adaptors/reference/map_keys.html +range/reference/adaptors/reference/map_values.html +range/reference/adaptors/reference/replaced.html +range/reference/adaptors/reference/replaced_if.html +range/reference/adaptors/reference/reversed.html +range/reference/adaptors/reference/sliced.html +range/reference/adaptors/reference/strided.html +range/reference/adaptors/reference/tokenized.html +range/reference/adaptors/reference/transformed.html +range/reference/adaptors/reference/uniqued.html range/reference/algorithms.html range/reference/algorithms/range_algorithm_introduction.html -range/reference/algorithms/range_algorithm_mutating_algorithms.html -range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html -range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html -range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html -range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html -range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html -range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html -range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html -range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html -range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html -range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html -range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html -range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html -range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html -range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html -range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html -range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html -range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html -range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html -range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html -range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html -range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html -range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html -range/reference/algorithms/set_algorithms.html -range/reference/algorithms/set_algorithms/includes.html -range/reference/algorithms/set_algorithms/set_union.html -range/reference/algorithms/set_algorithms/set_intersection.html -range/reference/algorithms/set_algorithms/set_difference.html -range/reference/algorithms/set_algorithms/set_symmetric_difference.html -range/reference/algorithms/heap_algorithms.html -range/reference/algorithms/heap_algorithms/push_heap.html -range/reference/algorithms/heap_algorithms/pop_heap.html -range/reference/algorithms/heap_algorithms/make_heap.html -range/reference/algorithms/heap_algorithms/sort_heap.html -range/reference/algorithms/permutation_algorithms.html -range/reference/algorithms/permutation_algorithms/next_permutation.html -range/reference/algorithms/permutation_algorithms/prev_permutation.html -range/reference/algorithms/range_algorithm_new_algorithms.html -range/reference/algorithms/range_algorithm_new_algorithms/erase.html -range/reference/algorithms/range_algorithm_new_algorithms/for_each.html -range/reference/algorithms/range_algorithm_new_algorithms/insert.html -range/reference/algorithms/range_algorithm_new_algorithms/iota.html -range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html -range/reference/algorithms/range_algorithm_new_algorithms/push_back.html -range/reference/algorithms/range_algorithm_new_algorithms/push_front.html -range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html -range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html -range/reference/algorithms/range_numeric.html -range/reference/algorithms/range_numeric/accumulate.html -range/reference/algorithms/range_numeric/adjacent_difference.html -range/reference/algorithms/range_numeric/inner_product.html -range/reference/algorithms/range_numeric/partial_sum.html +range/reference/algorithms/mutating.html +range/reference/algorithms/mutating/copy.html +range/reference/algorithms/mutating/copy_backward.html +range/reference/algorithms/mutating/fill.html +range/reference/algorithms/mutating/fill_n.html +range/reference/algorithms/mutating/generate.html +range/reference/algorithms/mutating/inplace_merge.html +range/reference/algorithms/mutating/merge.html +range/reference/algorithms/mutating/nth_element.html +range/reference/algorithms/mutating/partial_sort.html +range/reference/algorithms/mutating/partition.html +range/reference/algorithms/mutating/random_shuffle.html +range/reference/algorithms/mutating/remove.html +range/reference/algorithms/mutating/remove_copy.html +range/reference/algorithms/mutating/remove_copy_if.html +range/reference/algorithms/mutating/remove_if.html +range/reference/algorithms/mutating/replace.html +range/reference/algorithms/mutating/replace_copy.html +range/reference/algorithms/mutating/replace_copy_if.html +range/reference/algorithms/mutating/replace_if.html +range/reference/algorithms/mutating/reverse.html +range/reference/algorithms/mutating/reverse_copy.html +range/reference/algorithms/mutating/rotate.html +range/reference/algorithms/mutating/rotate_copy.html +range/reference/algorithms/mutating/sort.html +range/reference/algorithms/mutating/stable_partition.html +range/reference/algorithms/mutating/stable_sort.html +range/reference/algorithms/mutating/swap_ranges.html +range/reference/algorithms/mutating/transform.html +range/reference/algorithms/mutating/unique.html +range/reference/algorithms/mutating/unique_copy.html +range/reference/algorithms/non_mutating.html +range/reference/algorithms/non_mutating/adjacent_find.html +range/reference/algorithms/non_mutating/binary_search.html +range/reference/algorithms/non_mutating/count.html +range/reference/algorithms/non_mutating/count_if.html +range/reference/algorithms/non_mutating/equal.html +range/reference/algorithms/non_mutating/equal_range.html +range/reference/algorithms/non_mutating/for_each.html +range/reference/algorithms/non_mutating/find.html +range/reference/algorithms/non_mutating/find_end.html +range/reference/algorithms/non_mutating/find_first_of.html +range/reference/algorithms/non_mutating/find_if.html +range/reference/algorithms/non_mutating/lexicographical_compare.html +range/reference/algorithms/non_mutating/lower_bound.html +range/reference/algorithms/non_mutating/max_element.html +range/reference/algorithms/non_mutating/min_element.html +range/reference/algorithms/non_mutating/mismatch.html +range/reference/algorithms/non_mutating/search.html +range/reference/algorithms/non_mutating/search_n.html +range/reference/algorithms/non_mutating/upper_bound.html +range/reference/algorithms/set.html +range/reference/algorithms/set/includes.html +range/reference/algorithms/set/set_union.html +range/reference/algorithms/set/set_intersection.html +range/reference/algorithms/set/set_difference.html +range/reference/algorithms/set/set_symmetric_difference.html +range/reference/algorithms/heap.html +range/reference/algorithms/heap/push_heap.html +range/reference/algorithms/heap/pop_heap.html +range/reference/algorithms/heap/make_heap.html +range/reference/algorithms/heap/sort_heap.html +range/reference/algorithms/permutation.html +range/reference/algorithms/permutation/next_permutation.html +range/reference/algorithms/permutation/prev_permutation.html +range/reference/algorithms/new.html +range/reference/algorithms/new/copy_n.html +range/reference/algorithms/new/erase.html +range/reference/algorithms/new/for_each.html +range/reference/algorithms/new/insert.html +range/reference/algorithms/new/iota.html +range/reference/algorithms/new/is_sorted.html +range/reference/algorithms/new/overwrite.html +range/reference/algorithms/new/push_back.html +range/reference/algorithms/new/push_front.html +range/reference/algorithms/new/remove_erase.html +range/reference/algorithms/new/remove_erase_if.html +range/reference/algorithms/numeric.html +range/reference/algorithms/numeric/accumulate.html +range/reference/algorithms/numeric/adjacent_difference.html +range/reference/algorithms/numeric/inner_product.html +range/reference/algorithms/numeric/partial_sum.html range/reference/ranges.html range/reference/ranges/counting_range.html range/reference/ranges/istream_range.html range/reference/ranges/irange.html +range/reference/utilities.html +range/reference/utilities/iterator_range.html +range/reference/utilities/sub_range.html +range/reference/utilities/join.html range/reference/extending.html range/reference/extending/method_1.html range/reference/extending/method_2.html range/reference/extending/method_3.html range/reference/extending/method_3/method_3_1.html range/reference/extending/method_3/method_3_2.html -range/utilities.html -range/utilities/iterator_range.html -range/utilities/sub_range.html -range/utilities/join.html range/style_guide.html range/library_headers.html +range/library_headers/general.html +range/library_headers/adaptors.html +range/library_headers/algorithm.html +range/library_headers/algorithm_extensions.html range/examples.html range/mfc_atl.html range/mfc_atl/requirements.html diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index e3ae956..1edda7b 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -27,7 +27,7 @@ Bidirectional Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -75,7 +75,7 @@ Traversal Iterator.

- + Refinement of
@@ -83,7 +83,7 @@ Forward Range

- + Associated types
@@ -136,7 +136,7 @@
- + Valid expressions
@@ -221,7 +221,7 @@
- + Complexity guarantees
@@ -232,7 +232,7 @@ Forward Range.

- + Invariants
@@ -272,7 +272,7 @@
- + See also

diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index b5d5407..311794e 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -79,7 +79,7 @@

- + See also

diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index 919f6dd..72df009 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -27,7 +27,7 @@ Forward Range

- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,14 +73,14 @@ Traversal Iterator.

- + Refinement of

Single Pass Range

- + Associated types
@@ -132,7 +132,7 @@
- + See also

diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index a695e97..66edd3c 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -27,7 +27,7 @@ Random Access Range

- + Description

@@ -35,7 +35,7 @@ Access Traversal Iterator.

- + Refinement of
@@ -43,7 +43,7 @@ Bidirectional Range

- + Valid expressions
@@ -89,7 +89,7 @@
- + Expression semantics
@@ -139,7 +139,7 @@
- + Complexity guarantees
@@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

- + Invariants
diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 5588147..5728a92 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -27,7 +27,7 @@ Single Pass Range
- + Notation
@@ -65,7 +65,7 @@
- + Description

@@ -73,7 +73,7 @@ Pass Iterator.

- + Associated types
@@ -126,7 +126,7 @@
- + Valid expressions
@@ -198,7 +198,7 @@
- + Expression semantics
@@ -266,7 +266,7 @@
- + Complexity guarantees
@@ -276,7 +276,7 @@ constant time.

- + Invariants
@@ -316,7 +316,7 @@
- + See also

diff --git a/doc/html/range/examples.html b/doc/html/range/examples.html index b272df8..4be5b97 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -56,7 +56,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/faq.html b/doc/html/range/faq.html index 0c9d40b..cb21529 100644 --- a/doc/html/range/faq.html +++ b/doc/html/range/faq.html @@ -46,10 +46,9 @@

- Note that an iterator_range is somewhat more + Note that an iterator_range is somewhat more convenient than a pair - and that a sub_range - does propagate const-ness. + and that a sub_range does propagate const-ness.

diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index 930b6b6..a67833d 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -25,6 +25,11 @@ +

+ + Version 1 - + before Boost 1.43 +

The library have been under way for a long time. Dietmar Kühl originally intended to submit an array_traits class @@ -73,6 +78,59 @@

The concept checks and their documentation was provided by Daniel Walker.

+

+ + Version + 2 - Boost 1.43 and beyond +

+

+ This version introduced Range Adaptors and Range Algorithms. This version 2 + is the result of a merge of all of the RangeEx features into Boost.Range. +

+

+ There were an enormous number of very significant contributors through all + stages of this library. +

+

+ The people in the following list all made contributions in the form of reviews, + user feedback, design suggestions, or defect detection: +

+
    +
  • + Thorsten Ottosen: review management, design advice, documentation feedback +
  • +
  • + Eric Niebler: feedback +
  • +
  • + Joel de Guzman: review +
  • +
  • + Mathias Gaunard: review +
  • +
  • + David Abrahams: implementation advice +
  • +
  • + Robert Jones: defect reports, usage feedback +
  • +
  • + Sean Parent: contributed experience from the Adobe range library +
  • +
  • + Arno Schoedl: implementations, and review +
  • +
  • + Rogier van Dalen: review +
  • +
  • + Vincente Botet: review, documentation feedback +
  • +
+

+ Regardless of how I write this section it will never truly fairly capture the + gratitude that I feel to all who have contributed. Thank you everyone. +

diff --git a/doc/html/range/library_headers.html b/doc/html/range/library_headers.html index 58ddcff..0e06413 100644 --- a/doc/html/range/library_headers.html +++ b/doc/html/range/library_headers.html @@ -7,7 +7,7 @@ - +
@@ -20,401 +20,19 @@

-PrevUpHomeNext +PrevUpHomeNext
-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Header -

-
-

- Includes -

-
-

- Related Concept -

-
-

- <boost/range.hpp> -

-
-

- everything from Boost.Range version 1 (Boost versions 1.42 and below). - Includes the core range functions and metafunctinos, but excludes - Range Adaptors and Range Algorithms. -

-
-

- - -

-
-

- <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/difference_type.hpp> -

-
-

- range_difference -

-
-

- Forward Range -

-
-

- <boost/range/pointer.hpp> -

-
-

- range_pointer -

-
-

- - -

-
-

- <boost/range/category.hpp> -

-
-

- range_category -

-
-

- - -

-
-

- <boost/range/reverse_iterator.hpp> -

-
-

- range_reverse_iterator -

-
-

- Bidirectional - Range -

-
-

- <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/distance.hpp> -

-
-

- distance -

-
-

- Forward Range -

-
-

- <boost/range/size.hpp> -

-
-

- size -

-
-

- Random Access - Range -

-
-

- <boost/range/rbegin.hpp> -

-
-

- rbegin and const_rbegin -

-
-

- Bidirectional - Range -

-
-

- <boost/range/rend.hpp> -

-
-

- rend and const_rend -

-
-

- Bidirectional - Range -

-
-

- <boost/range/as_array.hpp> -

-
-

- as_array -

-
-

- - -

-
-

- <boost/range/as_literal.hpp> -

-
-

- as_literal -

-
-

- - -

-
-

- <boost/range/iterator_range.hpp> -

-
-

- iterator_range -

-
-

- - -

-
-

- <boost/range/sub_range.hpp> -

-
-

- sub_range -

-
-

- - -

-
-

- <boost/range/concepts.hpp> -

-
-

- Range concepts -

-
-

- - -

-
+
@@ -426,7 +44,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 63558aa..1b4092d 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -34,7 +34,7 @@
References
- + Introduction

@@ -100,7 +100,7 @@

- + Overview

diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 901e0b1..334df5a 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -51,7 +51,7 @@

  • do not pass rvalues to begin(), - end() and iterator_range Range constructors + end() and iterator_range Range constructors and assignment operators,
  • diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index 70c17dc..2e597ea 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -24,7 +24,7 @@
  • Overview
    @@ -36,29 +36,26 @@
    Range Adaptors
    -
    Introduction +
    Introduction and motivation
    Synopsis
    -
    - General Requirements
    -
    Reference
    +
    General + Requirements
    +
    Reference
    Range Algorithm
    Introduction and motivation
    -
    - Mutating algorithms
    -
    - Non-mutating algorithms
    -
    Set algorithms
    -
    Heap algorithms
    -
    - Permutation algorithms
    -
    - New algorithms
    -
    Numeric +
    Mutating algorithms
    +
    Non-mutating algorithms
    +
    Set algorithms
    +
    Heap algorithms
    +
    Permutation + algorithms
    +
    New algorithms
    +
    Numeric algorithms
    Provided Ranges
    @@ -66,6 +63,12 @@
    istream_range
    irange
    +
    Utilities
    +
    +
    Class iterator_range
    +
    Class sub_range
    +
    Function join
    +
    Extending the library
    Method 1: provide diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index 5ab0ecd..86877d9 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -7,7 +7,7 @@ - + @@ -20,19 +20,19 @@

    -PrevUpHomeNext +PrevUpHomeNext
    @@ -45,7 +45,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html index e1e4e26..80d2e25 100644 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ b/doc/html/range/reference/adaptors/adaptors_introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

    - + Composition of Adaptors
    @@ -159,7 +159,7 @@ is the design solution to this problem.

    - + Range Adaptor alternative to copy_if algorithm
    @@ -176,7 +176,7 @@

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/adaptors/adaptors_synopsis.html b/doc/html/range/reference/adaptors/adaptors_synopsis.html index d0fea59..c18bb4f 100644 --- a/doc/html/range/reference/adaptors/adaptors_synopsis.html +++ b/doc/html/range/reference/adaptors/adaptors_synopsis.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -61,7 +61,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/general_requirements.html b/doc/html/range/reference/adaptors/general_requirements.html new file mode 100644 index 0000000..9cff81a --- /dev/null +++ b/doc/html/range/reference/adaptors/general_requirements.html @@ -0,0 +1,141 @@ + + + +General Requirements + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + In the description of generator expressions, the following notation is + used: +

    +
      +
    • +fwdRng is an expression + of a type R that models + ForwardRange +
    • +
    • +biRng is an expression + of a type R that models + BidirectionalRange +
    • +
    • +rndRng is an expression + of a type R that models + RandomAccessRange +
    • +
    • +pred is an expression + of a type that models UnaryPredicate +
    • +
    • +bi_pred is an expression + of a type that models BinaryPredicate +
    • +
    • +fun is an expression + of a type that models UnaryFunction +
    • +
    • +value, new_value and old_value + are objects convertible to boost::range_value<R>::type +
    • +
    • +n,m are integer expressions convertible + to range_difference<R>::type +
    • +
    +

    + Also note that boost::range_value<R>::type must be implicitly convertible to + the type arguments to pred, + bi_pred and fun. +

    +

    + Range Category in the following adaptor descriptions refers to the minimum + range concept required by the range passed to the adaptor. The resultant + range is a model of the same range concept as the input range unless specified + otherwise. +

    +

    + Returned Range Category is the concept of the returned range. In some cases + the returned range is of a lesser category than the range passed to the + adaptor. For example, the filtered + adaptor returns only a ForwardRange + regardless of the input. +

    +

    + Furthermore, the following rules apply to any expression of the form +

    +
    rng | boost::adaptors::adaptor_generator
    +
    +

    +

    +

    + 1. Applying operator|() + to a range R (always left + argument) and a range adapter RA + (always right argument) yields a new range type which may not conform to + the same range concept as R. +

    +

    + 2. The return-type of operator|() is otherwise unspecified. +

    +

    + 3. operator|() + is found by Argument Dependent Lookup (ADL) because a range adaptor is + implemented in namespace boost::adaptors. +

    +

    + 4. operator|() + is used to add new behaviour lazily + and never modifies its left argument. +

    +

    + 5. All iterators extracted from the left argument are extracted using qualified + calls to boost::begin() + and boost::end(). +

    +

    + 6. In addition to the throw-clauses + below, operator|() + may throw exceptions as a result of copying iterators. If such copying + cannot throw an exception, then neither can the whole expression. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/introduction.html b/doc/html/range/reference/adaptors/introduction.html new file mode 100644 index 0000000..4375a04 --- /dev/null +++ b/doc/html/range/reference/adaptors/introduction.html @@ -0,0 +1,274 @@ + + + +Introduction and motivation + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + A Range Adaptor is a class that wraps + an existing Range to provide a new Range with different behaviour. Since + the behaviour of Ranges is determined by their associated iterators, a + Range Adaptor simply wraps the underlying iterators with new special iterators. + In this example +

    +

    + +

    +
    #include <boost/range/adaptors.hpp>
    +#include <boost/range/algorithm.hpp>
    +#include <iostream>
    +#include <vector>
    +
    +std::vector<int> vec;
    +boost::copy( vec | boost::adaptors::reversed,
    +             std::ostream_iterator<int>(std::cout) );
    +
    +

    +

    +

    + the iterators from vec + are wrapped reverse_iterators. + The type of the underlying Range Adapter is not documented because you + do not need to know it. All that is relevant is that the expression +

    +

    + +

    +
    vec | boost::adaptors::reversed
    +
    +

    +

    +

    + returns a Range Adaptor where the iterator type is now the iterator type + of the range vec wrapped + in reverse_iterator. The + expression boost::adaptors::reversed is called an Adaptor + Generator. +

    +

    + There are two ways of constructing a range adaptor. The first is by using + operator|(). + This is my preferred technique, however while discussing range adaptors + with others it became clear that some users of the library strongly prefer + a more familiar function syntax, so equivalent functions of the present + tense form have been added as an alternative syntax. The equivalent to + rng | + reversed is adaptors::reverse(rng) for example. +

    +

    + Why do I prefer the operator| syntax? The answer is readability: +

    +

    + +

    +
    std::vector<int> vec;
    +boost::copy( boost::adaptors::reverse(vec),
    +             std::ostream_iterator<int>(std::cout) );
    +
    +

    +

    +

    + This might not look so bad, but when we apply several adaptors, it becomes + much worse. Just compare +

    +

    + +

    +
    std::vector<int> vec;
    +boost::copy( boost::adaptors::unique( boost::adaptors::reverse( vec ) ),
    +             std::ostream_iterator<int>(std::cout) );
    +
    +

    +

    +

    + to +

    +

    + +

    +
    std::vector<int> vec;
    +boost::copy( vec | boost::adaptors::reversed
    +                 | boost::adaptors::uniqued,
    +             std::ostream_iterator<int>(std::cout) );
    +
    +

    +

    +

    + Furthermore, some of the adaptor generators take arguments themselves and + these arguments are expressed with function call notation too. In those + situations, you will really appreciate the succinctness of operator|(). +

    +
    + + Composition + of Adaptors +
    +

    + Range Adaptors are a powerful complement to Range algorithms. The reason + is that adaptors are orthogonal + to algorithms. For example, consider these Range algorithms: +

    +
      +
    • boost::copy( rng, out )
    • +
    • boost::count( rng, pred )
    • +
    +

    + What should we do if we only want to copy an element a + if it satisfies some predicate, say pred(a)? + And what if we only want to count the elements that satisfy the same predicate? + The naive answer would be to use these algorithms: +

    +
      +
    • boost::copy_if( + rng, + pred, + out )
    • +
    • boost::count_if( + rng, + pred )
    • +
    +

    + These algorithms are only defined to maintain a one to one relationship + with the standard library algorithms. This approach of adding algorithm + suffers a combinatorial explosion. Inevitably many algorithms are missing + _if variants and there + is redundant development overhead for each new algorithm. The Adaptor Generator + is the design solution to this problem. +

    +
    + + Range + Adaptor alternative to copy_if algorithm +
    +

    + +

    +
    boost::copy_if( rng, pred, out );
    +
    +

    + can be expressed as +

    +
    boost::copy( rng | boost::adaptors::filtered(pred), out );
    +
    +

    +

    +
    + + Range + Adaptor alternative to count_if algorithm +
    +

    + +

    +
    boost::count_if( rng, pred );
    +
    +

    + can be expressed as +

    +
    boost::count( rng | boost::adaptors::filtered(pred), out );
    +
    +

    +

    +

    + What this means is that no + algorithm with the _if + suffix is needed. Furthermore, it turns out that algorithms with the _copy suffix are not needed either. Consider + the somewhat misdesigned replace_copy_if() which may be used as +

    +

    + +

    +
    std::vector<int> vec;
    +boost::replace_copy_if( rng, std::back_inserter(vec), pred );
    +
    +

    +

    +

    + With adaptors and algorithms we can express this as +

    +

    + +

    +
    std::vector<int> vec;
    +boost::push_back(vec, rng | boost::adaptors::replaced_if(pred, new_value));
    +
    +

    +

    +

    + The latter code has several benefits: +

    +

    + 1. it is more efficient + because we avoid extra allocations as might happen with std::back_inserter +

    +

    + 2. it is flexible + as we can subsequently apply even more adaptors, for example: +

    +
    boost::push_back(vec, rng | boost::adaptors::replaced_if(pred, new_value)
    +                          | boost::adaptors::reversed);
    +
    +

    +

    +

    + 3. it is safer because + there is no use of an unbounded output iterator. +

    +

    + In this manner, the composition + of Range Adaptors has the following consequences: +

    +

    + 1. we no longer need _if, + _copy, _copy_if + and _n variants of algorithms. +

    +

    + 2. we can generate a multitude of new algorithms on the fly, for example, + above we generated reverse_replace_copy_if() +

    +

    + In other words: +

    +

    + Range Adaptors are to algorithms what algorithms + are to containers +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference.html b/doc/html/range/reference/adaptors/reference.html new file mode 100644 index 0000000..a76fbcb --- /dev/null +++ b/doc/html/range/reference/adaptors/reference.html @@ -0,0 +1,63 @@ + + + +Reference + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index fc70d02..a8b27ff 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -53,7 +50,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/heap_algorithms.html b/doc/html/range/reference/algorithms/heap.html similarity index 51% rename from doc/html/range/reference/algorithms/heap_algorithms.html rename to doc/html/range/reference/algorithms/heap.html index 018906e..c06c707 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms.html +++ b/doc/html/range/reference/algorithms/heap.html @@ -6,8 +6,8 @@ - - + + @@ -20,21 +20,17 @@

    -PrevUpHomeNext +PrevUpHomeNext
    @@ -47,7 +43,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html similarity index 83% rename from doc/html/range/reference/algorithms/heap_algorithms/make_heap.html rename to doc/html/range/reference/algorithms/heap/make_heap.html index f261c6a..b3981c1 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/make_heap.html +++ b/doc/html/range/reference/algorithms/heap/make_heap.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +47,9 @@

    -
    - - Description +
    + + Description

    make_heap turns rng into a heap. @@ -60,16 +59,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -118,9 +117,9 @@ argument types. -

    - - Complexity +
    + + Complexity

    Linear. At most 3 * @@ -138,7 +137,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html b/doc/html/range/reference/algorithms/heap/pop_heap.html similarity index 84% rename from doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html rename to doc/html/range/reference/algorithms/heap/pop_heap.html index 3759ef1..66cd771 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap/pop_heap.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +47,9 @@

    -
    - - Description +
    + + Description

    pop_heap removes the @@ -62,16 +61,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -120,9 +119,9 @@ argument types. -

    - - Precondition: +
    + + Precondition:
    • !empty(rng)
    • @@ -130,9 +129,9 @@ rng is a heap.
    -
    - - Complexity +
    + + Complexity

    Logarithmic. At most 2 * @@ -150,7 +149,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html similarity index 81% rename from doc/html/range/reference/algorithms/heap_algorithms/push_heap.html rename to doc/html/range/reference/algorithms/heap/push_heap.html index 9857d21..83f9113 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/push_heap.html +++ b/doc/html/range/reference/algorithms/heap/push_heap.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +47,9 @@

    -
    - - Description +
    + + Description

    push_heap adds an element @@ -62,16 +61,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -120,9 +119,9 @@ argument types.

    -
    - - Precondition: +
    + + Precondition:
    • !empty(rng)
    • @@ -130,9 +129,9 @@ [begin(rng), prior(end(rng))) is a heap.
    -
    - - Complexity +
    + + Complexity

    Logarithmic. At most log(distance(rng)) comparisons. @@ -148,7 +147,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html similarity index 81% rename from doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html rename to doc/html/range/reference/algorithms/heap/sort_heap.html index c9c5746..15f018c 100644 --- a/doc/html/range/reference/algorithms/heap_algorithms/sort_heap.html +++ b/doc/html/range/reference/algorithms/heap/sort_heap.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +47,9 @@

    -
    - - Description +
    + + Description

    sort_heap turns a heap @@ -61,16 +60,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -119,16 +118,16 @@ argument types.

    -
    - - Precondition: +
    + + Precondition:

    rng is a heap.

    -
    - - Complexity +
    + + Complexity

    At most N * @@ -147,7 +146,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating.html b/doc/html/range/reference/algorithms/mutating.html new file mode 100644 index 0000000..1990363 --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating.html @@ -0,0 +1,91 @@ + + + +Mutating algorithms + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html b/doc/html/range/reference/algorithms/mutating/copy.html similarity index 69% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html rename to doc/html/range/reference/algorithms/mutating/copy.html index 7050fd9..fd94fc3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy.html +++ b/doc/html/range/reference/algorithms/mutating/copy.html @@ -1,13 +1,13 @@ -Range Algorithm - copy +copy - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -39,9 +38,9 @@

    -
    - - Description +
    + + Description

    copy copies all elements @@ -50,16 +49,16 @@ + distance(source_rng)). The return value is out_it + distance(source_rng)

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/copy.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -78,9 +77,9 @@ set of value types.
    -
    - - Precondition: +
    + + Precondition:
    • @@ -92,9 +91,9 @@ + distance(source_rng)) is a valid range.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(source_rng) assignments are performed. @@ -110,7 +109,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html similarity index 72% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html rename to doc/html/range/reference/algorithms/mutating/copy_backward.html index 5047d02..1c38629 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -1,13 +1,13 @@ -Range Algorithm - copy_backward +copy_backward - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -41,9 +41,9 @@

    -
    - - Description +
    + + Description

    copy_backward copies @@ -59,16 +59,16 @@ Note well that unlike all other standard algorithms out_it denotes the end of the output sequence.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/copy_backward.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -87,9 +87,9 @@ set of value types.
    -
    - - Precondition: +
    + + Precondition:
    • @@ -101,9 +101,9 @@ + distance(source_rng)) is a valid range.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(source_rng) assignments are performed. @@ -119,7 +119,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html similarity index 69% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html rename to doc/html/range/reference/algorithms/mutating/fill.html index 30c1bc4..d9b98a8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill.html +++ b/doc/html/range/reference/algorithms/mutating/fill.html @@ -1,13 +1,13 @@ -Range Algorithm - fill +fill - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -39,25 +38,25 @@

    -
    - - Description +
    + + Description

    fill assigns the value val to every element in the range rng.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/fill.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -78,9 +77,9 @@ type.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng) assignments are performed. @@ -96,7 +95,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html similarity index 70% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html rename to doc/html/range/reference/algorithms/mutating/fill_n.html index a202dea..95240f7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/fill_n.html +++ b/doc/html/range/reference/algorithms/mutating/fill_n.html @@ -1,13 +1,13 @@ -Range Algorithm - fill_n +fill_n - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -39,24 +38,24 @@

    -
    - - Description +
    + + Description

    fill_n assigns the value val to n elements in the range rng begining with boost::begin(rng).

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/fill_n.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -77,9 +76,9 @@ type.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly n assignments @@ -96,7 +95,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html similarity index 72% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html rename to doc/html/range/reference/algorithms/mutating/generate.html index a76b480..9d099d8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/generate.html +++ b/doc/html/range/reference/algorithms/mutating/generate.html @@ -1,13 +1,13 @@ -Range Algorithm - generate +generate - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -42,9 +41,9 @@

    -
    - - Description +
    + + Description

    generate assigns the @@ -52,16 +51,16 @@ to each element in range rng. Returns the resultant range.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/generate.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -83,9 +82,9 @@ set of value types.
    -
    - - Precondition: +
    + + Precondition:
    • @@ -97,9 +96,9 @@ + distance(rng)) is a valid range.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng) assignments are performed. @@ -115,7 +114,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html similarity index 83% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html rename to doc/html/range/reference/algorithms/mutating/inplace_merge.html index e0aa7fc..cebedbf 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -1,13 +1,13 @@ -Range Algorithm - inplace_merge +inplace_merge - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -38,18 +38,18 @@ BidirectionalRange& inplace_merge( BidirectionalRange& rng, typename range_iterator<BidirectionalRange>::type middle ); - + template<class BidirectionalRange> const BidirectionalRange& inplace_merge( const BidirectionalRange& rng, typename range_iterator<const BidirectionalRange>::type middle ); - + template<class BidirectionalRange, class BinaryPredicate> BidirectionalRange& inplace_merge( BidirectionalRange& rng, typename range_iterator<BidirectionalRange>::type middle, BinaryPredicate pred ); - + template<class BidirectionalRange, class BinaryPredicate> const BidirectionalRange& inplace_merge( const BidirectionalRange& rng, @@ -58,9 +58,9 @@

    -
    - - Description +
    + + Description

    inplace_merge combines @@ -71,16 +71,16 @@ is stable, meaning both that the relative order of elements within each input range is preserved.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/inplace_merge.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate version: @@ -115,13 +115,13 @@ value type is convertible to both BinaryPredicate's argument types.

    -
    - - Precondition: +
    + + Precondition:
    -
    - - For +
    + + For the non-predicate version:
      @@ -142,9 +142,9 @@ x is false.
    -
    - - For +
    + + For the predicate version:
      @@ -163,9 +163,9 @@ pred(y,x) == false.
    -
    - - Complexity +
    + + Complexity

    Worst case: O(N log(N)) @@ -181,7 +181,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html similarity index 87% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html rename to doc/html/range/reference/algorithms/mutating/merge.html index e2b5d56..6637a05 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/merge.html +++ b/doc/html/range/reference/algorithms/mutating/merge.html @@ -1,13 +1,13 @@ -Range Algorithm - merge +merge - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -56,9 +55,9 @@

    -
    - - Description +
    + + Description

    merge combines two sorted @@ -75,16 +74,16 @@ The non-predicate version uses the operator<() for the range value type. The predicate version uses the predicate instead of operator<().

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/merge.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate version: @@ -150,13 +149,13 @@ of value types.

    -
    - - Precondition: +
    + + Precondition:
    -
    - - For +
    + + For the non-predicate version:
      @@ -189,9 +188,9 @@ is a valid range.
    -
    - - For +
    + + For the predicate version:
      @@ -220,9 +219,9 @@ is a valid range.
    -
    - - Complexity +
    + + Complexity

    Linear. There are no comparisons if both rng1 @@ -241,7 +240,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html b/doc/html/range/reference/algorithms/mutating/nth_element.html similarity index 80% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html rename to doc/html/range/reference/algorithms/mutating/nth_element.html index 5b42602..52596c7 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -1,13 +1,13 @@ -Range Algorithm - nth_element +nth_element - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -58,9 +58,9 @@

    -
    - - Description +
    + + Description

    nth_element partially @@ -69,16 +69,16 @@ such that the element corresponding with the iterator nth is the same as the element that would be in that position if rng has been sorted.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/nth_element.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate version: @@ -127,9 +127,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    On average, linear in distance(rng). @@ -145,7 +145,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html b/doc/html/range/reference/algorithms/mutating/partial_sort.html similarity index 82% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html rename to doc/html/range/reference/algorithms/mutating/partial_sort.html index a202f53..f7fabfd 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -1,13 +1,13 @@ -Range Algorithm - partial_sort +partial_sort - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -58,9 +58,9 @@

    -
    - - Description +
    + + Description

    partial_sort rearranges @@ -74,16 +74,16 @@ is less than another by using operator<(). The predicate versions use the predicate instead.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/partial_sort.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate version: @@ -132,9 +132,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    Approximately distance(rng) * log(distance(begin(rng), middle)) comparisons. @@ -150,7 +150,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html similarity index 79% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html rename to doc/html/range/reference/algorithms/mutating/partition.html index e2d73d7..d74da64 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/partition.html +++ b/doc/html/range/reference/algorithms/mutating/partition.html @@ -1,13 +1,13 @@ -Range Algorithm - partition +partition - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -66,9 +65,9 @@

    -
    - - Description +
    + + Description

    partition orders the @@ -80,16 +79,16 @@ have a configurable range_return, found corresponds to the middle iterator.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/partition.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -107,9 +106,9 @@ argument type.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng) applications of pred, @@ -127,7 +126,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html similarity index 76% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html rename to doc/html/range/reference/algorithms/mutating/random_shuffle.html index 64643c5..1c64f84 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -1,13 +1,13 @@ -Range Algorithm - random_shuffle +random_shuffle - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    random_shuffle randomly @@ -60,16 +60,16 @@ use an internal random number generator. The versions of random_shuffle that do specify a Generator use this instead. Returns the shuffles range.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/random_shuffle.hpp

    -
    - - Requirements +
    + + Requirements

    For the version without a Generator: @@ -98,18 +98,18 @@ argument type.

    -
    - - Precondition: +
    + + Precondition:
    • distance(rng) is less than gen's maximum value.
    -
    - - Complexity +
    + + Complexity

    Linear. If !empty(rng), exactly distance(rng) - 1 @@ -126,7 +126,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html similarity index 81% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html rename to doc/html/range/reference/algorithms/mutating/remove.html index 016b1aa..310e46b 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove.html +++ b/doc/html/range/reference/algorithms/mutating/remove.html @@ -1,13 +1,13 @@ -Range Algorithm - remove +remove - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -66,9 +65,9 @@

    -
    - - Description +
    + + Description

    remove removes from @@ -83,16 +82,16 @@ end(rng)) are dereferenceable, but the elements are unspecified.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/remove.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -113,9 +112,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. remove performs @@ -133,7 +132,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html new file mode 100644 index 0000000..5855105 --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -0,0 +1,109 @@ + + + +remove_copy + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class ForwardRange, class Outputiterator, class Value>
    +OutputIterator
    +remove_copy(ForwardRange& rng, OutputIterator out, const Value& val);
    +
    +template<class ForwardRange, class OutputIterator, class Value>
    +OutputIterator
    +remove_copy(const ForwardRange& rng, OutputIterator out, const Value& val);
    +
    +

    +

    +
    + + Description +
    +

    + remove_copy copied all + of the elements x from + rng for which x == val is false. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/remove_copy.hpp +

    +
    + + Requirements +
    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +ForwardRange is mutable. +
    • +
    • +Value is a model of + the EqualityComparableConcept. +
    • +
    • + Objects of type Value + can be compared for equality with objects of ForwardRange's + value type. +
    • +
    +
    + + Complexity +
    +

    + Linear. remove_copy performs + exactly distance(rng) + comparisons for equality. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html new file mode 100644 index 0000000..7d827dd --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -0,0 +1,104 @@ + + + +remove_copy_if + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class ForwardRange, class Outputiterator, class UnaryPred>
    +OutputIterator
    +remove_copy_if(ForwardRange& rng, OutputIterator out, UnaryPred pred);
    +
    +template<class ForwardRange, class OutputIterator, class UnaryPred>
    +OutputIterator
    +remove_copy_if(const ForwardRange& rng, OutputIterator out, UnaryPred pred);
    +
    +

    +

    +
    + + Description +
    +

    + remove_copy_if copied + all of the elements x + from rng for which pred(x) + is false. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/remove_copy_if.hpp +

    +
    + + Requirements +
    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +ForwardRange is mutable. +
    • +
    • +UnaryPred is a model + of the UnaryPredicateConcept. +
    • +
    +
    + + Complexity +
    +

    + Linear. remove_copy_if + performs exactly distance(rng) comparisons with UnaryPred. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html similarity index 79% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html rename to doc/html/range/reference/algorithms/mutating/remove_if.html index 51cb94c..54c3146 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/remove_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_if.html @@ -1,13 +1,13 @@ -Range Algorithm - remove_if +remove_if - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -66,9 +65,9 @@

    -
    - - Description +
    + + Description

    remove_if removes from @@ -82,16 +81,16 @@ the range [new_last, end(rng)) are dereferenceable, but the elements are unspecified.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/remove_if.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -112,9 +111,9 @@ argument type.
    -
    - - Complexity +
    + + Complexity

    Linear. remove_if performs @@ -132,7 +131,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html similarity index 75% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html rename to doc/html/range/reference/algorithms/mutating/replace.html index dab9ee6..5a3a2eb 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace.html +++ b/doc/html/range/reference/algorithms/mutating/replace.html @@ -1,13 +1,13 @@ -Range Algorithm - replace +replace - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -48,25 +47,25 @@

    -
    - - Description +
    + + Description

    replace every element in rng equal to what with with_what. Return a reference to rng.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/replace.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -93,9 +92,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. replace performs @@ -113,7 +112,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html new file mode 100644 index 0000000..113c82e --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -0,0 +1,112 @@ + + + +replace_copy + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class ForwardRange, class OutputIterator, class Value>
    +OutputIterator replace_copy(const ForwardRange& rng, OutputIterator out,
    +                            const Value& what, const Value& with_what);
    +
    +

    +

    +
    + + Description +
    +

    + replace_copy copy every + element x in rng such that the corresponding element + in the output range y + is x == + what ? + with_what : + x. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/replace_copy.hpp +

    +
    + + Requirements +
    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +ForwardRange is mutable. +
    • +
    • +Value is convertible + to ForwardRange's value + type. +
    • +
    • +Value is a model of + the AssignableConcept. +
    • +
    • +OutputIterator is a + model of the OutputIteratorConcept. +
    • +
    +
    + + Complexity +
    +

    + Linear. replace_copy + performs exactly distance(rng). +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html new file mode 100644 index 0000000..34505fd --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -0,0 +1,114 @@ + + + +replace_copy_if + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class ForwardRange, class OutputIterator, class UnaryPredicate, class Value>
    +OutputIterator replace_copy_if(const ForwardRange& rng, OutputIterator out,
    +                               UnaryPredicate pred, const Value& with_what);
    +
    +

    +

    +
    + + Description +
    +

    + replace_copy_if copy + every element x in rng such that the corresponding element + in the output range y + is pred(x) ? with_what + : x. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/replace_copy_if.hpp +

    +
    + + Requirements +
    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +ForwardRange is mutable. +
    • +
    • +Value is convertible + to ForwardRange's value + type. +
    • +
    • +Value is a model of + the AssignableConcept. +
    • +
    • +OutputIterator is a + model of the OutputIteratorConcept. +
    • +
    • +UnaryPredicate is a + model of the UnaryPredicateConcept. +
    • +
    +
    + + Complexity +
    +

    + Linear. replace_copy_if + performs exactly distance(rng) evaluations of pred. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html similarity index 74% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html rename to doc/html/range/reference/algorithms/mutating/replace_if.html index 946b18c..d5c0a79 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -1,13 +1,13 @@ -Range Algorithm - replace_if +replace_if - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -42,25 +42,25 @@

    -
    - - Description +
    + + Description

    replace_if replaces every element x in rng for which pred(x) == true with with_what. Returns a reference to rng.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/replace_if.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -90,9 +90,9 @@ the AssignableConcept.
    -
    - - Complexity +
    + + Complexity

    Linear. replace_if performs @@ -111,7 +111,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html new file mode 100644 index 0000000..c0a5649 --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/reverse.html @@ -0,0 +1,96 @@ + + + +reverse + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class BidirectionalRange>
    +BidirectionalRange& reverse(BidirectionalRange& rng);
    +
    +template<class BidirectionalRange>
    +const BidirectionalRange& reverse(const BidirectionalRange& rng);
    +
    +

    +

    +
    + + Description +
    +

    + reverse reverses a range. + Returns a reference to the reversed range. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/reverse.hpp +

    +
    + + Requirements +
    +
      +
    • +BidirectionalRange + is a model of the Bidirectional + Range Concept. +
    • +
    • +BidirectionalRange + is mutable. +
    • +
    +
    + + Complexity +
    +

    + Linear. reverse makes + distance(rng)/2 calls to iter_swap. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html new file mode 100644 index 0000000..34475c0 --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -0,0 +1,101 @@ + + + +reverse_copy + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class BidirectionalRange, class OutputIterator>
    +OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out);
    +
    +

    +

    +
    + + Description +
    +

    + reverse_copy copies the + elements from rng in + reverse order to out. + Returns the output iterator one passed the last copied element. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/reverse_copy.hpp +

    +
    + + Requirements +
    +
      +
    • +BidirectionalRange + is a model of the Bidirectional + Range Concept. +
    • +
    • +BidirectionalRange + is mutable. +
    • +
    • +OutputIterator is a + model of the OutputIteratorConcept. +
    • +
    +
    + + Complexity +
    +

    + Linear. reverse_copy + makes distance(rng) + copies. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html similarity index 70% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html rename to doc/html/range/reference/algorithms/mutating/rotate.html index 2660663..b40be4a 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/rotate.html +++ b/doc/html/range/reference/algorithms/mutating/rotate.html @@ -1,13 +1,13 @@ -Range Algorithm - rotate +rotate - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -37,32 +36,32 @@

    template<class ForwardRange>
     ForwardRange& rotate(ForwardRange& rng,
                          typename range_iterator<ForwardRange>::type middle);
    -                     
    +
     template<class ForwardRange>
     const ForwardRange& rotate(const ForwardRange& rng,
                                typename range_iterator<const ForwardRange>::type middle);
     

    -
    - - Description +
    + + Description

    rotate rotates the elements in a range. It exchanges the two ranges [begin(rng), middle) and [middle, end(rng)). Returns a reference to rng.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/rotate.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -74,9 +73,9 @@ ForwardRange is mutable.
    -
    - - Precondition: +
    + + Precondition:
    • @@ -86,9 +85,9 @@ [middle, end(rng)) is a valid range.
    -
    - - Complexity +
    + + Complexity

    Linear. At most distance(rng) swaps are performed. @@ -104,7 +103,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html new file mode 100644 index 0000000..1f1a782 --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -0,0 +1,112 @@ + + + +rotate_copy + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class ForwardRange, class OutputIterator>
    +OutputIterator rotate_copy(
    +    const ForwardRange& rng,
    +    typename range_iterator<ForwardRange>::type middle,
    +    OutputIterator out);
    +
    +

    +

    +
    + + Description +
    +

    + rotate_copy rotates the + elements in a range. It copies the two ranges [begin(rng), middle) + and [middle, end(rng)) to out. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/rotate_copy.hpp +

    +
    + + Requirements +
    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +ForwardRange is mutable. +
    • +
    • +OutputIterator is a + model of the OutputIteratorConcept. +
    • +
    +
    + + Precondition: +
    +
      +
    • +[begin(rng), middle) is a valid range. +
    • +
    • +[middle, end(rng)) is a valid range. +
    • +
    +
    + + Complexity +
    +

    + Linear. Exactly distance(rng) elements are copied. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html similarity index 80% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html rename to doc/html/range/reference/algorithms/mutating/sort.html index 0fc2893..08f6f50 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/sort.html +++ b/doc/html/range/reference/algorithms/mutating/sort.html @@ -1,13 +1,13 @@ -Range Algorithm - sort +sort - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +47,9 @@

    -
    - - Description +
    + + Description

    sort sorts the elements @@ -71,16 +70,16 @@ function with a predicate, ascending order is defined by pred such that for all adjacent elements [x,y], pred(y, x) == false.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/sort.hpp

    -
    - - Requirements +
    + + Requirements

    For versions of sort without a predicate: @@ -129,9 +128,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    O(N log(N)) comparisons (both average and worst-case), @@ -148,7 +147,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html b/doc/html/range/reference/algorithms/mutating/stable_partition.html similarity index 80% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html rename to doc/html/range/reference/algorithms/mutating/stable_partition.html index d4178a2..b88e26c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -1,13 +1,13 @@ -Range Algorithm - stable_partition +stable_partition - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -60,9 +60,9 @@

    -
    - - Description +
    + + Description

    stable_partition reorders @@ -82,16 +82,16 @@ the found iterator is the iterator to the first element that fails to satisfy pred.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/stable_partition.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -107,9 +107,9 @@ model of the PredicateConcept.
    -
    - - Complexity +
    + + Complexity

    Best case: O(N) @@ -129,7 +129,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html similarity index 82% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html rename to doc/html/range/reference/algorithms/mutating/stable_sort.html index d0e3ddf..137605b 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -1,13 +1,13 @@ -Range Algorithm - stable_sort +stable_sort - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    stable_sort sorts the @@ -71,16 +71,16 @@ function with a predicate, ascending order is designed by pred such that for all adjacent elements [x,y], pred(y,x) == false.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/stable_sort.hpp

    -
    - - Requirements +
    + + Requirements

    For versions of stable_sort without a predicate @@ -129,9 +129,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    Best case: O(N) @@ -151,7 +151,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/swap_ranges.html b/doc/html/range/reference/algorithms/mutating/swap_ranges.html new file mode 100644 index 0000000..78bf64d --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -0,0 +1,104 @@ + + + +swap_ranges + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class SinglePassRange1, class SinglePassRange2>
    +SinglePassRange2& swap_ranges(SinglePassRange1& rng1, SinglePassRange& rng2);
    +
    +

    +

    +
    + + Description +
    +

    + swap_ranges swaps each + element x in rng1 with the corresponding element + y in rng2. + Returns a reference to rng2. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/swap_ranges.hpp +

    +
    + + Requirements +
    +
      +
    • +SinglePassRange1 is + a model of the Single + Pass Range Concept. +
    • +
    • +SinglePassRange1 is + mutable. +
    • +
    • +SinglePassRange2 is + a model of the Single + Pass Range Concept. +
    • +
    • +SinglePassRange2 is + mutable. +
    • +
    +
    + + Complexity +
    +

    + Linear. Exactly distance(rng1) elements are swapped. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html similarity index 86% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html rename to doc/html/range/reference/algorithms/mutating/transform.html index 110d48d..be08af4 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/transform.html +++ b/doc/html/range/reference/algorithms/mutating/transform.html @@ -1,13 +1,13 @@ -Range Algorithm - transform +transform - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -42,7 +41,7 @@ OutputIterator transform(const SinglePassRange1& rng, OutputIterator out, UnaryOperation fun); - + template< class SinglePassRange1, class SinglePassRange2, @@ -56,9 +55,9 @@

    -
    - - Description +
    + + Description

    UnaryOperation version: @@ -92,16 +91,16 @@

    The return value is out + min(distance(rng1), distance(rng2)).

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/transform.hpp

    -
    - - Requirements +
    + + Requirements

    For the unary versions of transform: @@ -169,9 +168,9 @@ set of value types.

    -
    - - Precondition: +
    + + Precondition:

    For the unary version of transform: @@ -201,9 +200,9 @@ [out, out + min(distance(rng1), distance(rng2))) is a valid range.

    -
    - - Complexity +
    + + Complexity

    Linear. The operation is applied exactly distance(rng1) for the unary version and min(distance(rng1), distance(rng2)) @@ -220,7 +219,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html similarity index 85% rename from doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html rename to doc/html/range/reference/algorithms/mutating/unique.html index ec4bf26..2ea15fd 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms/unique.html +++ b/doc/html/range/reference/algorithms/mutating/unique.html @@ -1,13 +1,13 @@ -Range Algorithm - unique +unique - - - + + + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -68,9 +67,9 @@

    -
    - - Description +
    + + Description

    unique removes all but @@ -86,16 +85,16 @@ for ForwardRange's value type.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/unique.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions of unique: @@ -137,9 +136,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    Linear. O(N) @@ -158,7 +157,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/unique_copy.html b/doc/html/range/reference/algorithms/mutating/unique_copy.html new file mode 100644 index 0000000..209ac02 --- /dev/null +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -0,0 +1,143 @@ + + + +unique_copy + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class SinglePassRange, class OutputIterator>
    +OutputIterator unique_copy(const SinglePassRange& rng, OutputIterator out);
    +
    +template<class SinglePassRange, class OutputIterator, class BinaryPredicate>
    +OutputIterator unique_copy(const SinglePassRange& rng, OutputIterator out, BinaryPredicate pred);
    +
    +

    +

    +
    + + Description +
    +

    + unique_copy copies the + first element of each sequence of duplicates encountered in rng to out. +

    +

    + Equality is determined by the predicate if one is supplied, or by operator==() + for SinglePassRange's + value type. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/unique_copy.hpp +

    +
    + + Requirements +
    +

    + For the non-predicate versions of unique: +

    +
      +
    • +SinglePassRange is + a model of the Single + Pass Range Concept. +
    • +
    • +SinglePassRange is + mutable. +
    • +
    • +SinglePassRange's value + type is a model of the EqualityComparableConcept. +
    • +
    • +OutputIterator is a + model of the OutputIteratorConcept. +
    • +
    +

    + For the predicate versions of unique: +

    +
      +
    • +SinglePassRange is + a model of the Single + Pass Range Concept. +
    • +
    • +SinglePassRange is + mutable. +
    • +
    • +BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • +
    • +SinglePassRange's value + type is convertible to BinaryPredicate's + first argument type and to BinaryPredicate's + second argument type. +
    • +
    • +OutputIterator is a + model of the OutputIteratorConcept. +
    • +
    +
    + + Complexity +
    +

    + Linear. O(N) + where N is distance(rng). + Exactly distance(rng) + comparisons are performed. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/new.html b/doc/html/range/reference/algorithms/new.html new file mode 100644 index 0000000..d07ac11 --- /dev/null +++ b/doc/html/range/reference/algorithms/new.html @@ -0,0 +1,57 @@ + + + +New algorithms + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/new/copy_n.html b/doc/html/range/reference/algorithms/new/copy_n.html new file mode 100644 index 0000000..ffe4dfe --- /dev/null +++ b/doc/html/range/reference/algorithms/new/copy_n.html @@ -0,0 +1,103 @@ + + + +copy_n + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class SinglePassRange, class Size, class OutputIterator>
    +OutputIterator copy_n(const SinglePassRange& rng, Size n, OutputIterator out);
    +
    +

    +

    +
    + + Description +
    +

    + copy_n is provided to + completely replicate the standard algorithm header, it is preferable + to use Range Adaptors and the extension functions to achieve the same + result with greater safety. +

    +

    + copy_n copies elements + from [boost::begin(rng), boost::begin(rng) + n) to the range [out, out + n) +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm_ext/copy_n.hpp +

    +
    + + Requirements +
    +
      +
    1. +SinglePassRange is + a model of the Single + Pass Range Concept. +
    2. +
    3. +Size is a model of + the Integer Concept. +
    4. +
    5. +OutputIterator is a + model of the OutputIteratorConcept. +
    6. +
    +
    + + Complexity +
    +

    + Linear. Exactly n elements + are copied. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html b/doc/html/range/reference/algorithms/new/erase.html similarity index 72% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html rename to doc/html/range/reference/algorithms/new/erase.html index 6d13233..c6aa933 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/erase.html +++ b/doc/html/range/reference/algorithms/new/erase.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -41,9 +40,9 @@

    -
    - - Description +
    + + Description

    erase the iterator range @@ -58,24 +57,24 @@ remove_erase_if performs the frequently used combination equivalent to target.erase(std::remove_if(target.begin(), target.end(), pred), target.end());

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/erase.hpp

    -
    - - Requirements +
    + + Requirements
    1. Container supports erase of an iterator range.
    -
    - - Complexity +
    + + Complexity

    Linear. Proprotional to distance(to_erase). @@ -91,7 +90,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html b/doc/html/range/reference/algorithms/new/for_each.html similarity index 84% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html rename to doc/html/range/reference/algorithms/new/for_each.html index 2577357..41fe5ab 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/new/for_each.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -72,9 +71,9 @@

    -
    - - Description +
    + + Description

    for_each traverses forward @@ -88,16 +87,16 @@ Iteration is stopped upon reaching the end of the shorter of rng1, or rng2. It is safe to call this function with unequal length ranges.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/for_each.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -125,9 +124,9 @@ second argument type.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly min(distance(rng1), distance(rng2)) @@ -144,7 +143,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html b/doc/html/range/reference/algorithms/new/insert.html similarity index 74% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html rename to doc/html/range/reference/algorithms/new/insert.html index 7321ce8..0ed5479 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/insert.html +++ b/doc/html/range/reference/algorithms/new/insert.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -44,9 +43,9 @@

    -
    - - Description +
    + + Description

    insert all of the elements @@ -54,16 +53,16 @@ the before iterator into target.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/insert.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -81,9 +80,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. distance(from) @@ -100,7 +99,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html b/doc/html/range/reference/algorithms/new/iota.html similarity index 73% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html rename to doc/html/range/reference/algorithms/new/iota.html index ea0a6f4..e346957 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/iota.html +++ b/doc/html/range/reference/algorithms/new/iota.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -39,9 +38,9 @@

    -
    - - Description +
    + + Description

    iota traverses forward @@ -50,16 +49,16 @@ is assigned a value equivalent to x + boost::distance(boost::begin(rng), it)

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/iota.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -72,9 +71,9 @@ the Incrementable Concept.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng) assignments into rng. @@ -90,7 +89,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/is_sorted.html b/doc/html/range/reference/algorithms/new/is_sorted.html new file mode 100644 index 0000000..18f5846 --- /dev/null +++ b/doc/html/range/reference/algorithms/new/is_sorted.html @@ -0,0 +1,108 @@ + + + +is_sorted + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class SinglePassRange>
    +bool is_sorted(const SinglePassRange& rng);
    +
    +template<class SinglePassRange, class BinaryPredicate>
    +bool is_sorted(const SinglePassRange& rng, BinaryPredicate pred);
    +
    +

    +

    +
    + + Description +
    +

    + is_sorted determines + if a range is sorted. For the non-predicate version the return value + is true if and only if for + each adjacent elements [x,y] + the expression x < + y is true. + For the predicate version the return value is true + is and only if for each adjacent elements [x,y] + the expression pred(x,y) + is true. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm_ext/is_sorted.hpp +

    +
    + + Requirements +
    +
      +
    1. +SinglePassRange is + a model of the Single + Pass Range Concept. +
    2. +
    3. +BinaryPredicate is + a model of the BinaryPredicate + Concept. +
    4. +
    5. + The value type of SinglePassRange + is convertible to both argument types of BinaryPredicate. +
    6. +
    +
    + + Complexity +
    +

    + Linear. A maximum of distance(rng) comparisons are performed. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html b/doc/html/range/reference/algorithms/new/overwrite.html similarity index 70% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html rename to doc/html/range/reference/algorithms/new/overwrite.html index d0a5b5e..6d90fcf 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/overwrite.html +++ b/doc/html/range/reference/algorithms/new/overwrite.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -43,25 +42,25 @@

    -
    - - Description +
    + + Description

    overwrite assigns the values from the range from into the range to.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/overwrite.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -86,9 +85,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. distance(rng1) @@ -105,7 +104,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html b/doc/html/range/reference/algorithms/new/push_back.html similarity index 72% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html rename to doc/html/range/reference/algorithms/new/push_back.html index 8029406..6b67c08 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_back.html +++ b/doc/html/range/reference/algorithms/new/push_back.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -43,25 +42,25 @@

    -
    - - Description +
    + + Description

    push_back all of the elements in the range from to the back of the container target.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/push_back.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -79,9 +78,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. distance(from) @@ -98,7 +97,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html b/doc/html/range/reference/algorithms/new/push_front.html similarity index 72% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html rename to doc/html/range/reference/algorithms/new/push_front.html index 462cc72..7413640 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/push_front.html +++ b/doc/html/range/reference/algorithms/new/push_front.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -43,25 +42,25 @@

    -
    - - Description +
    + + Description

    push_front all of the elements in the range from to the front of the container target.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/push_front.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -79,9 +78,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. distance(from) @@ -98,7 +97,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html b/doc/html/range/reference/algorithms/new/remove_erase.html similarity index 69% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html rename to doc/html/range/reference/algorithms/new/remove_erase.html index c268e1a..0dc0e23 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase.html +++ b/doc/html/range/reference/algorithms/new/remove_erase.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -40,9 +39,9 @@

    -
    - - Description +
    + + Description

    remove_erase actually @@ -50,24 +49,24 @@ from the container. This is in contrast to the remove algorithm which merely rearranges elements.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/erase.hpp

    -
    - - Requirements +
    + + Requirements
    1. Container supports erase of an iterator range.
    -
    - - Complexity +
    + + Complexity

    Linear. Proportional to distance(target)s. @@ -83,7 +82,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html b/doc/html/range/reference/algorithms/new/remove_erase_if.html similarity index 69% rename from doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html rename to doc/html/range/reference/algorithms/new/remove_erase_if.html index 0dd87cd..4c42049 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -40,9 +40,9 @@

    -
    - - Description +
    + + Description

    remove_erase_if removes @@ -51,16 +51,16 @@ from the container. This is in contrast to the erase algorithm which merely rearranges elements.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm_ext/erase.hpp

    -
    - - Requirements +
    + + Requirements
    1. @@ -72,9 +72,9 @@ the Predicate Concept.
    -
    - - Complexity +
    + + Complexity

    Linear. Proportional to distance(target)s. @@ -90,7 +90,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non.html b/doc/html/range/reference/algorithms/non.html new file mode 100644 index 0000000..f1f9123 --- /dev/null +++ b/doc/html/range/reference/algorithms/non.html @@ -0,0 +1,64 @@ + + + +-mutating Non-mutating algorithms + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/non_mutating.html b/doc/html/range/reference/algorithms/non_mutating.html new file mode 100644 index 0000000..f25a857 --- /dev/null +++ b/doc/html/range/reference/algorithms/non_mutating.html @@ -0,0 +1,81 @@ + + + +Non-mutating algorithms + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html similarity index 82% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html rename to doc/html/range/reference/algorithms/non_mutating/adjacent_find.html index f71cc25..9bc5d43 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -1,12 +1,12 @@ -Range Algorithm - adjacent_find +adjacent_find - - + + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    -
    - - Prototype +
    + + Prototype

    @@ -76,9 +76,9 @@

    -
    - - Description +
    + + Description

    Non-predicate versions: @@ -97,16 +97,16 @@ in rng where pred(x,y) is true.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/adjacent_find.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions of adjacent_find: @@ -142,9 +142,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    Linear. If empty(rng) @@ -162,7 +162,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html b/doc/html/range/reference/algorithms/non_mutating/binary_search.html similarity index 79% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html rename to doc/html/range/reference/algorithms/non_mutating/binary_search.html index 64a95a8..01bdb29 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -42,9 +42,9 @@

    -
    - - Description +
    + + Description

    binary_search returns @@ -52,16 +52,16 @@ value val exists in the range rng.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/binary_search.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions of binary_search: @@ -110,9 +110,9 @@ argument type.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate version: @@ -128,9 +128,9 @@ rng is ordered in ascending order according to the function object pred.

    -
    - - Complexity +
    + + Complexity

    For non-random-access ranges, the complexity is O(N) where N @@ -151,7 +151,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html b/doc/html/range/reference/algorithms/non_mutating/count.html similarity index 76% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html rename to doc/html/range/reference/algorithms/non_mutating/count.html index 73a26b8..c84ad1c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/count.html +++ b/doc/html/range/reference/algorithms/non_mutating/count.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -44,9 +43,9 @@

    -
    - - Description +
    + + Description

    count returns the number @@ -54,16 +53,16 @@ == val is true.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/count.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -84,9 +83,9 @@ value type can be compared for equality with an object of type Value.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng) comparisons. @@ -102,7 +101,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/count_if.html b/doc/html/range/reference/algorithms/non_mutating/count_if.html new file mode 100644 index 0000000..825af0a --- /dev/null +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -0,0 +1,104 @@ + + + +count_if + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class SinglePassRange, class UnaryPredicate>
    +typename range_difference<const SinglePassRange>::type
    +count_if(const SinglePassRange& rng, UnaryPredicate pred);
    +
    +

    +

    +
    + + Description +
    +

    + count_if returns the + number of elements x + in rng where pred(x) + is true. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/count_if.hpp +

    +
    + + Requirements +
    +
      +
    • +SinglePassRange is + a model of the Single + Pass Range Concept. +
    • +
    • +UnaryPredicate is a + model of the UnaryPredicateConcept. +
    • +
    • +SinglePassRange's value + type is a model of the EqualityComparableConcept. +
    • +
    • + The value type of SinglePassRange + is convertible to the argument type of UnaryPredicate. +
    • +
    +
    + + Complexity +
    +

    + Linear. Exactly distance(rng) invocations of pred. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html similarity index 81% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html rename to doc/html/range/reference/algorithms/non_mutating/equal.html index d581af7..371bf4b 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -52,9 +51,9 @@

    -
    - - Description +
    + + Description

    equal returns true if distance(rng1) is equal to the distance(rng2) and for each element x @@ -70,16 +69,16 @@ returns true. Elements are considered equal in the predicate version if pred(x,y) is true.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/equal.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -138,9 +137,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    Linear. At most min(distance(rng1), distance(rng2)) @@ -157,7 +156,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html b/doc/html/range/reference/algorithms/non_mutating/equal_range.html similarity index 85% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html rename to doc/html/range/reference/algorithms/non_mutating/equal_range.html index 88d3af6..5b5d7b8 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -70,9 +70,9 @@

    -
    - - Description +
    + + Description

    equal_range returns a @@ -84,16 +84,16 @@ the equality of elements is determined by operator<. For the predicate versions of equal_range the equality of elements is determined by pred.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/equal_range.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -142,9 +142,9 @@ argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: rng @@ -154,9 +154,9 @@ For the predicate versions: rng is ordered in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    For random-access ranges, the complexity is O(log N), @@ -173,7 +173,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html b/doc/html/range/reference/algorithms/non_mutating/find.html similarity index 77% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html rename to doc/html/range/reference/algorithms/non_mutating/find.html index f9fff13..23ae0cc 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find.html +++ b/doc/html/range/reference/algorithms/non_mutating/find.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +47,9 @@

    -
    - - Description +
    + + Description

    The versions of find @@ -59,16 +58,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/find.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -87,9 +86,9 @@ value type.
    -
    - - Complexity +
    + + Complexity

    Linear. At most distance(rng) comparisons for equality. @@ -105,7 +104,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html b/doc/html/range/reference/algorithms/non_mutating/find_end.html similarity index 86% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html rename to doc/html/range/reference/algorithms/non_mutating/find_end.html index f6a9b8b..a3c2e03 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -65,9 +65,9 @@

    -
    - - Description +
    + + Description

    The versions of find_end @@ -80,16 +80,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/find_end.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -147,9 +147,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    The number of comparisons is proportional to distance(rng1) * distance(rng2). If both ForwardRange1 @@ -168,7 +168,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html b/doc/html/range/reference/algorithms/non_mutating/find_first_of.html similarity index 84% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html rename to doc/html/range/reference/algorithms/non_mutating/find_first_of.html index cb3cc79..8879c90 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_first_of.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_first_of.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -65,9 +65,9 @@

    -
    - - Description +
    + + Description

    The versions of find_first_of @@ -85,16 +85,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/find_first_of.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -146,9 +146,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    At most distance(rng1) * distance(rng2) comparisons. @@ -164,7 +164,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html b/doc/html/range/reference/algorithms/non_mutating/find_if.html similarity index 76% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html rename to doc/html/range/reference/algorithms/non_mutating/find_if.html index 44cdde4..cac2242 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    The versions of find_if @@ -63,16 +63,16 @@ that return a range_return, defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/find_if.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -89,17 +89,17 @@ is convertible to the argument type of UnaryPredicate.
    -
    - - Precondition: +
    + + Precondition:

    For each iterator i in rng, *i is in the domain of UnaryPredicate.

    -
    - - Complexity +
    + + Complexity

    Linear. At most distance(rng) invocations of pred. @@ -115,7 +115,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html b/doc/html/range/reference/algorithms/non_mutating/for_each.html similarity index 75% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html rename to doc/html/range/reference/algorithms/non_mutating/for_each.html index 0ea9130..8e10027 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    for_each traverses forward @@ -58,16 +58,16 @@ element x it invokes fun(x).

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/for_each.hpp

    -
    - - Requirements +
    + + Requirements
    • @@ -89,9 +89,9 @@ argument type.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng) applications of UnaryFunction. @@ -107,7 +107,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html similarity index 82% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html rename to doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html index 0978050..e1b9898 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -52,9 +52,9 @@

    -
    - - Description +
    + + Description

    lexicographical_compare @@ -72,16 +72,16 @@ and using pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions of lexicographical_compare: @@ -144,9 +144,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    Linear. At most 2 * @@ -164,7 +164,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html similarity index 81% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html rename to doc/html/range/reference/algorithms/non_mutating/lower_bound.html index 3a5a05d..aec7685 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    The versions of lower_bound @@ -71,16 +71,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/lower_bound.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -129,9 +129,9 @@ argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -147,9 +147,9 @@ rng is sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    For ranges that model the Random @@ -170,7 +170,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html b/doc/html/range/reference/algorithms/non_mutating/max_element.html similarity index 86% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html rename to doc/html/range/reference/algorithms/non_mutating/max_element.html index 0e042fd..83a3f13 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -83,9 +83,9 @@

    -
    - - Description +
    + + Description

    The versions of max_element @@ -97,16 +97,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/max_element.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -141,9 +141,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    Linear. Zero comparisons if empty(rng), otherwise distance(rng) - 1 @@ -160,7 +160,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html b/doc/html/range/reference/algorithms/non_mutating/min_element.html similarity index 86% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html rename to doc/html/range/reference/algorithms/non_mutating/min_element.html index 4752df4..f9df12d 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -83,9 +83,9 @@

    -
    - - Description +
    + + Description

    The versions of min_element @@ -97,16 +97,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/min_element.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -141,9 +141,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    Linear. Zero comparisons if empty(rng), otherwise distance(rng) - 1 @@ -160,7 +160,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html b/doc/html/range/reference/algorithms/non_mutating/mismatch.html similarity index 88% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html rename to doc/html/range/reference/algorithms/non_mutating/mismatch.html index 3af4682..114fd0c 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -105,14 +105,14 @@

    -
    - - Description +
    + + Description

    - The versions of mismatch - that return an iterator, return an iterator to the first position where - rng1 and rng2 differ. + mismatch finds the first + position where the two ranges rng1 + and rng2 differ.

    Equality is determined by operator== for non-predicate versions of mismatch, and by satisfying pred in the predicate versions. @@ -123,16 +123,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/mismatch.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -191,16 +191,16 @@ second argument type.

    -
    - - Precondition: +
    + + Precondition:

    distance(rng2) >= distance(rng1)

    -
    - - Complexity +
    + + Complexity

    Linear. At most distance(rng1) comparisons. @@ -216,7 +216,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html b/doc/html/range/reference/algorithms/non_mutating/search.html similarity index 89% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html rename to doc/html/range/reference/algorithms/non_mutating/search.html index 93994e9..43f010f 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -95,9 +95,9 @@

    -
    - - Description +
    + + Description

    The versions of search @@ -114,16 +114,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/search.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -182,9 +182,9 @@ second argument type.

    -
    - - Complexity +
    + + Complexity

    Average complexity is Linear. Worst-case complexity is quadratic. @@ -200,7 +200,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/search_n.html b/doc/html/range/reference/algorithms/non_mutating/search_n.html new file mode 100644 index 0000000..0c84f36 --- /dev/null +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -0,0 +1,148 @@ + + + +search_n + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Prototype +
    +

    + +

    +
    template<class ForwardRange, class Integer, class Value>
    +typename range_iterator<ForwardRange>::type
    +search_n(ForwardRange& rng, Integer n, const Value& value);
    +
    +template<class ForwardRange, class Integer, class Value>
    +typename range_iterator<const ForwardRange>::type
    +search_n(const ForwardRange& rng, Integer n, const Value& value);
    +
    +template<class ForwardRange, class Integer, class Value, class BinaryPredicate>
    +typename range_iterator<ForwardRange>::type
    +search_n(ForwardRange& rng, Integer n, const Value& value,
    +         BinaryPredicate binary_pred);
    +
    +template<class ForwardRange, class Integer, class Value, class BinaryPredicate>
    +typename range_iterator<const ForwardRange>::type
    +search_n(const ForwardRange& rng, Integer n, const Value& value,
    +         BinaryPredicate binary_pred);
    +
    +

    +

    +
    + + Description +
    +

    + search_n searches rng for a sequence of length n equal to value + where equality is determined by operator== in the non-predicate case, + and by a predicate when one is supplied. +

    +
    + + Definition +
    +

    + Defined in the header file boost/range/algorithm/search_n.hpp +

    +
    + + Requirements +
    +

    + For the non-predicate versions: +

    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +ForwardRange's value + type is a model of the EqualityComparableConcept. +
    • +
    • +ForwardRanges value + type can be compared for equality with Value. +
    • +
    • +Integer is a model + of the IntegerConcept. +
    • +
    +

    + For the predicate versions: +

    +
      +
    • +ForwardRange is a model + of the Forward Range + Concept. +
    • +
    • +BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • +
    • +ForwardRange's value + type is convertible to BinaryPredicate's + first argument type. +
    • +
    • +Value is convertible + to BinaryPredicate's + second argument type. +
    • +
    • +Integer is a model + of the IntegerConcept. +
    • +
    +
    + + Complexity +
    +

    + Average complexity is Linear. Worst-case complexity is quadratic. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html similarity index 79% rename from doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html rename to doc/html/range/reference/algorithms/non_mutating/upper_bound.html index 14f5248..0405255 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -5,9 +5,9 @@ - - - + + + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    The versions of upper_bound @@ -70,16 +70,16 @@ defines found in the same manner as the returned iterator described above.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/upper_bound.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -128,9 +128,9 @@ argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -146,9 +146,9 @@ rng is sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    For ranges that model the Random @@ -167,7 +167,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_numeric.html b/doc/html/range/reference/algorithms/numeric.html similarity index 54% rename from doc/html/range/reference/algorithms/range_numeric.html rename to doc/html/range/reference/algorithms/numeric.html index c6c6767..90818fa 100644 --- a/doc/html/range/reference/algorithms/range_numeric.html +++ b/doc/html/range/reference/algorithms/numeric.html @@ -6,8 +6,8 @@ - - + + @@ -20,21 +20,19 @@

    -PrevUpHomeNext +PrevUpHomeNext
    @@ -48,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_numeric/accumulate.html b/doc/html/range/reference/algorithms/numeric/accumulate.html similarity index 76% rename from doc/html/range/reference/algorithms/range_numeric/accumulate.html rename to doc/html/range/reference/algorithms/numeric/accumulate.html index 26970d8..b588227 100644 --- a/doc/html/range/reference/algorithms/range_numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/numeric/accumulate.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -52,9 +51,9 @@

    -
    - - Description +
    + + Description

    accumulate is a generalisation @@ -63,20 +62,20 @@

    The return value is the resultant value of the above algorithm.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/numeric.hpp

    -
    - - Requirements +
    + + Requirements
    -
    - - For +
    + + For the first version
      @@ -99,9 +98,9 @@ The return type of the above operator is convertible to Value.
    -
    - - For +
    + + For the second version
      @@ -133,9 +132,9 @@ is convertible to Value.
    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(source_rng). @@ -151,7 +150,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html similarity index 80% rename from doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html rename to doc/html/range/reference/algorithms/numeric/adjacent_difference.html index 9358698..3f7c169 100644 --- a/doc/html/range/reference/algorithms/range_numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -54,9 +54,9 @@

    -
    - - Description +
    + + Description

    adjacent_difference calculates @@ -68,20 +68,20 @@ to calculate the differences. The second version uses BinaryOperation instead of operator-().

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/numeric.hpp

    -
    - - Requirements +
    + + Requirements
    -
    - - For +
    + + For the first version
      @@ -110,9 +110,9 @@ set of value types.
    -
    - - For +
    + + For the second version
      @@ -145,17 +145,17 @@ set of value types.
    -
    - - Precondition: +
    + + Precondition:

    [result, result + distance(rng)) is a valid range.

    -
    - - Complexity +
    + + Complexity

    Linear. If empty(rng) @@ -173,7 +173,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_numeric/inner_product.html b/doc/html/range/reference/algorithms/numeric/inner_product.html similarity index 83% rename from doc/html/range/reference/algorithms/range_numeric/inner_product.html rename to doc/html/range/reference/algorithms/numeric/inner_product.html index a040134..30046e1 100644 --- a/doc/html/range/reference/algorithms/range_numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -53,9 +53,9 @@

    -
    - - Description +
    + + Description

    inner_product calculates @@ -66,20 +66,20 @@ For further information on the inner_product algorithm please see inner_product.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/numeric.hpp

    -
    - - Requirements +
    + + Requirements
    -
    - - For +
    + + For the first version
      @@ -112,9 +112,9 @@ is convertible to Value.
    -
    - - For +
    + + For the second version
      @@ -161,16 +161,16 @@ is convertible to Value.
    -
    - - Precondition: +
    + + Precondition:

    distance(rng2) >= distance(rng1) is a valid range.

    -
    - - Complexity +
    + + Complexity

    Linear. Exactly distance(rng). @@ -186,7 +186,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html b/doc/html/range/reference/algorithms/numeric/partial_sum.html similarity index 81% rename from doc/html/range/reference/algorithms/range_numeric/partial_sum.html rename to doc/html/range/reference/algorithms/numeric/partial_sum.html index e1ce532..e4f548c 100644 --- a/doc/html/range/reference/algorithms/range_numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,29 +48,29 @@

    -
    - - Description +
    + + Description

    partial_sum calculates a generalised partial sum of rng in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/numeric.hpp

    -
    - - Requirements +
    + + Requirements
    -
    - - For +
    + + For the first version
      @@ -98,9 +98,9 @@ set of value types.
    -
    - - For +
    + + For the second version
      @@ -127,17 +127,17 @@ set of value types.
    -
    - - Precondition: +
    + + Precondition:

    [result, result + distance(rng)) is a valid range.

    -
    - - Complexity +
    + + Complexity

    Linear. If empty(rng) @@ -155,7 +155,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/permutation_algorithms.html b/doc/html/range/reference/algorithms/permutation.html similarity index 56% rename from doc/html/range/reference/algorithms/permutation_algorithms.html rename to doc/html/range/reference/algorithms/permutation.html index 16bd254..c859468 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms.html +++ b/doc/html/range/reference/algorithms/permutation.html @@ -6,8 +6,8 @@ - - + + @@ -20,17 +20,17 @@

    -PrevUpHomeNext +PrevUpHomeNext
    @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html b/doc/html/range/reference/algorithms/permutation/next_permutation.html similarity index 79% rename from doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html rename to doc/html/range/reference/algorithms/permutation/next_permutation.html index 8691969..b9c73d4 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    next_permutation transforms @@ -66,16 +66,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/permutation.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -124,9 +124,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    Linear. At most distance(rng) / 2 @@ -143,7 +143,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html b/doc/html/range/reference/algorithms/permutation/prev_permutation.html similarity index 81% rename from doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html rename to doc/html/range/reference/algorithms/permutation/prev_permutation.html index 2521275..3e74632 100644 --- a/doc/html/range/reference/algorithms/permutation_algorithms/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -48,9 +48,9 @@

    -
    - - Description +
    + + Description

    prev_permutation transforms @@ -66,16 +66,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/permutation.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -124,9 +124,9 @@ argument types.

    -
    - - Complexity +
    + + Complexity

    Linear. At most distance(rng) / 2 @@ -143,7 +143,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/range_algorithm_introduction.html b/doc/html/range/reference/algorithms/range_algorithm_introduction.html deleted file mode 100644 index 9f15ed5..0000000 --- a/doc/html/range/reference/algorithms/range_algorithm_introduction.html +++ /dev/null @@ -1,257 +0,0 @@ - - - -Introduction and motivation - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -

    - In its most simple form a Range Algorithm - (or range-based algorithm) is simply an iterator-based algorithm where - the two iterator arguments have been replaced by - one range argument. For example, we may write -

    -

    - -

    -
    #include <boost/range/algorithm.hpp>
    -#include <vector>
    -
    -std::vector<int> vec = ...;
    -boost::sort(vec);
    -
    -

    -

    -

    - instead of -

    -

    - -

    -
    std::sort(vec.begin(), vec.end());
    -
    -

    -

    -

    - However, the return type of range algorithms is almost always different - from that of existing iterator-based algorithms. -

    -

    - One group of algorithms, like boost::sort(), will simply return the same range so - that we can continue to pass the range around and/or further modify it. - Because of this we may write -

    -
    boost:unique(boost::sort(vec));
    -
    -

    - to first sort the range and then run unique() on the sorted range. -

    -

    - Algorithms like boost::unique() - fall into another group of algorithms that return (potentially) narrowed - views of the original range. By default boost::unique(rng) returns the range [boost::begin(rng), found) - where found denotes the - iterator returned by std::unique(boost::begin(rng), boost::end(rng)) -

    -

    - Therefore exactly the unique values can be copied by writing -

    -
    boost::copy(boost::unique(boost::sort(vec)),
    -            std::ostream_iterator<int>(std::cout));
    -
    -

    -

    -

    - Algorithms like boost::unique usually return the same range: - [boost::begin(rng), found). However, this behaviour may be changed - by supplying the algorithms with a template argument: -

    -
    ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Expression -

    -
    -

    - Return -

    -
    -

    - boost::unique<boost::return_found>(rng) -

    -
    -

    - returns a single iterator like std::unique -

    -
    -

    - boost::unique<boost::return_begin_found>(rng) -

    -
    -

    - returns the range [boost::begin(rng), - found) - (this is the default) -

    -
    -

    - boost::unique<boost::return_begin_next>(rng) -

    -
    -

    - returns the range [boost::begin(rng), - boost::next(found)) -

    -
    -

    - boost::unique<boost::return_found_end>(rng) -

    -
    -

    - returns the range [found, - boost::end(rng)) -

    -
    -

    - boost::unique<boost::return_next_end>(rng) -

    -
    -

    - returns the range [boost::next(found),boost::end(rng)) -

    -
    -

    - boost::unique<boost::return_begin_end>(rng) -

    -
    -

    - returns the entire original range. -

    -
    -

    - This functionality has the following advantages: -

    -
      -
    1. - it allows for seamless functional-style - programming where you do not need to use named - local variables to store intermediate results -
    2. -
    3. - it is very safe - because the algorithm can verify out-of-bounds conditions and handle - tricky conditions that lead to empty ranges -
    4. -
    -

    - For example, consider how easy we may erase the duplicates in a sorted - container: -

    -

    - -

    -
    std::vector<int> vec = ...;
    -boost::erase(vec, boost::unique<boost::return_found_end>(boost::sort(vec)));
    -
    -

    -

    -

    - Notice the use of boost::return_found_end. - What if we wanted to erase all the duplicates except one of them? In old-fashined - STL-programming we might write -

    -

    - -

    -
    // assume 'vec' is already sorted
    -std::vector<int>::iterator i = std::unique(vec.begin(), vec.end());
    -
    -// remember this check or you get into problems
    -if (i != vec.end())
    -    ++i;
    -
    -vec.erase(i, vec.end());
    -
    -

    -

    -

    - The same task may be accomplished simply with -

    -
    boost::erase(vec, boost::unique<boost::return_next_end>(vec));
    -
    -

    - and there is no need to worry about generating an invalid range. Furthermore, - if the container is complex, calling vec.begin() several times will be more expensive - than using a range algorithm. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html deleted file mode 100644 index a69db43..0000000 --- a/doc/html/range/reference/algorithms/range_algorithm_mutating_algorithms.html +++ /dev/null @@ -1,88 +0,0 @@ - - - -Mutating algorithms - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html deleted file mode 100644 index 5182eaf..0000000 --- a/doc/html/range/reference/algorithms/range_algorithm_new_algorithms.html +++ /dev/null @@ -1,64 +0,0 @@ - - - -New algorithms - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html b/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html deleted file mode 100644 index 87820b8..0000000 --- a/doc/html/range/reference/algorithms/range_algorithm_non_mutating_algorithms.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Non-mutating algorithms - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/algorithms/range_numeric/irange.html b/doc/html/range/reference/algorithms/range_numeric/irange.html deleted file mode 100644 index a23253d..0000000 --- a/doc/html/range/reference/algorithms/range_numeric/irange.html +++ /dev/null @@ -1,105 +0,0 @@ - - - -irange - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Prototype -
    -

    - -

    -
    template<class Integer>
    -integer_range< range_detail::integer_iterator<Integer> >
    -irange(Integer first, Integer  last);
    -
    -template<class Integer, class StepSize>
    -integer_range< range_detail::integer_iterator_with_step<Integer, StepSize> >
    -irange(Integer first, Integer last, StepSize step_size);
    -
    -

    -

    -
    - - Description -
    -

    - irange is a function - to generate an Integer Range. -

    -

    - irange allows treating - integers as a model of the Random - Access Range Concept. It should be noted that the first and last - parameters denoted a half-open range. -

    -
    - - Definition -
    -

    - Defined in the header file boost/range/irange.hpp -

    -
    - - Requirements -
    -
      -
    1. -Integer is a model - of the Integer Concept. -
    2. -
    3. -StepSize is a model - of the SignedInteger - Concept. -
    4. -
    -
    - - Complexity -
    -

    - Constant. Since this function generates a new range the most significant - performance cost is incurred through the iteration of the generated range. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/algorithms/set_algorithms.html b/doc/html/range/reference/algorithms/set.html similarity index 51% rename from doc/html/range/reference/algorithms/set_algorithms.html rename to doc/html/range/reference/algorithms/set.html index b9888f5..7de08c4 100644 --- a/doc/html/range/reference/algorithms/set_algorithms.html +++ b/doc/html/range/reference/algorithms/set.html @@ -6,8 +6,8 @@ - - + + @@ -20,22 +20,19 @@

    -PrevUpHomeNext +PrevUpHomeNext
    @@ -49,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set_algorithms/includes.html b/doc/html/range/reference/algorithms/set/includes.html similarity index 83% rename from doc/html/range/reference/algorithms/set_algorithms/includes.html rename to doc/html/range/reference/algorithms/set/includes.html index 0c538d9..c268cc7 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/includes.html +++ b/doc/html/range/reference/algorithms/set/includes.html @@ -5,8 +5,8 @@ - - + + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -47,9 +46,9 @@

    -
    - - Description +
    + + Description

    includes returns true if and only if, for every element @@ -59,16 +58,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -144,9 +143,9 @@ second argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -162,9 +161,9 @@ rng1 and rng2 are sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    Linear. O(N), @@ -181,7 +180,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html b/doc/html/range/reference/algorithms/set/set_difference.html similarity index 85% rename from doc/html/range/reference/algorithms/set_algorithms/set_difference.html rename to doc/html/range/reference/algorithms/set/set_difference.html index e02ebe2..d4e8698 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_difference.html +++ b/doc/html/range/reference/algorithms/set/set_difference.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -56,9 +55,9 @@

    -
    - - Description +
    + + Description

    set_difference constructs @@ -70,16 +69,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -163,9 +162,9 @@ second argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -181,9 +180,9 @@ rng1 and rng2 are sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    Linear. O(N), @@ -200,7 +199,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html b/doc/html/range/reference/algorithms/set/set_intersection.html similarity index 86% rename from doc/html/range/reference/algorithms/set_algorithms/set_intersection.html rename to doc/html/range/reference/algorithms/set/set_intersection.html index ce4af10..1314edd 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,16 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -56,9 +56,9 @@

    -
    - - Description +
    + + Description

    set_intersection constructs @@ -70,16 +70,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -163,9 +163,9 @@ second argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -181,9 +181,9 @@ rng1 and rng2 are sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    Linear. O(N), @@ -200,7 +200,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html similarity index 84% rename from doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html rename to doc/html/range/reference/algorithms/set/set_symmetric_difference.html index c33f771..ae951ce 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -5,9 +5,9 @@ - + - + @@ -20,16 +20,16 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -58,9 +58,9 @@

    -
    - - Description +
    + + Description

    set_symmetric_difference @@ -74,16 +74,16 @@ by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -167,9 +167,9 @@ second argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -185,9 +185,9 @@ rng1 and rng2 are sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    Linear. O(N), @@ -204,7 +204,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set_algorithms/set_union.html b/doc/html/range/reference/algorithms/set/set_union.html similarity index 86% rename from doc/html/range/reference/algorithms/set_algorithms/set_union.html rename to doc/html/range/reference/algorithms/set/set_union.html index 93ec40f..1384bcd 100644 --- a/doc/html/range/reference/algorithms/set_algorithms/set_union.html +++ b/doc/html/range/reference/algorithms/set/set_union.html @@ -5,7 +5,7 @@ - + @@ -20,16 +20,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Prototype +
    + + Prototype

    @@ -56,9 +55,9 @@

    -
    - - Description +
    + + Description

    set_union constructs @@ -69,16 +68,16 @@ in the non-predicate versions, and by evaluating pred in the predicate versions.

    -
    - - Definition +
    + + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    -
    - - Requirements +
    + + Requirements

    For the non-predicate versions: @@ -162,9 +161,9 @@ second argument types.

    -
    - - Precondition: +
    + + Precondition:

    For the non-predicate versions: @@ -180,9 +179,9 @@ rng1 and rng2 are sorted in ascending order according to pred.

    -
    - - Complexity +
    + + Complexity

    Linear. O(N), @@ -199,7 +198,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index fc32e83..a9d7524 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -45,7 +45,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/extending/method_3/method_3_2.html b/doc/html/range/reference/extending/method_3/method_3_2.html index f0bae90..2a0be9d 100644 --- a/doc/html/range/reference/extending/method_3/method_3_2.html +++ b/doc/html/range/reference/extending/method_3/method_3_2.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    @@ -149,7 +149,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html index ae0bbf0..fb1226b 100644 --- a/doc/html/range/reference/overview.html +++ b/doc/html/range/reference/overview.html @@ -42,7 +42,7 @@ 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 + iterator_range implements the minimal interface required to make the class a Forward Range. diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index 2e16372..d1d6017 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -42,7 +42,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 7bc2c80..c7e564a 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -27,7 +27,7 @@ counting_range

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -58,14 +58,14 @@ (from Boost.Iterator).

    - + Definition

    Defined in header file boost/range/counting_range.hpp

    - + Requirements
    1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index fc88a82..93df52c 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -7,7 +7,7 @@ - + @@ -20,14 +20,14 @@

      -PrevUpHomeNext +PrevUpHomeNext
      - + Prototype

      @@ -44,7 +44,7 @@

      - + Description

      @@ -58,14 +58,14 @@ parameters denoted a half-open range.

      - + Definition

      Defined in the header file boost/range/irange.hpp

      - + Requirements
        @@ -79,7 +79,7 @@
      - + Complexity

      @@ -97,7 +97,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index db454bc..5e8c62b 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -27,7 +27,7 @@ istream_range
    - + Prototype

    @@ -40,7 +40,7 @@

    - + Description

    @@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

    - + Definition

    diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html index 5ab20fe..a547b72 100644 --- a/doc/html/range/reference/semantics.html +++ b/doc/html/range/reference/semantics.html @@ -31,7 +31,7 @@

    Functions

    - + notation
    diff --git a/doc/html/range/reference/utilities.html b/doc/html/range/reference/utilities.html new file mode 100644 index 0000000..f2f39b2 --- /dev/null +++ b/doc/html/range/reference/utilities.html @@ -0,0 +1,83 @@ + + + +Utilities + + + + + + + + +
    + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +

    + 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 +
    • +
    • + Function join +
    • +
    +

    + 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. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html new file mode 100644 index 0000000..525d1c2 --- /dev/null +++ b/doc/html/range/reference/utilities/iterator_range.html @@ -0,0 +1,328 @@ + + + +Class iterator_range + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + 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 Random Access 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 design decision + avoids the iterator_range + imposing limitations upon ranges of iterators that are not singular. Any + singularity limitation is simply propogated from the underlying iterator + type. +

    +
    + + Synopsis +
    +

    + +

    +
    namespace boost
    +{
    +    template< class ForwardTraversalIterator >
    +    class iterator_range
    +    {
    +    public: // Forward Range types
    +        typedef ForwardTraversalIterator   iterator;
    +        typedef ForwardTraversalIterator   const_iterator;
    +        typedef iterator_difference<iterator>::type difference_type;
    +
    +    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;
    +        
    +    public: // convenience
    +        operator    unspecified_bool_type() const;
    +        bool        equal( const iterator_range& ) const;
    +        value_type& front() const;
    +        value_type& back() const;
    +        iterator_range& advance_begin(difference_type n);
    +        iterator_range& advance_end(difference_type n);
    +        bool      empty() const;
    +        // for Random Access Range only: 
    +        reference operator[]( difference_type at ) const;
    +        value_type operator()( difference_type at ) const;
    +        size_type size() 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 range_iterator<ForwardRange>::type >
    +    make_iterator_range( ForwardRange& r );
    +
    +    template< class ForwardRange >
    +    iterator_range< typename range_iterator<const 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_iterator<const Range>::type >
    +    make_iterator_range( const Range& r, 
    +                         typename range_difference<const Range>::type advance_begin,
    +                         typename range_difference<const 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. +

    +
    + + Details + member functions +
    +

    + operator unspecified_bool_type() const; +

    +
    +

    +

    +

    + Returns !empty(); +

    +

    +

    +
    +

    + bool equal( iterator_range& r ) const; +

    +
    +

    +

    +

    + Returns begin() + == r.begin() && + end() + == r.end(); +

    +

    +

    +
    +
    + + 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) ); +

    +

    +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html new file mode 100644 index 0000000..88e4ab9 --- /dev/null +++ b/doc/html/range/reference/utilities/join.html @@ -0,0 +1,89 @@ + + + +Function join + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + The intention of the join + function is to join two ranges into one longer range. +

    +

    + The resultant range will have the lowest common traversal of the two ranges + supplied as parameters. +

    +

    + Note that the joined range incurs a performance cost due to the need to + check if the end of a range has been reached internally during traversal. +

    +
    + + Synposis +
    +

    + +

    +
    template<typename SinglePassRange1, typename SinglePassRange2>
    +iterator_range<range_detail::join_iterator<
    +    typename range_iterator<const SinglePassRange1>::type,
    +    typename range_iterator<const SinglePassRange2>::type,
    +    typename add_const<
    +        typename range_value<const SinglePassRange1>::type>::type>
    +>
    +join(const SinglePassRange1& rng1, const SinglePassRange2& rng2)
    +
    +template<typename SinglePassRange1, typename SinglePassRange2>
    +iterator_range<range_detail::join_iterator<
    +    typename range_iterator<SinglePassRange1>::type,
    +    typename range_iterator<SinglePassRange2>::type,
    +    typename range_value<SinglePassRange1>::type>
    +>
    +join(SinglePassRange1& rng1, SinglePassRange2& rng2);
    +
    +

    +

    +
    + + Example +
    +

    + The expression join(irange(0,5), irange(5,10)) would + evaluate to a range representing an integer range [0,10) +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/utilities/sub_range.html b/doc/html/range/reference/utilities/sub_range.html new file mode 100644 index 0000000..2fbf85a --- /dev/null +++ b/doc/html/range/reference/utilities/sub_range.html @@ -0,0 +1,123 @@ + + + +Class sub_range + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + 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. +

    +
    + + Synopsis +
    +

    + +

    +
    namespace boost
    +{
    +    template< class ForwardRange >
    +    class sub_range : public iterator_range< typename range_iterator<ForwardRange>::type >
    +    {
    +    public: 
    +        typedef typename range_iterator<ForwardRange>::type iterator;
    +        typedef typename range_iterator<const ForwardRange>::type  const_iterator;
    +        typedef typename iterator_difference<iterator>::type difference_type;
    +    
    +    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" );
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index b3e147a..c9f3e34 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -92,7 +92,7 @@

    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 + 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 @@ -135,7 +135,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/utilities.html b/doc/html/range/utilities.html deleted file mode 100644 index 6c16a00..0000000 --- a/doc/html/range/utilities.html +++ /dev/null @@ -1,82 +0,0 @@ - - - -Utilities - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -

    - 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 -
    • -
    • - Function join -
    • -
    -

    - 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. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html index 0902337..6f536e7 100644 --- a/doc/html/range/utilities/iterator_range.html +++ b/doc/html/range/utilities/iterator_range.html @@ -47,7 +47,7 @@ limitation is simply propogated from the underlying iterator type.

    - + Synopsis

    @@ -187,7 +187,7 @@ iterators from the same container.

    - + Details member functions
    @@ -218,7 +218,7 @@

    - + Details functions
    diff --git a/doc/html/range/utilities/join.html b/doc/html/range/utilities/join.html index e73c51e..fa140e5 100644 --- a/doc/html/range/utilities/join.html +++ b/doc/html/range/utilities/join.html @@ -39,7 +39,7 @@ if the end of a range has been reached internally during traversal.

    - + Synposis

    @@ -65,7 +65,7 @@

    - + Example

    diff --git a/doc/html/range/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html index e30fba7..a9f5d42 100644 --- a/doc/html/range/utilities/sub_range.html +++ b/doc/html/range/utilities/sub_range.html @@ -35,7 +35,7 @@ is.

    - + Synopsis

    diff --git a/doc/reference.qbk b/doc/reference.qbk index 037495e..25500d0 100644 --- a/doc/reference.qbk +++ b/doc/reference.qbk @@ -1,4 +1,4 @@ -[section Reference] +[section:reference Reference] [include reference/overview.qbk] [include reference/synopsis.qbk] @@ -6,6 +6,7 @@ [include reference/adaptors.qbk] [include reference/algorithms.qbk] [include reference/ranges.qbk] +[include reference/utilities.qbk] [include reference/extending.qbk] [endsect] diff --git a/doc/reference/adaptors.qbk b/doc/reference/adaptors.qbk index 9de7fc5..22df03c 100644 --- a/doc/reference/adaptors.qbk +++ b/doc/reference/adaptors.qbk @@ -1,6 +1,6 @@ [section:adaptors Range Adaptors] -[section:adaptors_introduction Introduction and motivation] +[section:introduction Introduction and motivation] A [*Range Adaptor] is a class that wraps an existing Range to provide a new Range with different behaviour. Since the behaviour of Ranges is determined by their associated iterators, a Range Adaptor simply wraps the underlying iterators with new special iterators. In this example @@ -145,7 +145,7 @@ rng | boost::adaptors::uniqued [endsect] -[section:adaptors_general_requirements General Requirements] +[section:general_requirements General Requirements] In the description of generator expressions, the following notation is used: @@ -183,7 +183,7 @@ rng | boost::adaptors::adaptor_generator [endsect] -[section:adaptors_reference Reference] +[section:reference Reference] [include adaptors/adjacent_filtered.qbk] [include adaptors/copied.qbk] [include adaptors/filtered.qbk] diff --git a/doc/reference/algorithm/adjacent_find.qbk b/doc/reference/algorithm/adjacent_find.qbk index 32c881e..23c3cf8 100644 --- a/doc/reference/algorithm/adjacent_find.qbk +++ b/doc/reference/algorithm/adjacent_find.qbk @@ -1,4 +1,4 @@ -[section:adjacent_find Range Algorithm - adjacent_find] +[section:adjacent_find adjacent_find] [heading Prototype] diff --git a/doc/reference/algorithm/copy.qbk b/doc/reference/algorithm/copy.qbk index 70dd3a3..e959825 100644 --- a/doc/reference/algorithm/copy.qbk +++ b/doc/reference/algorithm/copy.qbk @@ -1,4 +1,4 @@ -[section:copy Range Algorithm - copy] +[section:copy copy] [heading Prototype] diff --git a/doc/reference/algorithm/copy_backward.qbk b/doc/reference/algorithm/copy_backward.qbk index f6aa444..f571aff 100644 --- a/doc/reference/algorithm/copy_backward.qbk +++ b/doc/reference/algorithm/copy_backward.qbk @@ -1,4 +1,4 @@ -[section:copy_backward Range Algorithm - copy_backward] +[section:copy_backward copy_backward] [heading Prototype] diff --git a/doc/reference/algorithm/count_if.qbk b/doc/reference/algorithm/count_if.qbk new file mode 100644 index 0000000..c2ee4bd --- /dev/null +++ b/doc/reference/algorithm/count_if.qbk @@ -0,0 +1,32 @@ +[section:count_if count_if] + +[heading Prototype] + +`` +template +typename range_difference::type +count_if(const SinglePassRange& rng, UnaryPredicate pred); +`` + +[heading Description] + +`count_if` returns the number of elements `x` in `rng` where `pred(x)` is `true`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/count_if.hpp` + +[heading Requirements] + +* `SinglePassRange` is a model of the __single_pass_range__ Concept. +* `UnaryPredicate` is a model of the `UnaryPredicateConcept`. +* `SinglePassRange`'s value type is a model of the `EqualityComparableConcept`. +* The value type of `SinglePassRange` is convertible to the argument type of `UnaryPredicate`. + +[heading Complexity] + +Linear. Exactly `distance(rng)` invocations of `pred`. + +[endsect] + + diff --git a/doc/reference/algorithm/fill.qbk b/doc/reference/algorithm/fill.qbk index 9e16492..a401046 100644 --- a/doc/reference/algorithm/fill.qbk +++ b/doc/reference/algorithm/fill.qbk @@ -1,4 +1,4 @@ -[section:fill Range Algorithm - fill] +[section:fill fill] [heading Prototype] diff --git a/doc/reference/algorithm/fill_n.qbk b/doc/reference/algorithm/fill_n.qbk index a17695c..0ca27af 100644 --- a/doc/reference/algorithm/fill_n.qbk +++ b/doc/reference/algorithm/fill_n.qbk @@ -1,4 +1,4 @@ -[section:fill_n Range Algorithm - fill_n] +[section:fill_n fill_n] [heading Prototype] diff --git a/doc/reference/algorithm/generate.qbk b/doc/reference/algorithm/generate.qbk index adc85af..0bbc345 100644 --- a/doc/reference/algorithm/generate.qbk +++ b/doc/reference/algorithm/generate.qbk @@ -1,4 +1,4 @@ -[section:generate Range Algorithm - generate] +[section:generate generate] [heading Prototype] diff --git a/doc/reference/algorithm/inplace_merge.qbk b/doc/reference/algorithm/inplace_merge.qbk index a393423..d4c2a9c 100644 --- a/doc/reference/algorithm/inplace_merge.qbk +++ b/doc/reference/algorithm/inplace_merge.qbk @@ -1,4 +1,4 @@ -[section:inplace_merge Range Algorithm - inplace_merge] +[section:inplace_merge inplace_merge] [heading Prototype] @@ -7,18 +7,18 @@ template BidirectionalRange& inplace_merge( BidirectionalRange& rng, typename range_iterator::type middle ); - + template const BidirectionalRange& inplace_merge( const BidirectionalRange& rng, typename range_iterator::type middle ); - + template BidirectionalRange& inplace_merge( BidirectionalRange& rng, typename range_iterator::type middle, BinaryPredicate pred ); - + template const BidirectionalRange& inplace_merge( const BidirectionalRange& rng, diff --git a/doc/reference/algorithm/merge.qbk b/doc/reference/algorithm/merge.qbk index edfed92..96d547c 100644 --- a/doc/reference/algorithm/merge.qbk +++ b/doc/reference/algorithm/merge.qbk @@ -1,4 +1,4 @@ -[section:merge Range Algorithm - merge] +[section:merge merge] [heading Prototype] diff --git a/doc/reference/algorithm/mismatch.qbk b/doc/reference/algorithm/mismatch.qbk index f470092..f971b2d 100644 --- a/doc/reference/algorithm/mismatch.qbk +++ b/doc/reference/algorithm/mismatch.qbk @@ -75,7 +75,7 @@ mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, [heading Description] -The versions of `mismatch` that return an iterator, return an iterator to the first position where `rng1` and `rng2` differ. +`mismatch` finds the first position where the two ranges `rng1` and `rng2` differ. Equality is determined by `operator==` for non-predicate versions of `mismatch`, and by satisfying `pred` in the predicate versions. diff --git a/doc/reference/algorithm/nth_element.qbk b/doc/reference/algorithm/nth_element.qbk index 9b888b6..57c1d37 100644 --- a/doc/reference/algorithm/nth_element.qbk +++ b/doc/reference/algorithm/nth_element.qbk @@ -1,4 +1,4 @@ -[section:nth_element Range Algorithm - nth_element] +[section:nth_element nth_element] [heading Prototype] diff --git a/doc/reference/algorithm/partial_sort.qbk b/doc/reference/algorithm/partial_sort.qbk index 794415a..6548672 100644 --- a/doc/reference/algorithm/partial_sort.qbk +++ b/doc/reference/algorithm/partial_sort.qbk @@ -1,4 +1,4 @@ -[section:partial_sort Range Algorithm - partial_sort] +[section:partial_sort partial_sort] [heading Prototype] diff --git a/doc/reference/algorithm/partition.qbk b/doc/reference/algorithm/partition.qbk index cd17db7..272c0e3 100644 --- a/doc/reference/algorithm/partition.qbk +++ b/doc/reference/algorithm/partition.qbk @@ -1,4 +1,4 @@ -[section:partition Range Algorithm - partition] +[section:partition partition] [heading Prototype] diff --git a/doc/reference/algorithm/random_shuffle.qbk b/doc/reference/algorithm/random_shuffle.qbk index e2d10b7..8f94696 100644 --- a/doc/reference/algorithm/random_shuffle.qbk +++ b/doc/reference/algorithm/random_shuffle.qbk @@ -1,4 +1,4 @@ -[section:random_shuffle Range Algorithm - random_shuffle] +[section:random_shuffle random_shuffle] [heading Prototype] diff --git a/doc/reference/algorithm/remove.qbk b/doc/reference/algorithm/remove.qbk index 5c609aa..9e7380c 100644 --- a/doc/reference/algorithm/remove.qbk +++ b/doc/reference/algorithm/remove.qbk @@ -1,4 +1,4 @@ -[section:remove Range Algorithm - remove] +[section:remove remove] [heading Prototype] diff --git a/doc/reference/algorithm/remove_copy.qbk b/doc/reference/algorithm/remove_copy.qbk new file mode 100644 index 0000000..9236396 --- /dev/null +++ b/doc/reference/algorithm/remove_copy.qbk @@ -0,0 +1,34 @@ +[section:remove_copy remove_copy] + +[heading Prototype] + +`` +template +OutputIterator +remove_copy(ForwardRange& rng, OutputIterator out, const Value& val); + +template +OutputIterator +remove_copy(const ForwardRange& rng, OutputIterator out, const Value& val); +`` + +[heading Description] + +`remove_copy` copied all of the elements `x` from `rng` for which `x == val` is `false`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/remove_copy.hpp` + +[heading Requirements] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange` is mutable. +* `Value` is a model of the `EqualityComparableConcept`. +* Objects of type `Value` can be compared for equality with objects of `ForwardRange`'s value type. + +[heading Complexity] + +Linear. `remove_copy` performs exactly `distance(rng)` comparisons for equality. + +[endsect] diff --git a/doc/reference/algorithm/remove_copy_if.qbk b/doc/reference/algorithm/remove_copy_if.qbk new file mode 100644 index 0000000..b94dae2 --- /dev/null +++ b/doc/reference/algorithm/remove_copy_if.qbk @@ -0,0 +1,33 @@ +[section:remove_copy_if remove_copy_if] + +[heading Prototype] + +`` +template +OutputIterator +remove_copy_if(ForwardRange& rng, OutputIterator out, UnaryPred pred); + +template +OutputIterator +remove_copy_if(const ForwardRange& rng, OutputIterator out, UnaryPred pred); +`` + +[heading Description] + +`remove_copy_if` copied all of the elements `x` from `rng` for which `pred(x)` is `false`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/remove_copy_if.hpp` + +[heading Requirements] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange` is mutable. +* `UnaryPred` is a model of the `UnaryPredicateConcept`. + +[heading Complexity] + +Linear. `remove_copy_if` performs exactly `distance(rng)` comparisons with UnaryPred. + +[endsect] diff --git a/doc/reference/algorithm/remove_if.qbk b/doc/reference/algorithm/remove_if.qbk index 475e965..1250aba 100644 --- a/doc/reference/algorithm/remove_if.qbk +++ b/doc/reference/algorithm/remove_if.qbk @@ -1,4 +1,4 @@ -[section:remove_if Range Algorithm - remove_if] +[section:remove_if remove_if] [heading Prototype] diff --git a/doc/reference/algorithm/replace.qbk b/doc/reference/algorithm/replace.qbk index a173a56..6b33666 100644 --- a/doc/reference/algorithm/replace.qbk +++ b/doc/reference/algorithm/replace.qbk @@ -1,4 +1,4 @@ -[section:replace Range Algorithm - replace] +[section:replace replace] [heading Prototype] diff --git a/doc/reference/algorithm/replace_copy.qbk b/doc/reference/algorithm/replace_copy.qbk new file mode 100644 index 0000000..72478ea --- /dev/null +++ b/doc/reference/algorithm/replace_copy.qbk @@ -0,0 +1,33 @@ +[section:replace_copy replace_copy] + +[heading Prototype] + +`` +template +OutputIterator replace_copy(const ForwardRange& rng, OutputIterator out, + const Value& what, const Value& with_what); +`` + +[heading Description] + +`replace_copy` copy every element `x` in `rng` such that the corresponding element in the output range `y` is `x == what ? with_what : x`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/replace_copy.hpp` + +[heading Requirements] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange` is mutable. +* `Value` is convertible to `ForwardRange`'s value type. +* `Value` is a model of the `AssignableConcept`. +* `OutputIterator` is a model of the `OutputIteratorConcept`. + +[heading Complexity] + +Linear. `replace_copy` performs exactly `distance(rng)`. + +[endsect] + + diff --git a/doc/reference/algorithm/replace_copy_if.qbk b/doc/reference/algorithm/replace_copy_if.qbk new file mode 100644 index 0000000..19a1946 --- /dev/null +++ b/doc/reference/algorithm/replace_copy_if.qbk @@ -0,0 +1,34 @@ +[section:replace_copy_if replace_copy_if] + +[heading Prototype] + +`` +template +OutputIterator replace_copy_if(const ForwardRange& rng, OutputIterator out, + UnaryPredicate pred, const Value& with_what); +`` + +[heading Description] + +`replace_copy_if` copy every element `x` in `rng` such that the corresponding element in the output range `y` is `pred(x) ? with_what : x`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/replace_copy_if.hpp` + +[heading Requirements] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange` is mutable. +* `Value` is convertible to `ForwardRange`'s value type. +* `Value` is a model of the `AssignableConcept`. +* `OutputIterator` is a model of the `OutputIteratorConcept`. +* `UnaryPredicate` is a model of the `UnaryPredicateConcept`. + +[heading Complexity] + +Linear. `replace_copy_if` performs exactly `distance(rng)` evaluations of `pred`. + +[endsect] + + diff --git a/doc/reference/algorithm/replace_if.qbk b/doc/reference/algorithm/replace_if.qbk index 2546395..e12202e 100644 --- a/doc/reference/algorithm/replace_if.qbk +++ b/doc/reference/algorithm/replace_if.qbk @@ -1,4 +1,4 @@ -[section:replace_if Range Algorithm - replace_if] +[section:replace_if replace_if] [heading Prototype] diff --git a/doc/reference/algorithm/reverse.qbk b/doc/reference/algorithm/reverse.qbk index 7d678ef..d6bd00f 100644 --- a/doc/reference/algorithm/reverse.qbk +++ b/doc/reference/algorithm/reverse.qbk @@ -1,4 +1,4 @@ -[section:reverse Range Algorithm - reverse] +[section:reverse reverse] [heading Prototype] diff --git a/doc/reference/algorithm/reverse_copy.qbk b/doc/reference/algorithm/reverse_copy.qbk new file mode 100644 index 0000000..d7d087e --- /dev/null +++ b/doc/reference/algorithm/reverse_copy.qbk @@ -0,0 +1,31 @@ +[section:reverse_copy reverse_copy] + +[heading Prototype] + +`` +template +OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out); +`` + +[heading Description] + +`reverse_copy` copies the elements from `rng` in reverse order to `out`. +Returns the output iterator one passed the last copied element. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/reverse_copy.hpp` + +[heading Requirements] + +* `BidirectionalRange` is a model of the __bidirectional_range__ Concept. +* `BidirectionalRange` is mutable. +* `OutputIterator` is a model of the `OutputIteratorConcept`. + +[heading Complexity] + +Linear. `reverse_copy` makes `distance(rng)` copies. + +[endsect] + + diff --git a/doc/reference/algorithm/rotate.qbk b/doc/reference/algorithm/rotate.qbk index 9fa1b90..66b6f45 100644 --- a/doc/reference/algorithm/rotate.qbk +++ b/doc/reference/algorithm/rotate.qbk @@ -1,4 +1,4 @@ -[section:rotate Range Algorithm - rotate] +[section:rotate rotate] [heading Prototype] @@ -6,7 +6,7 @@ template ForwardRange& rotate(ForwardRange& rng, typename range_iterator::type middle); - + template const ForwardRange& rotate(const ForwardRange& rng, typename range_iterator::type middle); diff --git a/doc/reference/algorithm/rotate_copy.qbk b/doc/reference/algorithm/rotate_copy.qbk new file mode 100644 index 0000000..838524a --- /dev/null +++ b/doc/reference/algorithm/rotate_copy.qbk @@ -0,0 +1,38 @@ +[section:rotate_copy rotate_copy] + +[heading Prototype] + +`` +template +OutputIterator rotate_copy( + const ForwardRange& rng, + typename range_iterator::type middle, + OutputIterator out); +`` + +[heading Description] + +`rotate_copy` rotates the elements in a range. It copies the two ranges `[begin(rng), middle)` and `[middle, end(rng))` to `out`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/rotate_copy.hpp` + +[heading Requirements] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange` is mutable. +* `OutputIterator` is a model of the `OutputIteratorConcept`. + +[heading Precondition:] + +* `[begin(rng), middle)` is a valid range. +* `[middle, end(rng))` is a valid range. + +[heading Complexity] + +Linear. Exactly `distance(rng)` elements are copied. + +[endsect] + + diff --git a/doc/reference/algorithm/search_n.qbk b/doc/reference/algorithm/search_n.qbk new file mode 100644 index 0000000..3f3ef10 --- /dev/null +++ b/doc/reference/algorithm/search_n.qbk @@ -0,0 +1,58 @@ +[section:search_n search_n] + +[heading Prototype] + +`` +template +typename range_iterator::type +search_n(ForwardRange& rng, Integer n, const Value& value); + +template +typename range_iterator::type +search_n(const ForwardRange& rng, Integer n, const Value& value); + +template +typename range_iterator::type +search_n(ForwardRange& rng, Integer n, const Value& value, + BinaryPredicate binary_pred); + +template +typename range_iterator::type +search_n(const ForwardRange& rng, Integer n, const Value& value, + BinaryPredicate binary_pred); +`` + +[heading Description] + +`search_n` searches `rng` for a sequence of length `n` equal to `value` where +equality is determined by operator== in the non-predicate case, and by a +predicate when one is supplied. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/search_n.hpp` + +[heading Requirements] + +[*For the non-predicate versions:] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `ForwardRange`'s value type is a model of the `EqualityComparableConcept`. +* `ForwardRange`s value type can be compared for equality with `Value`. +* `Integer` is a model of the `IntegerConcept`. + +[*For the predicate versions:] + +* `ForwardRange` is a model of the __forward_range__ Concept. +* `BinaryPredicate` is a model of the `BinaryPredicateConcept`. +* `ForwardRange`'s value type is convertible to `BinaryPredicate`'s first argument type. +* `Value` is convertible to `BinaryPredicate`'s second argument type. +* `Integer` is a model of the `IntegerConcept`. + +[heading Complexity] + +Average complexity is Linear. Worst-case complexity is quadratic. + +[endsect] + + diff --git a/doc/reference/algorithm/sort.qbk b/doc/reference/algorithm/sort.qbk index 63fb8f8..16fcfc4 100644 --- a/doc/reference/algorithm/sort.qbk +++ b/doc/reference/algorithm/sort.qbk @@ -1,4 +1,4 @@ -[section:sort Range Algorithm - sort] +[section:sort sort] [heading Prototype] diff --git a/doc/reference/algorithm/stable_partition.qbk b/doc/reference/algorithm/stable_partition.qbk index b68aa11..8b20710 100644 --- a/doc/reference/algorithm/stable_partition.qbk +++ b/doc/reference/algorithm/stable_partition.qbk @@ -1,4 +1,4 @@ -[section:stable_partition Range Algorithm - stable_partition] +[section:stable_partition stable_partition] [heading Prototype] diff --git a/doc/reference/algorithm/stable_sort.qbk b/doc/reference/algorithm/stable_sort.qbk index 11431b5..bb6b64a 100644 --- a/doc/reference/algorithm/stable_sort.qbk +++ b/doc/reference/algorithm/stable_sort.qbk @@ -1,4 +1,4 @@ -[section:stable_sort Range Algorithm - stable_sort] +[section:stable_sort stable_sort] [heading Prototype] diff --git a/doc/reference/algorithm/swap_ranges.qbk b/doc/reference/algorithm/swap_ranges.qbk new file mode 100644 index 0000000..f761ec4 --- /dev/null +++ b/doc/reference/algorithm/swap_ranges.qbk @@ -0,0 +1,32 @@ +[section:swap_ranges swap_ranges] + +[heading Prototype] + +`` +template +SinglePassRange2& swap_ranges(SinglePassRange1& rng1, SinglePassRange& rng2); +`` + +[heading Description] + +`swap_ranges` swaps each element `x` in `rng1` with the corresponding element `y` in `rng2`. +Returns a reference to `rng2`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/swap_ranges.hpp` + +[heading Requirements] + +* `SinglePassRange1` is a model of the __single_pass_range__ Concept. +* `SinglePassRange1` is mutable. +* `SinglePassRange2` is a model of the __single_pass_range__ Concept. +* `SinglePassRange2` is mutable. + +[heading Complexity] + +Linear. Exactly `distance(rng1)` elements are swapped. + +[endsect] + + diff --git a/doc/reference/algorithm/transform.qbk b/doc/reference/algorithm/transform.qbk index 0a9c68c..49df721 100644 --- a/doc/reference/algorithm/transform.qbk +++ b/doc/reference/algorithm/transform.qbk @@ -1,4 +1,4 @@ -[section:transform Range Algorithm - transform] +[section:transform transform] [heading Prototype] @@ -11,7 +11,7 @@ template< OutputIterator transform(const SinglePassRange1& rng, OutputIterator out, UnaryOperation fun); - + template< class SinglePassRange1, class SinglePassRange2, diff --git a/doc/reference/algorithm/unique.qbk b/doc/reference/algorithm/unique.qbk index b5d55b4..56a2283 100644 --- a/doc/reference/algorithm/unique.qbk +++ b/doc/reference/algorithm/unique.qbk @@ -1,4 +1,4 @@ -[section:unique Range Algorithm - unique] +[section:unique unique] [heading Prototype] diff --git a/doc/reference/algorithm/unique_copy.qbk b/doc/reference/algorithm/unique_copy.qbk new file mode 100644 index 0000000..1c311b6 --- /dev/null +++ b/doc/reference/algorithm/unique_copy.qbk @@ -0,0 +1,44 @@ +[section:unique_copy unique_copy] + +[heading Prototype] + +`` +template +OutputIterator unique_copy(const SinglePassRange& rng, OutputIterator out); + +template +OutputIterator unique_copy(const SinglePassRange& rng, OutputIterator out, BinaryPredicate pred); +`` + +[heading Description] + +`unique_copy` copies the first element of each sequence of duplicates encountered in `rng` to `out`. + +Equality is determined by the predicate if one is supplied, or by `operator==()` for `SinglePassRange`'s value type. + +[heading Definition] + +Defined in the header file `boost/range/algorithm/unique_copy.hpp` + +[heading Requirements] + +[*For the non-predicate versions of unique:] + +* `SinglePassRange` is a model of the __single_pass_range__ Concept. +* `SinglePassRange` is mutable. +* `SinglePassRange`'s value type is a model of the `EqualityComparableConcept`. +* `OutputIterator` is a model of the `OutputIteratorConcept`. + +[*For the predicate versions of unique:] + +* `SinglePassRange` is a model of the __single_pass_range__ Concept. +* `SinglePassRange` is mutable. +* `BinaryPredicate` is a model of the `BinaryPredicateConcept`. +* `SinglePassRange`'s value type is convertible to `BinaryPredicate`'s first argument type and to `BinaryPredicate`'s second argument type. +* `OutputIterator` is a model of the `OutputIteratorConcept`. + +[heading Complexity] + +Linear. `O(N)` where `N` is `distance(rng)`. Exactly `distance(rng)` comparisons are performed. + +[endsect] diff --git a/doc/reference/algorithm_ext/copy_n.qbk b/doc/reference/algorithm_ext/copy_n.qbk new file mode 100644 index 0000000..8d0481f --- /dev/null +++ b/doc/reference/algorithm_ext/copy_n.qbk @@ -0,0 +1,32 @@ +[section:copy_n copy_n] + +[heading Prototype] + +`` +template +OutputIterator copy_n(const SinglePassRange& rng, Size n, OutputIterator out); +`` + +[heading Description] + +`copy_n` is provided to completely replicate the standard algorithm header, +it is preferable to use Range Adaptors and the extension functions to achieve +the same result with greater safety. + +`copy_n` copies elements from `[boost::begin(rng), boost::begin(rng) + n)` to the range `[out, out + n)` + +[heading Definition] + +Defined in the header file `boost/range/algorithm_ext/copy_n.hpp` + +[heading Requirements] + +# `SinglePassRange` is a model of the __single_pass_range__ Concept. +# `Size` is a model of the `Integer` Concept. +# `OutputIterator` is a model of the `OutputIteratorConcept`. + +[heading Complexity] + +Linear. Exactly `n` elements are copied. + +[endsect] diff --git a/doc/reference/algorithm_ext/is_sorted.qbk b/doc/reference/algorithm_ext/is_sorted.qbk new file mode 100644 index 0000000..9edc08d --- /dev/null +++ b/doc/reference/algorithm_ext/is_sorted.qbk @@ -0,0 +1,35 @@ +[section:is_sorted is_sorted] + +[heading Prototype] + +`` +template +bool is_sorted(const SinglePassRange& rng); + +template +bool is_sorted(const SinglePassRange& rng, BinaryPredicate pred); +`` + +[heading Description] + +`is_sorted` determines if a range is sorted. +For the non-predicate version the return value is `true` if and only if for +each adjacent elements `[x,y]` the expression `x < y` is `true`. +For the predicate version the return value is `true` is and only if for each +adjacent elements `[x,y]` the expression `pred(x,y)` is `true`. + +[heading Definition] + +Defined in the header file `boost/range/algorithm_ext/is_sorted.hpp` + +[heading Requirements] + +# `SinglePassRange` is a model of the __single_pass_range__ Concept. +# `BinaryPredicate` is a model of the `BinaryPredicate` Concept. +# The value type of `SinglePassRange` is convertible to both argument types of `BinaryPredicate`. + +[heading Complexity] + +Linear. A maximum of `distance(rng)` comparisons are performed. + +[endsect] diff --git a/doc/reference/algorithms.qbk b/doc/reference/algorithms.qbk index dca35d4..5683f1b 100644 --- a/doc/reference/algorithms.qbk +++ b/doc/reference/algorithms.qbk @@ -78,7 +78,7 @@ and there is no need to worry about generating an invalid range. Furthermore, if [endsect] -[section:range_algorithm_mutating_algorithms Mutating algorithms] +[section:mutating Mutating algorithms] [include algorithm/copy.qbk] [include algorithm/copy_backward.qbk] [include algorithm/fill.qbk] @@ -91,21 +91,31 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include algorithm/partition.qbk] [include algorithm/random_shuffle.qbk] [include algorithm/remove.qbk] +[include algorithm/remove_copy.qbk] +[include algorithm/remove_copy_if.qbk] [include algorithm/remove_if.qbk] [include algorithm/replace.qbk] +[include algorithm/replace_copy.qbk] +[include algorithm/replace_copy_if.qbk] [include algorithm/replace_if.qbk] +[include algorithm/reverse.qbk] +[include algorithm/reverse_copy.qbk] [include algorithm/rotate.qbk] +[include algorithm/rotate_copy.qbk] [include algorithm/sort.qbk] [include algorithm/stable_partition.qbk] [include algorithm/stable_sort.qbk] +[include algorithm/swap_ranges.qbk] [include algorithm/transform.qbk] [include algorithm/unique.qbk] +[include algorithm/unique_copy.qbk] [endsect] -[section:range_algorithm_non_mutating_algorithms Non-mutating algorithms] +[section:non_mutating Non-mutating algorithms] [include algorithm/adjacent_find.qbk] [include algorithm/binary_search.qbk] [include algorithm/count.qbk] +[include algorithm/count_if.qbk] [include algorithm/equal.qbk] [include algorithm/equal_range.qbk] [include algorithm/for_each.qbk] @@ -119,10 +129,11 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include algorithm/min_element.qbk] [include algorithm/mismatch.qbk] [include algorithm/search.qbk] +[include algorithm/search_n.qbk] [include algorithm/upper_bound.qbk] [endsect] -[section:set_algorithms Set algorithms] +[section:set Set algorithms] [include algorithm/includes.qbk] [include algorithm/set_union.qbk] [include algorithm/set_intersection.qbk] @@ -130,23 +141,25 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include algorithm/set_symmetric_difference.qbk] [endsect] -[section:heap_algorithms Heap algorithms] +[section:heap Heap algorithms] [include algorithm/push_heap.qbk] [include algorithm/pop_heap.qbk] [include algorithm/make_heap.qbk] [include algorithm/sort_heap.qbk] [endsect] -[section:permutation_algorithms Permutation algorithms] +[section:permutation Permutation algorithms] [include algorithm/next_permutation.qbk] [include algorithm/prev_permutation.qbk] [endsect] -[section:range_algorithm_new_algorithms New algorithms] +[section:new New algorithms] +[include algorithm_ext/copy_n.qbk] [include algorithm_ext/erase.qbk] [include algorithm_ext/for_each.qbk] [include algorithm_ext/insert.qbk] [include algorithm_ext/iota.qbk] +[include algorithm_ext/is_sorted.qbk] [include algorithm_ext/overwrite.qbk] [include algorithm_ext/push_back.qbk] [include algorithm_ext/push_front.qbk] @@ -154,7 +167,7 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include algorithm_ext/remove_erase_if.qbk] [endsect] -[section:range_numeric Numeric algorithms] +[section:numeric Numeric algorithms] [include numeric/accumulate.qbk] [include numeric/adjacent_difference.qbk] [include numeric/inner_product.qbk] diff --git a/doc/utilities.qbk b/doc/reference/utilities.qbk similarity index 100% rename from doc/utilities.qbk rename to doc/reference/utilities.qbk From 925b3ad3558acde66803f6249babc1deebdc7ffb Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 16:11:40 +0000 Subject: [PATCH 23/26] Boost.Range updated unit tests. [SVN r61648] --- .../boost/range/algorithm/remove_copy_if.hpp | 4 +- test/Jamfile.v2 | 9 ++ test/algorithm_test/copy_n.cpp | 63 ++++++++ test/algorithm_test/for_each.cpp | 18 ++- test/algorithm_test/remove_copy.cpp | 98 +++++++++++++ test/algorithm_test/remove_copy_if.cpp | 103 +++++++++++++ test/algorithm_test/replace_copy.cpp | 100 +++++++++++++ test/algorithm_test/replace_copy_if.cpp | 104 ++++++++++++++ test/algorithm_test/reverse_copy.cpp | 88 ++++++++++++ test/algorithm_test/rotate_copy.cpp | 103 +++++++++++++ test/algorithm_test/search_n.cpp | 95 ++++++++++++ test/algorithm_test/swap_ranges.cpp | 95 ++++++++++++ test/algorithm_test/unique_copy.cpp | 136 ++++++++++++++++++ test/replace_copy.cpp | 0 14 files changed, 1008 insertions(+), 8 deletions(-) create mode 100644 test/algorithm_test/copy_n.cpp create mode 100644 test/algorithm_test/remove_copy.cpp create mode 100644 test/algorithm_test/remove_copy_if.cpp create mode 100644 test/algorithm_test/replace_copy.cpp create mode 100644 test/algorithm_test/replace_copy_if.cpp create mode 100644 test/algorithm_test/reverse_copy.cpp create mode 100644 test/algorithm_test/rotate_copy.cpp create mode 100644 test/algorithm_test/search_n.cpp create mode 100644 test/algorithm_test/swap_ranges.cpp create mode 100644 test/algorithm_test/unique_copy.cpp create mode 100644 test/replace_copy.cpp diff --git a/include/boost/range/algorithm/remove_copy_if.hpp b/include/boost/range/algorithm/remove_copy_if.hpp index 791a38f..8febe59 100755 --- a/include/boost/range/algorithm/remove_copy_if.hpp +++ b/include/boost/range/algorithm/remove_copy_if.hpp @@ -30,8 +30,8 @@ namespace boost inline OutputIterator remove_copy_if(SinglePassRange& rng, OutputIterator out_it, Predicate pred) { - boost::function_requires< SinglePassRangeConcept >(); - return std::remove_copy_if(boost::begin(rng), boost::end(rng), out_it, pred); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::remove_copy_if(boost::begin(rng), boost::end(rng), out_it, pred); } } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2b2466f..645f5f9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -91,12 +91,19 @@ test-suite range : [ range-test algorithm_test/prev_permutation ] [ range-test algorithm_test/random_shuffle ] [ range-test algorithm_test/remove ] + [ range-test algorithm_test/remove_copy ] + [ range-test algorithm_test/remove_copy_if ] [ range-test algorithm_test/remove_if ] [ range-test algorithm_test/replace ] + [ range-test algorithm_test/replace_copy ] + [ range-test algorithm_test/replace_copy_if ] [ range-test algorithm_test/replace_if ] [ range-test algorithm_test/reverse ] + [ range-test algorithm_test/reverse_copy ] [ range-test algorithm_test/rotate ] + [ range-test algorithm_test/rotate_copy ] [ range-test algorithm_test/search ] + [ range-test algorithm_test/search_n ] [ range-test algorithm_test/set_difference ] [ range-test algorithm_test/set_intersection ] [ range-test algorithm_test/set_symmetric_difference ] @@ -104,8 +111,10 @@ test-suite range : [ range-test algorithm_test/sort ] [ range-test algorithm_test/stable_partition ] [ range-test algorithm_test/stable_sort ] + [ range-test algorithm_test/swap_ranges ] [ range-test algorithm_test/transform ] [ range-test algorithm_test/unique ] + [ range-test algorithm_test/unique_copy ] [ range-test algorithm_test/upper_bound ] [ range-test algorithm_ext_test/copy_n ] [ range-test algorithm_ext_test/erase ] diff --git a/test/algorithm_test/copy_n.cpp b/test/algorithm_test/copy_n.cpp new file mode 100644 index 0000000..59bca9b --- /dev/null +++ b/test/algorithm_test/copy_n.cpp @@ -0,0 +1,63 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace +{ + template< class Container > + void test_copy_n_impl() + { + Container source; + typedef BOOST_DEDUCED_TYPENAME Container::value_type value_t; + + std::vector target; + target.resize(source.size()); + + typedef BOOST_DEDUCED_TYPENAME range_iterator< std::vector >::type iterator_t; + iterator_t it = boost::copy(source, target.begin()); + + BOOST_CHECK( it == target.end() ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + target.begin(), target.end(), + source.begin(), source.end() + ); + } + + void test_copy_n() + { + test_copy_n_impl< std::vector >(); + test_copy_n_impl< std::list >(); + test_copy_n_impl< std::set >(); + test_copy_n_impl< std::multiset >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.copy_n" ); + + test->add( BOOST_TEST_CASE( &::test_copy_n ) ); + + return test; +} diff --git a/test/algorithm_test/for_each.cpp b/test/algorithm_test/for_each.cpp index ac517ad..37614ad 100644 --- a/test/algorithm_test/for_each.cpp +++ b/test/algorithm_test/for_each.cpp @@ -26,6 +26,12 @@ namespace boost { namespace { + template< class Range > + unsigned int udistance(Range& rng) + { + return static_cast(boost::distance(rng)); + } + template< class SinglePassRange > void test_for_each_impl( SinglePassRange rng ) { @@ -35,12 +41,12 @@ namespace boost // Test the mutable version fn_t result_fn = boost::for_each(rng, fn_t(rng)); - BOOST_CHECK_EQUAL( boost::distance(rng), result_fn.invocation_count() ); + BOOST_CHECK_EQUAL( boost::udistance(rng), result_fn.invocation_count() ); // Test the constant version const SinglePassRange& cref_rng = rng; result_fn = boost::for_each(cref_rng, fn_t(cref_rng)); - BOOST_CHECK_EQUAL( boost::distance(cref_rng), result_fn.invocation_count() ); + BOOST_CHECK_EQUAL( boost::udistance(cref_rng), result_fn.invocation_count() ); } template< class Container > @@ -51,7 +57,7 @@ namespace boost // Test empty Container cont; test_for_each_impl(cont); - + // Test one element cont += 0; test_for_each_impl(cont); @@ -63,7 +69,7 @@ namespace boost void test_for_each() { - boost::array a = { 0,1,2,3,4,5,6,7,8,9 }; + boost::array a = {{ 0,1,2,3,4,5,6,7,8,9 }}; test_for_each_impl(a); test_for_each_t< std::vector >(); @@ -79,8 +85,8 @@ init_unit_test_suite(int argc, char* argv[]) { boost::unit_test::test_suite* test = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.for_each" ); - + test->add( BOOST_TEST_CASE( &boost::test_for_each ) ); - + return test; } diff --git a/test/algorithm_test/remove_copy.cpp b/test/algorithm_test/remove_copy.cpp new file mode 100644 index 0000000..43d0ebe --- /dev/null +++ b/test/algorithm_test/remove_copy.cpp @@ -0,0 +1,98 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template + void test_append(Iterator target, Value value) + { + *target++ = value; + } + + template< class Container, class Value > + void test_remove_copy_impl( const Container& c, Value to_remove ) + { + typedef typename boost::range_value::type value_type; + std::vector reference; + + typedef BOOST_DEDUCED_TYPENAME std::vector::iterator iterator_t; + + test_append( + std::remove_copy(c.begin(), c.end(), + std::back_inserter(reference), to_remove), + to_remove); + + std::vector test; + test_append( + boost::remove_copy(c, std::back_inserter(test), to_remove), + to_remove); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + } + + template< class Container > + void test_remove_copy_impl() + { + using namespace boost::assign; + + Container cont; + test_remove_copy_impl(cont, 0); + + cont.clear(); + cont += 1; + test_remove_copy_impl(cont, 0); + test_remove_copy_impl(cont, 1); + + cont.clear(); + cont += 1,1,1,1,1; + test_remove_copy_impl(cont, 0); + test_remove_copy_impl(cont, 1); + + cont.clear(); + cont += 1,2,3,4,5,6,7,8,9; + test_remove_copy_impl(cont, 1); + test_remove_copy_impl(cont, 9); + test_remove_copy_impl(cont, 4); + } + + void test_remove_copy() + { + test_remove_copy_impl< std::vector >(); + test_remove_copy_impl< std::list >(); + test_remove_copy_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.remove_copy" ); + + test->add( BOOST_TEST_CASE( &test_remove_copy ) ); + + return test; +} + diff --git a/test/algorithm_test/remove_copy_if.cpp b/test/algorithm_test/remove_copy_if.cpp new file mode 100644 index 0000000..0418ddd --- /dev/null +++ b/test/algorithm_test/remove_copy_if.cpp @@ -0,0 +1,103 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template< class Iterator, class Value > + void test_append(Iterator target, Value value) + { + *target++ = value; + } + + template< class Container, class UnaryPredicate > + void test_remove_copy_if_impl( const Container& c, UnaryPredicate pred ) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_value::type value_type; + std::vector reference; + + test_append( + std::remove_copy_if(c.begin(), c.end(), std::back_inserter(reference), pred), + value_type() + ); + + std::vector test; + test_append( + boost::remove_copy_if(c, std::back_inserter(test), pred), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + } + + template< class Container > + void test_remove_copy_if_( const Container& c, int to_remove ) + { + test_remove_copy_if_impl(c, boost::bind(std::equal_to(), _1, to_remove)); + test_remove_copy_if_impl(c, boost::bind(std::not_equal_to(), _1, to_remove)); + } + + template< class Container > + void test_remove_copy_if_impl() + { + using namespace boost::assign; + + Container cont; + test_remove_copy_if_(cont, 0); + + cont.clear(); + cont += 1; + test_remove_copy_if_(cont, 0); + test_remove_copy_if_(cont, 1); + + cont.clear(); + cont += 1,1,1,1,1; + test_remove_copy_if_(cont, 0); + test_remove_copy_if_(cont, 1); + + cont.clear(); + cont += 1,2,3,4,5,6,7,8,9; + test_remove_copy_if_(cont, 1); + test_remove_copy_if_(cont, 9); + test_remove_copy_if_(cont, 4); + } + + inline void test_remove_copy_if() + { + test_remove_copy_if_impl< std::vector >(); + test_remove_copy_if_impl< std::list >(); + test_remove_copy_if_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.remove_copy_if" ); + + test->add( BOOST_TEST_CASE( &test_remove_copy_if ) ); + + return test; +} diff --git a/test/algorithm_test/replace_copy.cpp b/test/algorithm_test/replace_copy.cpp new file mode 100644 index 0000000..a2ce612 --- /dev/null +++ b/test/algorithm_test/replace_copy.cpp @@ -0,0 +1,100 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template + void test_append(Iterator target, Value value) + { + *target++ = value; + } + + template< class Container, class Value > + void test_replace_copy_impl( const Container& c, Value to_replace ) + { + const Value replace_with = to_replace * 2; + + typedef typename boost::range_value::type value_type; + std::vector reference; + + typedef BOOST_DEDUCED_TYPENAME std::vector::iterator iterator_t; + + test_append( + std::replace_copy(c.begin(), c.end(), + std::back_inserter(reference), to_replace, replace_with), + to_replace); + + std::vector test; + test_append( + boost::replace_copy(c, std::back_inserter(test), to_replace, replace_with), + to_replace); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + } + + template< class Container > + void test_replace_copy_impl() + { + using namespace boost::assign; + + Container cont; + test_replace_copy_impl(cont, 0); + + cont.clear(); + cont += 1; + test_replace_copy_impl(cont, 0); + test_replace_copy_impl(cont, 1); + + cont.clear(); + cont += 1,1,1,1,1; + test_replace_copy_impl(cont, 0); + test_replace_copy_impl(cont, 1); + + cont.clear(); + cont += 1,2,3,4,5,6,7,8,9; + test_replace_copy_impl(cont, 1); + test_replace_copy_impl(cont, 9); + test_replace_copy_impl(cont, 4); + } + + void test_replace_copy() + { + test_replace_copy_impl< std::vector >(); + test_replace_copy_impl< std::list >(); + test_replace_copy_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.replace_copy" ); + + test->add( BOOST_TEST_CASE( &test_replace_copy ) ); + + return test; +} + diff --git a/test/algorithm_test/replace_copy_if.cpp b/test/algorithm_test/replace_copy_if.cpp new file mode 100644 index 0000000..5a68fe4 --- /dev/null +++ b/test/algorithm_test/replace_copy_if.cpp @@ -0,0 +1,104 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template< class Iterator, class Value > + void test_append(Iterator target, Value value) + { + *target++ = value; + } + + template< class Container, class UnaryPredicate > + void test_replace_copy_if_impl( const Container& c, UnaryPredicate pred ) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_value::type value_type; + const value_type replace_with = value_type(); + std::vector reference; + + test_append( + std::replace_copy_if(c.begin(), c.end(), std::back_inserter(reference), pred, replace_with), + value_type() + ); + + std::vector test; + test_append( + boost::replace_copy_if(c, std::back_inserter(test), pred, replace_with), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + } + + template< class Container > + void test_replace_copy_if_( const Container& c, int to_replace ) + { + test_replace_copy_if_impl(c, boost::bind(std::equal_to(), _1, to_replace)); + test_replace_copy_if_impl(c, boost::bind(std::not_equal_to(), _1, to_replace)); + } + + template< class Container > + void test_replace_copy_if_impl() + { + using namespace boost::assign; + + Container cont; + test_replace_copy_if_(cont, 0); + + cont.clear(); + cont += 1; + test_replace_copy_if_(cont, 0); + test_replace_copy_if_(cont, 1); + + cont.clear(); + cont += 1,1,1,1,1; + test_replace_copy_if_(cont, 0); + test_replace_copy_if_(cont, 1); + + cont.clear(); + cont += 1,2,3,4,5,6,7,8,9; + test_replace_copy_if_(cont, 1); + test_replace_copy_if_(cont, 9); + test_replace_copy_if_(cont, 4); + } + + inline void test_replace_copy_if() + { + test_replace_copy_if_impl< std::vector >(); + test_replace_copy_if_impl< std::list >(); + test_replace_copy_if_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.replace_copy_if" ); + + test->add( BOOST_TEST_CASE( &test_replace_copy_if ) ); + + return test; +} diff --git a/test/algorithm_test/reverse_copy.cpp b/test/algorithm_test/reverse_copy.cpp new file mode 100644 index 0000000..8a7d931 --- /dev/null +++ b/test/algorithm_test/reverse_copy.cpp @@ -0,0 +1,88 @@ +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template + void test_append(OutputIterator out, Value value) + { + *out++ = value; + } + + template + void test_reverse_copy_impl(Container& cont) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_value::type value_type; + std::vector reference; + std::vector test; + + test_append( + std::reverse_copy(cont.begin(), cont.end(), std::back_inserter(reference)), + value_type() + ); + + test_append( + boost::reverse_copy(cont, std::back_inserter(test)), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference.begin(), reference.end(), + test.begin(), test.end() + ); + } + + template + void test_reverse_copy_impl() + { + using namespace boost::assign; + + Container cont; + test_reverse_copy_impl(cont); + + cont.clear(); + cont += 1; + test_reverse_copy_impl(cont); + + cont.clear(); + cont += 1,2,3,4,5,6,7,8,9; + test_reverse_copy_impl(cont); + } + + void test_reverse_copy() + { + test_reverse_copy_impl< std::vector >(); + test_reverse_copy_impl< std::list >(); + test_reverse_copy_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.reverse_copy" ); + + test->add( BOOST_TEST_CASE( &::test_reverse_copy ) ); + + return test; +} diff --git a/test/algorithm_test/rotate_copy.cpp b/test/algorithm_test/rotate_copy.cpp new file mode 100644 index 0000000..c403442 --- /dev/null +++ b/test/algorithm_test/rotate_copy.cpp @@ -0,0 +1,103 @@ +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template + void test_append(OutputIterator target, Value value) + { + *target++ = value; + } + + template + void test_rotate_copy_impl(Container& cont, Iterator where_it) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_value::type value_type; + std::vector reference; + std::vector test; + + typedef BOOST_DEDUCED_TYPENAME boost::range_iterator::type iterator_t; + + test_append( + std::rotate_copy(cont.begin(), where_it, cont.end(), + std::back_inserter(reference)), + value_type() + ); + + test_append( + boost::rotate_copy(cont, where_it, std::back_inserter(test)), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference.begin(), reference.end(), + test.begin(), test.end() + ); + } + + template + void test_rotate_copy_impl(Container& cont) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_iterator::type iterator_t; + + iterator_t last = cont.end(); + for (iterator_t it = cont.begin(); it != last; ++it) + { + test_rotate_copy_impl(cont, it); + } + } + + template + void test_rotate_copy_impl() + { + using namespace boost::assign; + + Container cont; + test_rotate_copy_impl(cont); + + cont.clear(); + cont += 1; + test_rotate_copy_impl(cont); + + cont.clear(); + cont += 1,2,3,4,5,6,7,8,9; + test_rotate_copy_impl(cont); + } + + void test_rotate_copy() + { + test_rotate_copy_impl< std::vector >(); + test_rotate_copy_impl< std::list >(); + test_rotate_copy_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.rotate_copy" ); + + test->add( BOOST_TEST_CASE( &test_rotate_copy ) ); + + return test; +} diff --git a/test/algorithm_test/search_n.cpp b/test/algorithm_test/search_n.cpp new file mode 100644 index 0000000..d419f9c --- /dev/null +++ b/test/algorithm_test/search_n.cpp @@ -0,0 +1,95 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include + +namespace +{ + template< class Container1, class Value > + void test_search_n_impl(Container1& cont1, Value value) + { + typedef BOOST_DEDUCED_TYPENAME Container1::const_iterator const_iterator1_t; + typedef BOOST_DEDUCED_TYPENAME Container1::iterator iterator1_t; + + const Container1& ccont1 = cont1; + + for (std::size_t n = 0; n < cont1.size(); ++n) + { + iterator1_t it = boost::search_n(cont1, n, value); + iterator1_t it2 = boost::search_n(cont1, n, value); + const_iterator1_t cit = boost::search_n(ccont1, n, value); + const_iterator1_t cit2 = boost::search_n(ccont1, n, value); + + BOOST_CHECK( it == std::search_n(cont1.begin(), cont1.end(), n, value) ); + BOOST_CHECK( it2 == std::search_n(cont1.begin(), cont1.end(), n, value) ); + BOOST_CHECK( cit == std::search_n(ccont1.begin(), ccont1.end(), n, value) ); + BOOST_CHECK( cit2 == std::search_n(ccont1.begin(), ccont1.end(), n, value) ); + } + } + + template< class Container1, class Container2 > + void test_search_n_impl() + { + using namespace boost::assign; + + Container1 cont1; + + test_search_n_impl(cont1, 1); + + cont1 += 1; + test_search_n_impl(cont1, 1); + test_search_n_impl(cont1, 0); + + cont1.clear(); + cont1 += 1,1; + test_search_n_impl(cont1, 1); + test_search_n_impl(cont1, 0); + + cont1 += 1,1,1; + test_search_n_impl(cont1, 1); + test_search_n_impl(cont1, 0); + + cont1.clear(); + cont1 += 1,2,3,4,5,6,7,8,9; + test_search_n_impl(cont1, 1); + test_search_n_impl(cont1, 2); + test_search_n_impl(cont1, 5); + test_search_n_impl(cont1, 9); + } + + void test_search_n() + { + test_search_n_impl< std::list, std::list >(); + test_search_n_impl< std::vector, std::vector >(); + test_search_n_impl< std::set, std::set >(); + test_search_n_impl< std::list, std::vector >(); + test_search_n_impl< std::vector, std::list >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.search_n" ); + + test->add( BOOST_TEST_CASE( &test_search_n ) ); + + return test; +} diff --git a/test/algorithm_test/swap_ranges.cpp b/test/algorithm_test/swap_ranges.cpp new file mode 100644 index 0000000..b50431c --- /dev/null +++ b/test/algorithm_test/swap_ranges.cpp @@ -0,0 +1,95 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template + void test_swap_ranges_impl(const Container1& source1, const Container2& source2) + { + Container1 reference1(source1); + Container2 reference2(source2); + std::swap_ranges(reference1.begin(), reference1.end(), reference2.begin()); + + Container1 test1(source1); + Container2 test2(source2); + boost::swap_ranges(test1, test2); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference1.begin(), reference1.end(), + test1.begin(), test1.end() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference2.begin(), reference2.end(), + test2.begin(), test2.end() + ); + } + + template + void test_swap_ranges_impl() + { + using namespace boost::assign; + + Container1 c1; + Container2 c2; + + test_swap_ranges_impl(c1, c2); + + c1.clear(); + c1 += 1; + c2.clear(); + c2 += 2; + test_swap_ranges_impl(c1, c2); + + c1.clear(); + c1 += 1,2,3,4,5,6,7,8,9,10; + c2.clear(); + c2 += 10,9,8,7,6,5,4,3,2,1; + test_swap_ranges_impl(c1, c2); + } + + inline void test_swap_ranges() + { + test_swap_ranges_impl< std::vector, std::vector >(); + test_swap_ranges_impl< std::vector, std::list >(); + test_swap_ranges_impl< std::vector, std::deque >(); + test_swap_ranges_impl< std::list, std::vector >(); + test_swap_ranges_impl< std::list, std::list >(); + test_swap_ranges_impl< std::list, std::deque >(); + test_swap_ranges_impl< std::deque, std::vector >(); + test_swap_ranges_impl< std::deque, std::list >(); + test_swap_ranges_impl< std::deque, std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.swap_ranges" ); + + test->add( BOOST_TEST_CASE( &test_swap_ranges ) ); + + return test; +} diff --git a/test/algorithm_test/unique_copy.cpp b/test/algorithm_test/unique_copy.cpp new file mode 100644 index 0000000..f3a3296 --- /dev/null +++ b/test/algorithm_test/unique_copy.cpp @@ -0,0 +1,136 @@ +// Boost.Range library +// +// 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/ +// +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + template + void test_append(OutputIterator target, Value value) + { + *target++ = value; + } + + template + void test_unique_copy_impl(Container& c) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_value::type value_type; + std::vector reference; + std::vector test; + + test_append( + std::unique_copy(c.begin(), c.end(), std::back_inserter(reference)), + value_type() + ); + + test_append( + boost::unique_copy(c, std::back_inserter(test)), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS(reference.begin(), reference.end(), + test.begin(), test.end()); + } + + template + void test_unique_copy_impl(Container& c, Pred pred) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_value::type value_type; + std::vector reference; + std::vector test; + + test_append( + std::unique_copy(c.begin(), c.end(), std::back_inserter(reference), pred), + value_type() + ); + + test_append( + boost::unique_copy(c, std::back_inserter(test), pred), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS(reference.begin(), reference.end(), + test.begin(), test.end()); + } + + template + void test_unique_copy_driver(Pred pred) + { + using namespace boost::assign; + + typedef BOOST_DEDUCED_TYPENAME Container::value_type value_t; + + Container cont; + + test_unique_copy_impl(cont); + test_unique_copy_impl(cont, pred); + + cont.clear(); + cont += 1; + + std::vector temp(cont.begin(), cont.end()); + std::sort(temp.begin(), temp.end()); + cont.assign(temp.begin(), temp.end()); + test_unique_copy_impl(cont); + + std::sort(temp.begin(), temp.end(), pred); + cont.assign(temp.begin(), temp.end()); + test_unique_copy_impl(cont, pred); + + cont.clear(); + cont += 1,2,2,2,2,3,4,5,6,7,8,9; + + temp.assign(cont.begin(), cont.end()); + std::sort(temp.begin(), temp.end()); + cont.assign(temp.begin(), temp.end()); + test_unique_copy_impl(cont); + + std::sort(temp.begin(), temp.end(), pred); + cont.assign(temp.begin(), temp.end()); + test_unique_copy_impl(cont, pred); + } + + template + void test_unique_copy_impl() + { + test_unique_copy_driver(std::less()); + test_unique_copy_driver(std::greater()); + } + + void test_unique_copy() + { + test_unique_copy_impl< std::vector >(); + test_unique_copy_impl< std::list >(); + test_unique_copy_impl< std::deque >(); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.algorithm.unique_copy" ); + + test->add( BOOST_TEST_CASE( &test_unique_copy ) ); + + return test; +} diff --git a/test/replace_copy.cpp b/test/replace_copy.cpp new file mode 100644 index 0000000..e69de29 From ec58d739eb3e69345fa56193de725b5faa9ae1cb Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 16:29:11 +0000 Subject: [PATCH 24/26] Boost.Range documentation iteration. [SVN r61650] --- doc/html/range/library_headers/adaptors.html | 232 ++++++ doc/html/range/library_headers/algorithm.html | 683 ++++++++++++++++++ .../library_headers/algorithm_extensions.html | 172 +++++ doc/html/range/library_headers/general.html | 551 ++++++++++++++ .../adaptors/reference/adjacent_filtered.html | 151 ++++ .../reference/adaptors/reference/copied.html | 151 ++++ .../adaptors/reference/filtered.html | 155 ++++ .../reference/adaptors/reference/indexed.html | 185 +++++ .../adaptors/reference/indirected.html | 145 ++++ .../adaptors/reference/map_keys.html | 145 ++++ .../adaptors/reference/map_values.html | 145 ++++ .../adaptors/reference/replaced.html | 160 ++++ .../adaptors/reference/replaced_if.html | 165 +++++ .../adaptors/reference/reversed.html | 139 ++++ .../reference/adaptors/reference/sliced.html | 149 ++++ .../reference/adaptors/reference/strided.html | 146 ++++ .../adaptors/reference/tokenized.html | 142 ++++ .../adaptors/reference/transformed.html | 156 ++++ .../reference/adaptors/reference/uniqued.html | 141 ++++ 19 files changed, 3913 insertions(+) create mode 100644 doc/html/range/library_headers/adaptors.html create mode 100644 doc/html/range/library_headers/algorithm.html create mode 100644 doc/html/range/library_headers/algorithm_extensions.html create mode 100644 doc/html/range/library_headers/general.html create mode 100644 doc/html/range/reference/adaptors/reference/adjacent_filtered.html create mode 100644 doc/html/range/reference/adaptors/reference/copied.html create mode 100644 doc/html/range/reference/adaptors/reference/filtered.html create mode 100644 doc/html/range/reference/adaptors/reference/indexed.html create mode 100644 doc/html/range/reference/adaptors/reference/indirected.html create mode 100644 doc/html/range/reference/adaptors/reference/map_keys.html create mode 100644 doc/html/range/reference/adaptors/reference/map_values.html create mode 100644 doc/html/range/reference/adaptors/reference/replaced.html create mode 100644 doc/html/range/reference/adaptors/reference/replaced_if.html create mode 100644 doc/html/range/reference/adaptors/reference/reversed.html create mode 100644 doc/html/range/reference/adaptors/reference/sliced.html create mode 100644 doc/html/range/reference/adaptors/reference/strided.html create mode 100644 doc/html/range/reference/adaptors/reference/tokenized.html create mode 100644 doc/html/range/reference/adaptors/reference/transformed.html create mode 100644 doc/html/range/reference/adaptors/reference/uniqued.html diff --git a/doc/html/range/library_headers/adaptors.html b/doc/html/range/library_headers/adaptors.html new file mode 100644 index 0000000..f8810a4 --- /dev/null +++ b/doc/html/range/library_headers/adaptors.html @@ -0,0 +1,232 @@ + + + +Adaptors + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +


    +
    +PrevUpHomeNext +
    +
    + +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Header +

    +
    +

    + Includes +

    +
    +

    + <boost/range/adaptor/adjacent_filtered.hpp> +

    +
    +

    + adjacent_filtered +

    +
    +

    + <boost/range/adaptor/copied.hpp> +

    +
    +

    + copied +

    +
    +

    + <boost/range/adaptor/filtered.hpp> +

    +
    +

    + filtered +

    +
    +

    + <boost/range/adaptor/indexed.hpp> +

    +
    +

    + indexed +

    +
    +

    + <boost/range/adaptor/indirected.hpp. +

    +
    +

    + indirected +

    +
    +

    + <boost/range/adaptor/map.hpp> +

    +
    +

    + map_keys + map_values +

    +
    +

    + <boost/range/adaptor/replaced.hpp> +

    +
    +

    + replaced +

    +
    +

    + <boost/range/adaptor/replaced_if.hpp> +

    +
    +

    + replaced_if +

    +
    +

    + <boost/range/adaptor/reversed.hpp> +

    +
    +

    + reversed +

    +
    +

    + <boost/range/adaptor/sliced.hpp> +

    +
    +

    + sliced +

    +
    +

    + <boost/range/adaptor/strided.hpp> +

    +
    +

    + strided +

    +
    +

    + <boost/range/adaptor/tokenized.hpp> +

    +
    +

    + tokenized +

    +
    +

    + <boost/range/adaptor/transformed.hpp> +

    +
    +

    + transformed +

    +
    +

    + <boost/range/adaptor/uniqued.hpp> +

    +
    +

    + uniqued +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/library_headers/algorithm.html b/doc/html/range/library_headers/algorithm.html new file mode 100644 index 0000000..6beb47e --- /dev/null +++ b/doc/html/range/library_headers/algorithm.html @@ -0,0 +1,683 @@ + + + +Algorithm + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Header +

    +
    +

    + Includes +

    +
    +

    + <boost/range/algorithm/adjacent_find.hpp> +

    +
    +

    + adjacent_find +

    +
    +

    + <boost/range/algorithm/binary_search.hpp> +

    +
    +

    + binary_search +

    +
    +

    + <boost/range/algorithm/copy.hpp> +

    +
    +

    + copy +

    +
    +

    + <boost/range/algorithm/copy_backward.hpp> +

    +
    +

    + copy_backward +

    +
    +

    + <boost/range/algorithm/count.hpp> +

    +
    +

    + count +

    +
    +

    + <boost/range/algorithm/count_if.hpp> +

    +
    +

    + count_if +

    +
    +

    + <boost/range/algorithm/equal.hpp> +

    +
    +

    + equal +

    +
    +

    + <boost/range/algorithm/equal_range.hpp> +

    +
    +

    + equal_range +

    +
    +

    + <boost/range/algorithm/fill.hpp> +

    +
    +

    + fill +

    +
    +

    + <boost/range/algorithm/fill_n.hpp> +

    +
    +

    + fill_n +

    +
    +

    + <boost/range/algorithm/find.hpp> +

    +
    +

    + find +

    +
    +

    + <boost/range/algorithm/find_end.hpp> +

    +
    +

    + find_end +

    +
    +

    + <boost/range/algorithm/find_first_of.hpp> +

    +
    +

    + find_first_of +

    +
    +

    + <boost/range/algorithm/find_if.hpp> +

    +
    +

    + find_if +

    +
    +

    + <boost/range/algorithm/for_each.hpp> +

    +
    +

    + for_each +

    +
    +

    + <boost/range/algorithm/generate.hpp> +

    +
    +

    + generate +

    +
    +

    + <boost/range/algorithm/heap_algorithm.hpp> +

    +
    +

    + push_heap + pop_heap + make_heap + sort_heap +

    +
    +

    + <boost/range/algorithm/inplace_merge.hpp> +

    +
    +

    + inplace_merge +

    +
    +

    + <boost/range/algorithm/lexicographical_compare.hpp> +

    +
    +

    + lexicographical_compare +

    +
    +

    + <boost/range/algorithm/lower_bound.hpp> +

    +
    +

    + lower_bound +

    +
    +

    + <boost/range/algorithm/max_element.hpp> +

    +
    +

    + max_element +

    +
    +

    + <boost/range/algorithm/merge.hpp> +

    +
    +

    + merge +

    +
    +

    + <boost/range/algorithm/min_element.hpp> +

    +
    +

    + min_element +

    +
    +

    + <boost/range/algorithm/mismatch.hpp> +

    +
    +

    + mismatch +

    +
    +

    + <boost/range/algorithm/nth_element.hpp> +

    +
    +

    + nth_element +

    +
    +

    + <boost/range/algorithm/partial_sort.hpp> +

    +
    +

    + partial_sort +

    +
    +

    + <boost/range/algorithm/partition.hpp> +

    +
    +

    + partition +

    +
    +

    + <boost/range/algorithm/permutation.hpp> +

    +
    +

    + next_permutation + prev_permutation +

    +
    +

    + <boost/range/algorithm/random_shuffle.hpp> +

    +
    +

    + random_shuffle +

    +
    +

    + <boost/range/algorithm/remove.hpp> +

    +
    +

    + remove +

    +
    +

    + <boost/range/algorithm/remove_copy.hpp> +

    +
    +

    + remove_copy +

    +
    +

    + <boost/range/algorithm/remove_copy_if.hpp> +

    +
    +

    + remove_copy_if +

    +
    +

    + <boost/range/algorithm/remove_if.hpp> +

    +
    +

    + remove_if +

    +
    +

    + <boost/range/algorithm/replace.hpp> +

    +
    +

    + replace +

    +
    +

    + <boost/range/algorithm/replace_copy.hpp> +

    +
    +

    + replace_copy +

    +
    +

    + <boost/range/algorithm/replace_copy_if.hpp> +

    +
    +

    + replace_copy_if +

    +
    +

    + <boost/range/algorithm/replace_if.hpp> +

    +
    +

    + replace_if +

    +
    +

    + <boost/range/algorithm/reverse.hpp> +

    +
    +

    + reverse +

    +
    +

    + <boost/range/algorithm/reverse_copy.hpp> +

    +
    +

    + reverse_copy +

    +
    +

    + <boost/range/algorithm/rotate.hpp> +

    +
    +

    + rotate +

    +
    +

    + <boost/range/algorithm/rotate_copy.hpp> +

    +
    +

    + rotate_copy +

    +
    +

    + <boost/range/algorithm/search.hpp> +

    +
    +

    + search +

    +
    +

    + <boost/range/algorithm/search_n.hpp> +

    +
    +

    + search_n +

    +
    +

    + <boost/range/algorithm/set_algorithm.hpp> +

    +
    +

    + includes + set_union + set_intersection + set_difference + set_symmetric_difference +

    +
    +

    + <boost/range/algorithm/sort.hpp> +

    +
    +

    + sort +

    +
    +

    + <boost/range/algorithm/stable_partition.hpp> +

    +
    +

    + stable_partition +

    +
    +

    + <boost/range/algorithm/swap_ranges.hpp> +

    +
    +

    + swap_ranges +

    +
    +

    + <boost/range/algorithm/transform.hpp> +

    +
    +

    + transform +

    +
    +

    + <boost/range/algorithm/unique.hpp> +

    +
    +

    + unique +

    +
    +

    + <boost/range/algorithm/unique_copy.hpp> +

    +
    +

    + unique_copy +

    +
    +

    + <boost/range/algorithm/upper_bound.hpp> +

    +
    +

    + upper_bound +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/library_headers/algorithm_extensions.html b/doc/html/range/library_headers/algorithm_extensions.html new file mode 100644 index 0000000..f3dd061 --- /dev/null +++ b/doc/html/range/library_headers/algorithm_extensions.html @@ -0,0 +1,172 @@ + + + +Algorithm Extensions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Header +

    +
    +

    + Includes +

    +
    +

    + <boost/range/algorithm_ext/copy_n.hpp> +

    +
    +

    + copy_n +

    +
    +

    + <boost/range/algorithm_ext/erase.hpp> +

    +
    +

    + erase +

    +
    +

    + <boost/range/algorithm_ext/for_each.hpp> +

    +
    +

    + for_each +

    +
    +

    + <boost/range/algorithm_ext/insert.hpp> +

    +
    +

    + insert +

    +
    +

    + <boost/range/algorithm_ext/iota.hpp> +

    +
    +

    + iota +

    +
    +

    + <boost/range/algorithm_ext/is_sorted.hpp> +

    +
    +

    + is_sorted +

    +
    +

    + <boost/range/algorithm_ext/overwrite.hpp> +

    +
    +

    + overwrite +

    +
    +

    + <boost/range/algorithm_ext/push_back.hpp> +

    +
    +

    + push_back +

    +
    +

    + <boost/range/algorithm_ext/push_front.hpp> +

    +
    +

    + push_front +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/library_headers/general.html b/doc/html/range/library_headers/general.html new file mode 100644 index 0000000..382215d --- /dev/null +++ b/doc/html/range/library_headers/general.html @@ -0,0 +1,551 @@ + + + +General + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Header +

    +
    +

    + Includes +

    +
    +

    + Related Concept +

    +
    +

    + <boost/range.hpp> +

    +
    +

    + everything from Boost.Range version 1 (Boost versions 1.42 and + below). Includes the core range functions and metafunctinos, but + excludes Range Adaptors and Range Algorithms. +

    +
    +

    + - +

    +
    +

    + <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/difference_type.hpp> +

    +
    +

    + range_difference +

    +
    +

    + Forward Range +

    +
    +

    + <boost/range/pointer.hpp> +

    +
    +

    + range_pointer +

    +
    +

    + - +

    +
    +

    + <boost/range/category.hpp> +

    +
    +

    + range_category +

    +
    +

    + - +

    +
    +

    + <boost/range/reverse_iterator.hpp> +

    +
    +

    + range_reverse_iterator +

    +
    +

    + Bidirectional + Range +

    +
    +

    + <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/distance.hpp> +

    +
    +

    + distance +

    +
    +

    + Forward Range +

    +
    +

    + <boost/range/size.hpp> +

    +
    +

    + size +

    +
    +

    + Random Access + Range +

    +
    +

    + <boost/range/rbegin.hpp> +

    +
    +

    + rbegin and const_rbegin +

    +
    +

    + Bidirectional + Range +

    +
    +

    + <boost/range/rend.hpp> +

    +
    +

    + rend and const_rend +

    +
    +

    + Bidirectional + Range +

    +
    +

    + <boost/range/as_array.hpp> +

    +
    +

    + as_array +

    +
    +

    + - +

    +
    +

    + <boost/range/as_literal.hpp> +

    +
    +

    + as_literal +

    +
    +

    + - +

    +
    +

    + <boost/range/iterator_range.hpp> +

    +
    +

    + iterator_range +

    +
    +

    + - +

    +
    +

    + <boost/range/sub_range.hpp> +

    +
    +

    + sub_range +

    +
    +

    + - +

    +
    +

    + <boost/range/concepts.hpp> +

    +
    +

    + Range concepts +

    +
    +

    + - +

    +
    +

    + <boost/range/adaptors.hpp> +

    +
    +

    + every range adaptor +

    +
    +

    + - +

    +
    +

    + <boost/range/algorithm.hpp> +

    +
    +

    + every range equivalent of an STL algorithm +

    +
    +

    + - +

    +
    +

    + <boost/range/algorithm_ext.hpp> +

    +
    +

    + every range algorithm that is an extension of the STL algorithms +

    +
    +

    + - +

    +
    +

    + <boost/range/counting_range.hpp> +

    +
    +

    + counting_range +

    +
    +

    + - +

    +
    +

    + <boost/range/istream_range.hpp> +

    +
    +

    + istream_range +

    +
    +

    + - +

    +
    +

    + <boost/range/irange.hpp> +

    +
    +

    + irange +

    +
    +

    + - +

    +
    +

    + <boost/range/join.hpp> +

    +
    +

    + join +

    +
    +

    + - +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html new file mode 100644 index 0000000..e229ed4 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html @@ -0,0 +1,151 @@ + + + +adjacent_filtered + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::adjacent_filtered(bi_pred) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::adjacent_filter(rng, + bi_pred) +

    +
    +
      +
    • +Precondition: The value_type + of the range is convertible to both argument types of bi_pred. +
    • +
    • +Postcondition: For all adjacent elements + [x,y] in the returned range, bi_pred(x,y) + is true. +
    • +
    • +Throws: Whatever the copy constructor + of bi_pred might throw. +
    • +
    • +Range Category:SinglePassRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/adjacent_filtered.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <functional>
    +#include <iostream>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::vector<int> input;
    +    input += 1,1,2,2,2,3,4,5,6;
    +
    +    boost::copy(
    +        input | adjacent_filtered(std::not_equal_to<int>()),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    1,2,3,4,5,6
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/copied.html b/doc/html/range/reference/adaptors/reference/copied.html new file mode 100644 index 0000000..52ba608 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/copied.html @@ -0,0 +1,151 @@ + + + +copied + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::copied(n, + m) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::copy(rng, + n, + m) +

    +
    +
      +
    • +Precondition:0 + <= n + && n + <= m + && m + < distance(rng) +
    • +
    • +Returns: A new iterator_range + that holds the sliced range [n,m) + of the original range. +
    • +
    • +Range Category:RandomAccessRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/copied.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9,10;
    +
    +    boost::copy(
    +        input | copied(1, 5),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    2,3,4,5
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/filtered.html b/doc/html/range/reference/adaptors/reference/filtered.html new file mode 100644 index 0000000..b130702 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/filtered.html @@ -0,0 +1,155 @@ + + + +filtered + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::filtered(pred) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::filter(rng, + pred) +

    +
    +
      +
    • +Precondition: The value_type + of the range is convertible to the argument type of pred. +
    • +
    • +Postcondition: For all adjacent elements + [x] in the returned range, pred(x) + is true. +
    • +
    • +Throws: Whatever the copy constructor + of pred might throw. +
    • +
    • +Range Category:ForwardRange +
    • +
    • +Returned Range Category:ForwardRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/filtered.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +struct is_even
    +{
    +    bool operator()( int x ) const { return x % 2 == 0; }
    +};
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9;
    +
    +    boost::copy(
    +        input | filtered(is_even()),
    +        std::ostream_iterator<int>(std::cout, ","));
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    2,4,6,8
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/indexed.html b/doc/html/range/reference/adaptors/reference/indexed.html new file mode 100644 index 0000000..90ae2a0 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/indexed.html @@ -0,0 +1,185 @@ + + + +indexed + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::indexed +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::index(rng) +

    +
    +
      +
    • +Returns: A range adapted to return + both the element and the associated index. The returned range consists + of iterators that have in addition to the usual iterator member functions + an index() + member function that returns the appropriate index for the element + in the sequence corresponding with the iterator. +
    • +
    • +Range Category:SinglePassRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/indexed.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +template<class Iterator>
    +void display_element_and_index(Iterator first, Iterator last)
    +{
    +    for (Iterator it = first; it != last; ++it)
    +    {
    +        std::cout << "Element = " << *it << " Index = " << it.index() << std::endl;
    +    }
    +}
    +
    +template<class SinglePassRange>
    +void display_element_and_index(const SinglePassRange& rng)
    +{
    +    display_element_and_index(boost::begin(rng), boost::end(rng));
    +}
    +
    +template<class Iterator1, class Iterator2>
    +void check_element_and_index(
    +        Iterator1 test_first,
    +        Iterator1 test_last,
    +        Iterator2 reference_first,
    +        Iterator2 reference_last)
    +{
    +    BOOST_CHECK_EQUAL( std::distance(test_first, test_last),
    +                       std::distance(reference_first, reference_last) );
    +
    +    int reference_index = 0;
    +
    +    Iterator1 test_it = test_first;
    +    Iterator2 reference_it = reference_first;
    +    for (; test_it != test_last; ++test_it, ++reference_it, ++reference_index)
    +    {
    +        BOOST_CHECK_EQUAL( *test_it, *reference_it );
    +        BOOST_CHECK_EQUAL( test_it.index(), reference_index );
    +    }
    +}
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::vector<int> input;
    +    input += 10,20,30,40,50,60,70,80,90;
    +
    +    display_element_and_index( input | indexed(0) );
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    Element = 10 Index = 0
    +Element = 20 Index = 1
    +Element = 30 Index = 2
    +Element = 40 Index = 3
    +Element = 50 Index = 4
    +Element = 60 Index = 5
    +Element = 70 Index = 6
    +Element = 80 Index = 7
    +Element = 90 Index = 8
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/indirected.html b/doc/html/range/reference/adaptors/reference/indirected.html new file mode 100644 index 0000000..5313ed1 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/indirected.html @@ -0,0 +1,145 @@ + + + +indirected + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::indirected +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::indirect(rng) +

    +
    +
      +
    • +Precondition: The value_type + of the range defines unary operator*() +
    • +
    • +Postcondition: For all elements x in the returned range, x is the result of *y + where y is the corresponding + element in the original range. +
    • +
    • +Range Category:SinglePassRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/indirected.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/shared_ptr.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::adaptors;
    +
    +    std::vector<boost::shared_ptr<int> > input;
    +
    +    for (int i = 0; i < 10; ++i)
    +        input.push_back(boost::shared_ptr<int>(new int(i)));
    +
    +    boost::copy(
    +        input | indirected,
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    0,1,2,3,4,5,6,7,8,9
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/map_keys.html b/doc/html/range/reference/adaptors/reference/map_keys.html new file mode 100644 index 0000000..2b46c98 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/map_keys.html @@ -0,0 +1,145 @@ + + + +map_keys + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::map_keys +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::keys(rng) +

    +
    +
      +
    • +Precondition: The value_type + of the range is an instantiation of std::pair. +
    • +
    • +Postcondition: For all elements x in the returned range, x is the result of y.first where y + is the corresponding element in the original range. +
    • +
    • +Range Category:SinglePassRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/map.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <map>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::map<int,int> input;
    +    for (int i = 0; i < 10; ++i)
    +        input.insert(std::make_pair(i, i * 10));
    +
    +    boost::copy(
    +        input | map_keys,
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    0,1,2,3,4,5,6,7,8,9
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/map_values.html b/doc/html/range/reference/adaptors/reference/map_values.html new file mode 100644 index 0000000..8b3761f --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/map_values.html @@ -0,0 +1,145 @@ + + + +map_values + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::map_values +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::values(rng) +

    +
    +
      +
    • +Precondition: The value_type + of the range is an instantiation of std::pair. +
    • +
    • +Postcondition: For all elements x in the returned range, x is the result of y.second where y + is the corresponding element in the original range. +
    • +
    • +Range Category:SinglePassRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/map.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <map>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::map<int,int> input;
    +    for (int i = 0; i < 10; ++i)
    +        input.insert(std::make_pair(i, i * 10));
    +
    +    boost::copy(
    +        input | map_values,
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    0,10,20,30,40,50,60,70,80,90
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/replaced.html b/doc/html/range/reference/adaptors/reference/replaced.html new file mode 100644 index 0000000..61de327 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/replaced.html @@ -0,0 +1,160 @@ + + + +replaced + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::replaced(new_value, + old_value) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::replace(rng, + new_value, + old_value) +

    +
    +
      +
    • +Precondition:
        +
      • +new_value is convertible + to the value_type + of the range. +
      • +
      • +old_value is convertible + to the value_type + of the range. +
      • +
      +
    • +
    • +Postcondition: For all elements x in the returned range, the value + x is equal to the value + of (y + == old_value) ? new_value : + y where y + is the corresponding element in the original range. +
    • +
    • +Range Category:ForwardRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/replaced.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::adaptors;
    +    using namespace boost::assign;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,2,5,2,7,2,9;
    +
    +    boost::copy(
    +        input | replaced(2, 10),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    1,10,3,10,5,10,7,10,9
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/replaced_if.html b/doc/html/range/reference/adaptors/reference/replaced_if.html new file mode 100644 index 0000000..b64a538 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/replaced_if.html @@ -0,0 +1,165 @@ + + + +replaced_if + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::replaced_if(pred, + new_value) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::replace_if(rng, + pred, + new_value) +

    +
    +
      +
    • +Precondition:
        +
      • + The range value_type + is convertible to the argument type of pred. +
      • +
      • +new_value is convertible + to the value_type + of the range. +
      • +
      +
    • +
    • +Postconditions: For all elements + x in the returned range, + the value x is equal + to the value of pred(y) ? new_value : + y where y + is the corresponding element in the original range. +
    • +
    • +Range Category:ForwardRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/replaced_if.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +struct is_even
    +{
    +    bool operator()(int x) const { return x % 2 == 0; }
    +};
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::adaptors;
    +    using namespace boost::assign;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9;
    +
    +    boost::copy(
    +        input | replaced_if(is_even(), 10),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    1,10,3,10,5,10,7,10,9
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/reversed.html b/doc/html/range/reference/adaptors/reference/reversed.html new file mode 100644 index 0000000..3a9c619 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/reversed.html @@ -0,0 +1,139 @@ + + + +reversed + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::reversed +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::reverse(rng) +

    +
    +
      +
    • +Returns: A range whose iterators behave + as if they were the original iterators wrapped in reverse_iterator. +
    • +
    • +Range Category:BidirectionalRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/reversed.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +void reversed_example_test()
    +{
    +    using namespace boost::adaptors;
    +    using namespace boost::assign;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9;
    +
    +    boost::copy(
    +        input | reversed,
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    9,8,7,6,5,4,3,2,1
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/sliced.html b/doc/html/range/reference/adaptors/reference/sliced.html new file mode 100644 index 0000000..e4a1298 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/sliced.html @@ -0,0 +1,149 @@ + + + +sliced + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::sliced(n, + m) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::slice(rng, + n, + m) +

    +
    +
      +
    • +Precondition:0 + <= n + && n + <= m + && m + < distance(rng) +
    • +
    • +Returns:make_range(rng, n, m) +
    • +
    • +Range Category:RandomAccessRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/sliced.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::adaptors;
    +    using namespace boost::assign;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9;
    +
    +    boost::copy(
    +        input | sliced(2, 5),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    3,4,5
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/strided.html b/doc/html/range/reference/adaptors/reference/strided.html new file mode 100644 index 0000000..793123c --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/strided.html @@ -0,0 +1,146 @@ + + + +strided + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::strided(n) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::stride(rng, + n) +

    +
    +
      +
    • +Precondition:0 + <= n + && n + < distance(rng) +
    • +
    • +Returns: A new range based on rng where traversal is performed + in steps of n. +
    • +
    • +Range Category:RandomAccessRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/strided.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::adaptors;
    +    using namespace boost::assign;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9,10;
    +
    +    boost::copy(
    +        input | strided(2),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    1,3,5,7,9
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/tokenized.html b/doc/html/range/reference/adaptors/reference/tokenized.html new file mode 100644 index 0000000..a83f316 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/tokenized.html @@ -0,0 +1,142 @@ + + + +tokenized + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + +

    +
    rng | boost::adaptors::tokenized(regex)
    +rng | boost::adaptors::tokenized(regex, i)
    +rng | boost::adaptors::tokenized(regex, rndRng)
    +rng | boost::adaptors::tokenized(regex, i, flags)
    +rng | boost::adaptors::tokenized(regex, rndRng, flags)
    +
    +

    +

    +
    +

    + Function +

    +
    +

    + +

    +
    boost::adaptors::tokenize(rng, regex)
    +boost::adaptors::tokenize(rng, regex, i)
    +boost::adaptors::tokenize(rng, regex, rndRng)
    +boost::adaptors::tokenize(rng, regex, i, flags)
    +boost::adaptors::tokenize(rng, regex, rndRng, flags)
    +
    +

    +

    +
    +
      +
    • +Precondition:
        +
      • + Let T denote typename range_value<decltype(rng)>::type, + then regex has + the type basic_regex<T> or is implicitly convertible + to one of these types. +
      • +
      • +i has the type + int. +
      • +
      • + the value_type + of rndRng is int. +
      • +
      • +flags has the type + regex_constants::syntax_option_type. +
      • +
      +
    • +
    • +Returns: A range whose iterators behave + as if they were the original iterators wrapped in regex_token_iterator. + The first iterator in the range would be constructed by forwarding + all the arguments of tokenized() to the regex_token_iterator + constructor. +
    • +
    • +Throws: Whatever constructing and + copying equivalent regex_token_iterators + might throw. +
    • +
    • +Range Category:RandomAccessRange +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/transformed.html b/doc/html/range/reference/adaptors/reference/transformed.html new file mode 100644 index 0000000..7cad586 --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/transformed.html @@ -0,0 +1,156 @@ + + + +transformed + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::transformed(fun) +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::transform(rng, + fun) +

    +
    +
      +
    • +Precondition: The value_type + of the range is convertible to the argument type of fun. +
    • +
    • +Postcondition: For all elements x in the returned range, x is the result of fun(y) + where y is the corresponding + element in the original range. +
    • +
    • +Throws: Whatever the copy-constructor + of fun might throw. +
    • +
    • +Range Category:SinglePassRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/transformed.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +struct double_int
    +{
    +    typedef int result_type;
    +    int operator()(int x) const { return x * 2; }
    +};
    +
    +int main(int argc, const char* argv[])
    +{
    +    using namespace boost::adaptors;
    +    using namespace boost::assign;
    +
    +    std::vector<int> input;
    +    input += 1,2,3,4,5,6,7,8,9,10;
    +
    +    boost::copy(
    +        input | transformed(double_int()),
    +        std::ostream_iterator<int>(std::cout, ","));
    +
    +    return 0;
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    2,4,6,8,10,12,14,16,18,20
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/adaptors/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html new file mode 100644 index 0000000..6cd67eb --- /dev/null +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -0,0 +1,141 @@ + + + +uniqued + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    ++++ + + + + + + + + + + + + + + +
    +

    + Syntax +

    +
    +

    + Code +

    +
    +

    + Pipe +

    +
    +

    + rng | + boost::adaptors::uniqued +

    +
    +

    + Function +

    +
    +

    + boost::adaptors::unique(rng) +

    +
    +
      +
    • +Precondition: The value_type + of the range is comparable with operator==(). +
    • +
    • +Postcondition: For all adjacent elements + [x,y] in the returned range, x==y is false. +
    • +
    • +Range Category:ForwardRange +
    • +
    +
    + +

    + +

    +
    #include <boost/range/adaptor/uniqued.hpp>
    +#include <boost/range/algorithm/copy.hpp>
    +#include <boost/assign.hpp>
    +#include <algorithm>
    +#include <iostream>
    +#include <vector>
    +
    +void uniqued_example_test()
    +{
    +    using namespace boost::assign;
    +    using namespace boost::adaptors;
    +
    +    std::vector<int> input;
    +    input += 1,1,2,2,2,3,4,5,6;
    +
    +    boost::copy(
    +        input | uniqued,
    +        std::ostream_iterator<int>(std::cout, ","));
    +}
    +
    +

    +

    +
    +

    + This would produce the output: +

    +
    1,2,3,4,5,6
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + From 5364ea2cadf31c1dbce2680e5b506eb2c2a9ef6b Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 16:52:24 +0000 Subject: [PATCH 25/26] Boost.Range commit fix for the mismatch documentation - thanks to vincente botet for spotting this. [SVN r61651] --- .../algorithms/non_mutating/mismatch.html | 22 +++++++------------ doc/reference/algorithm/mismatch.qbk | 4 +--- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/doc/html/range/reference/algorithms/non_mutating/mismatch.html b/doc/html/range/reference/algorithms/non_mutating/mismatch.html index 114fd0c..ed7efa3 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -28,7 +28,7 @@ mismatch
    - + Prototype

    @@ -106,32 +106,26 @@

    - + Description

    mismatch finds the first - position where the two ranges rng1 - and rng2 differ. + position where the correseponding elements from the two ranges rng1 and rng2 + are not equal.

    Equality is determined by operator== for non-predicate versions of mismatch, and by satisfying pred in the predicate versions.

    -

    - The versions of mismatch - that return a range_return, - defines found in the - same manner as the returned iterator described above. -

    - + Definition

    Defined in the header file boost/range/algorithm/mismatch.hpp

    - + Requirements

    @@ -192,14 +186,14 @@

    - + Precondition:

    distance(rng2) >= distance(rng1)

    - + Complexity

    diff --git a/doc/reference/algorithm/mismatch.qbk b/doc/reference/algorithm/mismatch.qbk index f971b2d..562fdb5 100644 --- a/doc/reference/algorithm/mismatch.qbk +++ b/doc/reference/algorithm/mismatch.qbk @@ -75,12 +75,10 @@ mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, [heading Description] -`mismatch` finds the first position where the two ranges `rng1` and `rng2` differ. +`mismatch` finds the first position where the correseponding elements from the two ranges `rng1` and `rng2` are not equal. Equality is determined by `operator==` for non-predicate versions of `mismatch`, and by satisfying `pred` in the predicate versions. -The versions of `mismatch` that return a `range_return`, defines `found` in the same manner as the returned iterator described above. - [heading Definition] Defined in the header file `boost/range/algorithm/mismatch.hpp` From e3e1fc43d3977db68ab90831ea8e61a20a1bad2c Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 18:03:26 +0000 Subject: [PATCH 26/26] Boost.Range documentation iteration. Primarily this is the inclusion of Range Return Categories for every Range Adaptor page. [SVN r61653] --- doc/boost_range.qbk | 44 +- doc/html/index.html | 13 +- doc/html/quickbook_HTML.manifest | 10 +- .../range/concepts/bidirectional_range.html | 23 +- doc/html/range/concepts/concept_checking.html | 2 +- doc/html/range/concepts/forward_range.html | 17 +- .../range/concepts/random_access_range.html | 12 +- .../range/concepts/single_pass_range.html | 23 +- doc/html/range/history_ack.html | 4 +- doc/html/range/library_headers/general.html | 30 +- doc/html/range/mfc_atl.html | 4 +- doc/html/range/portability.html | 10 +- doc/html/range/reference.html | 9 +- doc/html/range/reference/adaptors.html | 7 +- .../adaptors_reference/adjacent_filtered.html | 151 ------- .../adaptors/adaptors_reference/copied.html | 152 ------- .../adaptors/adaptors_reference/filtered.html | 156 ------- .../adaptors/adaptors_reference/indexed.html | 186 -------- .../adaptors_reference/indirected.html | 146 ------- .../adaptors/adaptors_reference/map_keys.html | 146 ------- .../adaptors_reference/map_values.html | 146 ------- .../adaptors/adaptors_reference/replaced.html | 161 ------- .../adaptors_reference/replaced_if.html | 165 ------- .../adaptors/adaptors_reference/reversed.html | 140 ------ .../adaptors/adaptors_reference/sliced.html | 150 ------- .../adaptors/adaptors_reference/strided.html | 147 ------- .../adaptors_reference/tokenized.html | 143 ------ .../adaptors_reference/transformed.html | 156 ------- .../adaptors/adaptors_reference/uniqued.html | 142 ------ .../adaptors/general_requirements.html | 6 +- .../reference/adaptors/introduction.html | 12 +- .../adaptors/reference/adjacent_filtered.html | 8 +- .../reference/adaptors/reference/copied.html | 7 +- .../adaptors/reference/filtered.html | 8 +- .../reference/adaptors/reference/indexed.html | 7 +- .../adaptors/reference/indirected.html | 7 +- .../adaptors/reference/map_keys.html | 7 +- .../adaptors/reference/map_values.html | 7 +- .../adaptors/reference/replaced.html | 7 +- .../adaptors/reference/replaced_if.html | 7 +- .../adaptors/reference/reversed.html | 7 +- .../reference/adaptors/reference/sliced.html | 7 +- .../reference/adaptors/reference/strided.html | 7 +- .../adaptors/reference/tokenized.html | 7 +- .../adaptors/reference/transformed.html | 7 +- .../reference/adaptors/reference/uniqued.html | 8 +- .../reference/algorithms/heap/make_heap.html | 10 +- .../reference/algorithms/heap/pop_heap.html | 12 +- .../reference/algorithms/heap/push_heap.html | 12 +- .../reference/algorithms/heap/sort_heap.html | 12 +- .../reference/algorithms/mutating/copy.html | 12 +- .../algorithms/mutating/copy_backward.html | 12 +- .../reference/algorithms/mutating/fill.html | 10 +- .../reference/algorithms/mutating/fill_n.html | 10 +- .../algorithms/mutating/generate.html | 12 +- .../algorithms/mutating/inplace_merge.html | 16 +- .../reference/algorithms/mutating/merge.html | 16 +- .../algorithms/mutating/nth_element.html | 10 +- .../algorithms/mutating/partial_sort.html | 10 +- .../algorithms/mutating/partition.html | 10 +- .../algorithms/mutating/random_shuffle.html | 12 +- .../reference/algorithms/mutating/remove.html | 10 +- .../algorithms/mutating/remove_copy.html | 10 +- .../algorithms/mutating/remove_copy_if.html | 10 +- .../algorithms/mutating/remove_if.html | 10 +- .../algorithms/mutating/replace.html | 10 +- .../algorithms/mutating/replace_copy.html | 10 +- .../algorithms/mutating/replace_copy_if.html | 10 +- .../algorithms/mutating/replace_if.html | 10 +- .../algorithms/mutating/reverse.html | 10 +- .../algorithms/mutating/reverse_copy.html | 10 +- .../reference/algorithms/mutating/rotate.html | 12 +- .../algorithms/mutating/rotate_copy.html | 12 +- .../reference/algorithms/mutating/sort.html | 10 +- .../algorithms/mutating/stable_partition.html | 10 +- .../algorithms/mutating/stable_sort.html | 10 +- .../algorithms/mutating/swap_ranges.html | 10 +- .../algorithms/mutating/transform.html | 12 +- .../reference/algorithms/mutating/unique.html | 10 +- .../algorithms/mutating/unique_copy.html | 10 +- .../reference/algorithms/new/copy_n.html | 10 +- .../range/reference/algorithms/new/erase.html | 10 +- .../reference/algorithms/new/for_each.html | 10 +- .../reference/algorithms/new/insert.html | 10 +- .../range/reference/algorithms/new/iota.html | 10 +- .../reference/algorithms/new/is_sorted.html | 10 +- .../reference/algorithms/new/overwrite.html | 10 +- .../reference/algorithms/new/push_back.html | 10 +- .../reference/algorithms/new/push_front.html | 10 +- .../algorithms/new/remove_erase.html | 10 +- .../algorithms/new/remove_erase_if.html | 10 +- .../non_mutating/adjacent_find.html | 10 +- .../non_mutating/binary_search.html | 12 +- .../algorithms/non_mutating/count.html | 10 +- .../algorithms/non_mutating/count_if.html | 10 +- .../algorithms/non_mutating/equal.html | 10 +- .../algorithms/non_mutating/equal_range.html | 12 +- .../algorithms/non_mutating/find.html | 10 +- .../algorithms/non_mutating/find_end.html | 10 +- .../non_mutating/find_first_of.html | 10 +- .../algorithms/non_mutating/find_if.html | 12 +- .../algorithms/non_mutating/for_each.html | 10 +- .../non_mutating/lexicographical_compare.html | 10 +- .../algorithms/non_mutating/lower_bound.html | 12 +- .../algorithms/non_mutating/max_element.html | 10 +- .../algorithms/non_mutating/min_element.html | 10 +- .../algorithms/non_mutating/mismatch.html | 12 +- .../algorithms/non_mutating/search.html | 10 +- .../algorithms/non_mutating/search_n.html | 10 +- .../algorithms/non_mutating/upper_bound.html | 12 +- .../algorithms/numeric/accumulate.html | 14 +- .../numeric/adjacent_difference.html | 16 +- .../algorithms/numeric/inner_product.html | 16 +- .../algorithms/numeric/partial_sum.html | 16 +- .../permutation/next_permutation.html | 10 +- .../permutation/prev_permutation.html | 10 +- .../reference/algorithms/set/includes.html | 12 +- .../algorithms/set/set_difference.html | 12 +- .../algorithms/set/set_intersection.html | 12 +- .../set/set_symmetric_difference.html | 12 +- .../reference/algorithms/set/set_union.html | 12 +- .../reference/concept_implementation.html | 48 +++ .../concept_implementation/overview.html | 68 +++ .../concept_implementation/semantics.html | 163 +++++++ .../semantics/functions.html | 408 ++++++++++++++++++ .../semantics/metafunctions.html | 236 ++++++++++ .../concept_implementation/synopsis.html | 185 ++++++++ doc/html/range/reference/overview.html | 68 --- .../reference/ranges/counting_range.html | 8 +- doc/html/range/reference/ranges/irange.html | 14 +- .../range/reference/ranges/istream_range.html | 6 +- doc/html/range/reference/semantics.html | 163 ------- .../reference/utilities/iterator_range.html | 6 +- doc/html/range/reference/utilities/join.html | 4 +- .../range/reference/utilities/sub_range.html | 2 +- doc/html/range/upgrade/upgrade_from_1_34.html | 7 +- doc/reference.qbk | 4 + doc/reference/adaptors.qbk | 24 -- doc/reference/adaptors/adjacent_filtered.qbk | 3 +- doc/reference/adaptors/copied.qbk | 3 +- doc/reference/adaptors/filtered.qbk | 4 +- doc/reference/adaptors/indexed.qbk | 3 +- doc/reference/adaptors/indirected.qbk | 3 +- doc/reference/adaptors/map_keys.qbk | 3 +- doc/reference/adaptors/map_values.qbk | 3 +- doc/reference/adaptors/replaced.qbk | 3 +- doc/reference/adaptors/replaced_if.qbk | 3 +- doc/reference/adaptors/reversed.qbk | 3 +- doc/reference/adaptors/sliced.qbk | 3 +- doc/reference/adaptors/strided.qbk | 3 +- doc/reference/adaptors/tokenized.qbk | 3 +- doc/reference/adaptors/transformed.qbk | 3 +- doc/reference/adaptors/uniqued.qbk | 3 +- doc/reference/algorithms.qbk | 2 +- doc/reference/ranges/irange.qbk | 6 +- 155 files changed, 1788 insertions(+), 3127 deletions(-) delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/copied.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/filtered.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/indexed.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/indirected.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/map_keys.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/map_values.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/replaced.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/reversed.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/sliced.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/strided.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/tokenized.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/transformed.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference/uniqued.html create mode 100644 doc/html/range/reference/concept_implementation.html create mode 100644 doc/html/range/reference/concept_implementation/overview.html create mode 100644 doc/html/range/reference/concept_implementation/semantics.html create mode 100644 doc/html/range/reference/concept_implementation/semantics/functions.html create mode 100644 doc/html/range/reference/concept_implementation/semantics/metafunctions.html create mode 100644 doc/html/range/reference/concept_implementation/synopsis.html delete mode 100644 doc/html/range/reference/overview.html delete mode 100644 doc/html/range/reference/semantics.html diff --git a/doc/boost_range.qbk b/doc/boost_range.qbk index 6f6af4f..80bbf06 100644 --- a/doc/boost_range.qbk +++ b/doc/boost_range.qbk @@ -36,30 +36,30 @@ [def __iterator_range__ [link range.reference.utilities.iterator_range `iterator_range`]] [def __sub_range__ [link range.reference.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 __range_result_iterator__ [link range.reference.concept_implementation.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 __implementation_of_metafunctions__ [link range.reference.concept_implementation.semantics.metafunctions Implementation of metafunctions]] +[def __implementation_of_functions__ [link range.reference.concept_implementation.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 __range_value__ [link range.reference.concept_implementation.semantics.metafunctions `range_value`]] +[def __range_iterator__ [link range.reference.concept_implementation.semantics.metafunctions `range_iterator`]] +[def __range_difference__ [link range.reference.concept_implementation.semantics.metafunctions `range_difference`]] +[def __range_pointer__ [link range.reference.concept_implementation.semantics.metafunctions `range_pointer`]] +[def __range_category__ [link range.reference.concept_implementation.semantics.metafunctions `range_category`]] +[def __range_reverse_iterator__ [link range.reference.concept_implementation.semantics.metafunctions `range_reverse_iterator`]] +[def __begin__ [link range.reference.concept_implementation.semantics.functions `begin`]] +[def __const_begin__ [link range.reference.concept_implementation.semantics.functions `const_begin`]] +[def __end__ [link range.reference.concept_implementation.semantics.functions `end`]] +[def __const_end__ [link range.reference.concept_implementation.semantics.functions `const_end`]] +[def __empty__ [link range.reference.concept_implementation.semantics.functions `empty`]] +[def __distance__ [link range.reference.concept_implementation.semantics.functions `distance`]] +[def __size__ [link range.reference.concept_implementation.semantics.functions `size`]] +[def __rbegin__ [link range.reference.concept_implementation.semantics.functions `rbegin`]] +[def __const_rbegin__ [link range.reference.concept_implementation.semantics.functions `const_rbegin`]] +[def __rend__ [link range.reference.concept_implementation.semantics.functions `rend`]] +[def __const_rend__ [link range.reference.concept_implementation.semantics.functions `const_rend`]] +[def __as_array__ [link range.reference.concept_implementation.semantics.functions `as_array`]] +[def __as_literal__ [link range.reference.concept_implementation.semantics.functions `as_literal`]] [def __counting_range__ [link range.reference.ranges.counting_range `counting_range`]] [def __irange__ [link range.reference.ranges.irange `irange`]] [def __istream_range__ [link range.reference.ranges.istream_range `istream_range`]] diff --git a/doc/html/index.html b/doc/html/index.html index b2f6b77..f6095bd 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -30,7 +30,7 @@

    -

    +

    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)

    @@ -52,17 +52,16 @@
    Reference
    Overview
    -
    Synopsis
    -
    Semantics
    +
    Range concept + implementation
    -
    Metafunctions
    -
    Functions
    +
    Synopsis
    +
    Semantics
    Range Adaptors
    Introduction and motivation
    -
    Synopsis
    General Requirements
    Reference
    @@ -143,7 +142,7 @@

    - +

    Last revised: April 28, 2010 at 15:53:14 GMT

    Last revised: April 28, 2010 at 17:51:33 GMT


    diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index 8a0d31a..7c5d13a 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -9,13 +9,13 @@ range/concepts/random_access_range.html range/concepts/concept_checking.html range/reference.html range/reference/overview.html -range/reference/synopsis.html -range/reference/semantics.html -range/reference/semantics/metafunctions.html -range/reference/semantics/functions.html +range/reference/concept_implementation.html +range/reference/concept_implementation/synopsis.html +range/reference/concept_implementation/semantics.html +range/reference/concept_implementation/semantics/metafunctions.html +range/reference/concept_implementation/semantics/functions.html range/reference/adaptors.html range/reference/adaptors/introduction.html -range/reference/adaptors/adaptors_synopsis.html range/reference/adaptors/general_requirements.html range/reference/adaptors/reference.html range/reference/adaptors/reference/adjacent_filtered.html diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 1edda7b..72c8c28 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -27,7 +27,7 @@ Bidirectional Range
    - + Notation
    @@ -65,7 +65,7 @@
    - + Description

    @@ -75,7 +75,7 @@ Traversal Iterator.

    - + Refinement of
    @@ -83,7 +83,7 @@ Forward Range

    - + Associated types
    @@ -136,7 +136,7 @@
    - + Valid expressions
    @@ -221,7 +221,7 @@
    - + Complexity guarantees
    @@ -232,7 +232,7 @@ Forward Range.

    - + Invariants
    @@ -272,15 +272,16 @@
    - + See also

    - Implementation of - metafunctions + Implementation + of metafunctions

    - Implementation of functions + Implementation + of functions

    diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index 311794e..30d3850 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -79,7 +79,7 @@
    - + See also

    diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index 72df009..61ec9e8 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -27,7 +27,7 @@ Forward Range

    - + Notation
    @@ -65,7 +65,7 @@
    - + Description

    @@ -73,14 +73,14 @@ Traversal Iterator.

    - + Refinement of

    Single Pass Range

    - + Associated types
    @@ -132,15 +132,16 @@
    - + See also

    - Implementation of - metafunctions + Implementation + of metafunctions

    - Implementation of functions + Implementation + of functions

    diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index 66edd3c..379410e 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -27,7 +27,7 @@ Random Access Range
    - + Description

    @@ -35,7 +35,7 @@ Access Traversal Iterator.

    - + Refinement of
    @@ -43,7 +43,7 @@ Bidirectional Range

    - + Valid expressions
    @@ -89,7 +89,7 @@
    - + Expression semantics
    @@ -139,7 +139,7 @@
    - + Complexity guarantees
    @@ -147,7 +147,7 @@ boost::size(a) completes in amortized constant time.

    - + Invariants
    diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index 5728a92..32bcef4 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -27,7 +27,7 @@ Single Pass Range
    - + Notation
    @@ -65,7 +65,7 @@
    - + Description

    @@ -73,7 +73,7 @@ Pass Iterator.

    - + Associated types
    @@ -126,7 +126,7 @@
    - + Valid expressions
    @@ -198,7 +198,7 @@
    - + Expression semantics
    @@ -266,7 +266,7 @@
    - + Complexity guarantees
    @@ -276,7 +276,7 @@ constant time.

    - + Invariants
    @@ -316,18 +316,19 @@
    - + See also

    Extending the library for UDTs

    - Implementation of - metafunctions + Implementation + of metafunctions

    - Implementation of functions + Implementation + of functions

    Container diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index a67833d..37d497d 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -26,7 +26,7 @@ History and Acknowledgement

    - + Version 1 - before Boost 1.43

    @@ -79,7 +79,7 @@ The concept checks and their documentation was provided by Daniel Walker.

    - + Version 2 - Boost 1.43 and beyond

    diff --git a/doc/html/range/library_headers/general.html b/doc/html/range/library_headers/general.html index 382215d..558fe74 100644 --- a/doc/html/range/library_headers/general.html +++ b/doc/html/range/library_headers/general.html @@ -111,7 +111,7 @@

    - range_value + range_value

    @@ -128,7 +128,7 @@

    - range_iterator + range_iterator

    @@ -145,7 +145,7 @@

    - range_difference + range_difference

    @@ -162,7 +162,7 @@

    - range_pointer + range_pointer

    @@ -179,7 +179,7 @@

    - range_category + range_category

    @@ -196,7 +196,7 @@

    - range_reverse_iterator + range_reverse_iterator

    @@ -214,7 +214,7 @@

    - begin and const_begin + begin and const_begin

    @@ -231,7 +231,7 @@

    - end and const_end + end and const_end

    @@ -248,7 +248,7 @@

    - empty + empty

    @@ -265,7 +265,7 @@

    - distance + distance

    @@ -282,7 +282,7 @@

    - size + size

    @@ -300,7 +300,7 @@

    - rbegin and const_rbegin + rbegin and const_rbegin

    @@ -318,7 +318,7 @@

    - rend and const_rend + rend and const_rend

    @@ -336,7 +336,7 @@

    - as_array + as_array

    @@ -353,7 +353,7 @@

    - as_literal + as_literal

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 1b4092d..c0f1c6d 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -34,7 +34,7 @@
    References
    - + Introduction

    @@ -100,7 +100,7 @@

    - + Overview

    diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 334df5a..45d3a07 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -38,7 +38,7 @@

    Notice also that some compilers cannot do function template ordering properly. - In that case one must rely of range_iterator and a single function + In that case one must rely of range_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.

    @@ -50,12 +50,14 @@ do not use built-in arrays,
  • - do not pass rvalues to begin(), - end() and iterator_range Range constructors + do not pass rvalues to begin(), + end() + and iterator_range Range constructors and assignment operators,
  • - use const_begin() and const_end() + use const_begin() + and const_end() whenever your code by intention is read-only; this will also solve most rvalue problems,
  • diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index 2e597ea..cbff24d 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -28,17 +28,16 @@
    Overview
    -
    Synopsis
    -
    Semantics
    +
    Range concept + implementation
    -
    Metafunctions
    -
    Functions
    +
    Synopsis
    +
    Semantics
    Range Adaptors
    Introduction and motivation
    -
    Synopsis
    General Requirements
    Reference
    diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index 86877d9..b649558 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -29,7 +29,6 @@
    Introduction and motivation
    -
    Synopsis
    General Requirements
    Reference
    @@ -45,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html deleted file mode 100644 index fa763c8..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/adjacent_filtered.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -adjacent_filtered - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::adjacent_filtered(bi_pred) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::adjacent_filter(rng, - bi_pred) -

    -
    -
      -
    • -Precondition: The value_type - of the range is convertible to both argument types of bi_pred. -
    • -
    • -Postcondition: For all adjacent elements - [x,y] in the returned range, bi_pred(x,y) - is true. -
    • -
    • -Throws: Whatever the copy constructor - of bi_pred might throw. -
    • -
    • -Range Category:SinglePassRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/adjacent_filtered.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <functional>
    -#include <iostream>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::vector<int> input;
    -    input += 1,1,2,2,2,3,4,5,6;
    -
    -    boost::copy(
    -        input | adjacent_filtered(std::not_equal_to<int>()),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    1,2,3,4,5,6
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/copied.html b/doc/html/range/reference/adaptors/adaptors_reference/copied.html deleted file mode 100644 index 650e29a..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/copied.html +++ /dev/null @@ -1,152 +0,0 @@ - - - -copied - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::copied(n, - m) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::copy(rng, - n, - m) -

    -
    -
      -
    • -Precondition:0 - <= n - && n - <= m - && m - < distance(rng) -
    • -
    • -Returns: A new iterator_range - that holds the sliced range [n,m) - of the original range. -
    • -
    • -Range Category:RandomAccessRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/copied.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9,10;
    -
    -    boost::copy(
    -        input | copied(1, 5),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    2,3,4,5
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html b/doc/html/range/reference/adaptors/adaptors_reference/filtered.html deleted file mode 100644 index 1551a9f..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/filtered.html +++ /dev/null @@ -1,156 +0,0 @@ - - - -filtered - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::filtered(pred) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::filter(rng, - pred) -

    -
    -
      -
    • -Precondition: The value_type - of the range is convertible to the argument type of pred. -
    • -
    • -Postcondition: For all adjacent elements - [x] in the returned range, pred(x) - is true. -
    • -
    • -Throws: Whatever the copy constructor - of pred might throw. -
    • -
    • -Range Category:ForwardRange -
    • -
    • -Returned Range Category:ForwardRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/filtered.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -struct is_even
    -{
    -    bool operator()( int x ) const { return x % 2 == 0; }
    -};
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9;
    -
    -    boost::copy(
    -        input | filtered(is_even()),
    -        std::ostream_iterator<int>(std::cout, ","));
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    2,4,6,8
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html b/doc/html/range/reference/adaptors/adaptors_reference/indexed.html deleted file mode 100644 index d8c8674..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/indexed.html +++ /dev/null @@ -1,186 +0,0 @@ - - - -indexed - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::indexed -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::index(rng) -

    -
    -
      -
    • -Returns: A range adapted to return - both the element and the associated index. The returned range consists - of iterators that have in addition to the usual iterator member functions - an index() - member function that returns the appropriate index for the element - in the sequence corresponding with the iterator. -
    • -
    • -Range Category:SinglePassRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/indexed.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -template<class Iterator>
    -void display_element_and_index(Iterator first, Iterator last)
    -{
    -    for (Iterator it = first; it != last; ++it)
    -    {
    -        std::cout << "Element = " << *it << " Index = " << it.index() << std::endl;
    -    }
    -}
    -
    -template<class SinglePassRange>
    -void display_element_and_index(const SinglePassRange& rng)
    -{
    -    display_element_and_index(boost::begin(rng), boost::end(rng));
    -}
    -
    -template<class Iterator1, class Iterator2>
    -void check_element_and_index(
    -        Iterator1 test_first,
    -        Iterator1 test_last,
    -        Iterator2 reference_first,
    -        Iterator2 reference_last)
    -{
    -    BOOST_CHECK_EQUAL( std::distance(test_first, test_last),
    -                       std::distance(reference_first, reference_last) );
    -
    -    int reference_index = 0;
    -
    -    Iterator1 test_it = test_first;
    -    Iterator2 reference_it = reference_first;
    -    for (; test_it != test_last; ++test_it, ++reference_it, ++reference_index)
    -    {
    -        BOOST_CHECK_EQUAL( *test_it, *reference_it );
    -        BOOST_CHECK_EQUAL( test_it.index(), reference_index );
    -    }
    -}
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::vector<int> input;
    -    input += 10,20,30,40,50,60,70,80,90;
    -
    -    display_element_and_index( input | indexed(0) );
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    Element = 10 Index = 0
    -Element = 20 Index = 1
    -Element = 30 Index = 2
    -Element = 40 Index = 3
    -Element = 50 Index = 4
    -Element = 60 Index = 5
    -Element = 70 Index = 6
    -Element = 80 Index = 7
    -Element = 90 Index = 8
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html b/doc/html/range/reference/adaptors/adaptors_reference/indirected.html deleted file mode 100644 index adcd57a..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/indirected.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -indirected - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::indirected -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::indirect(rng) -

    -
    -
      -
    • -Precondition: The value_type - of the range defines unary operator*() -
    • -
    • -Postcondition: For all elements x in the returned range, x is the result of *y - where y is the corresponding - element in the original range. -
    • -
    • -Range Category:SinglePassRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/indirected.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/shared_ptr.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::adaptors;
    -
    -    std::vector<boost::shared_ptr<int> > input;
    -
    -    for (int i = 0; i < 10; ++i)
    -        input.push_back(boost::shared_ptr<int>(new int(i)));
    -
    -    boost::copy(
    -        input | indirected,
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    0,1,2,3,4,5,6,7,8,9
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html b/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html deleted file mode 100644 index 95c1746..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_keys.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -map_keys - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::map_keys -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::keys(rng) -

    -
    -
      -
    • -Precondition: The value_type - of the range is an instantiation of std::pair. -
    • -
    • -Postcondition: For all elements x in the returned range, x is the result of y.first where y - is the corresponding element in the original range. -
    • -
    • -Range Category:SinglePassRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/map.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <map>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::map<int,int> input;
    -    for (int i = 0; i < 10; ++i)
    -        input.insert(std::make_pair(i, i * 10));
    -
    -    boost::copy(
    -        input | map_keys,
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    0,1,2,3,4,5,6,7,8,9
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html b/doc/html/range/reference/adaptors/adaptors_reference/map_values.html deleted file mode 100644 index 553a8f3..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/map_values.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -map_values - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::map_values -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::values(rng) -

    -
    -
      -
    • -Precondition: The value_type - of the range is an instantiation of std::pair. -
    • -
    • -Postcondition: For all elements x in the returned range, x is the result of y.second where y - is the corresponding element in the original range. -
    • -
    • -Range Category:SinglePassRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/map.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <map>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::map<int,int> input;
    -    for (int i = 0; i < 10; ++i)
    -        input.insert(std::make_pair(i, i * 10));
    -
    -    boost::copy(
    -        input | map_values,
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    0,10,20,30,40,50,60,70,80,90
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced.html deleted file mode 100644 index 0990ede..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -replaced - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::replaced(new_value, - old_value) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::replace(rng, - new_value, - old_value) -

    -
    -
      -
    • -Precondition:
        -
      • -new_value is convertible - to the value_type - of the range. -
      • -
      • -old_value is convertible - to the value_type - of the range. -
      • -
      -
    • -
    • -Postcondition: For all elements x in the returned range, the value - x is equal to the value - of (y - == old_value) ? new_value : - y where y - is the corresponding element in the original range. -
    • -
    • -Range Category:ForwardRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/replaced.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::adaptors;
    -    using namespace boost::assign;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,2,5,2,7,2,9;
    -
    -    boost::copy(
    -        input | replaced(2, 10),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    1,10,3,10,5,10,7,10,9
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html b/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html deleted file mode 100644 index abcf00f..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/replaced_if.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -replaced_if - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::replaced_if(pred, - new_value) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::replace_if(rng, - pred, - new_value) -

    -
    -
      -
    • -Precondition:
        -
      • - The range value_type - is convertible to the argument type of pred. -
      • -
      • -new_value is convertible - to the value_type - of the range. -
      • -
      -
    • -
    • -Postconditions: For all elements - x in the returned range, - the value x is equal - to the value of pred(y) ? new_value : - y where y - is the corresponding element in the original range. -
    • -
    • -Range Category:ForwardRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/replaced_if.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -struct is_even
    -{
    -    bool operator()(int x) const { return x % 2 == 0; }
    -};
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::adaptors;
    -    using namespace boost::assign;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9;
    -
    -    boost::copy(
    -        input | replaced_if(is_even(), 10),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    1,10,3,10,5,10,7,10,9
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html b/doc/html/range/reference/adaptors/adaptors_reference/reversed.html deleted file mode 100644 index 52f4cda..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/reversed.html +++ /dev/null @@ -1,140 +0,0 @@ - - - -reversed - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::reversed -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::reverse(rng) -

    -
    -
      -
    • -Returns: A range whose iterators behave - as if they were the original iterators wrapped in reverse_iterator. -
    • -
    • -Range Category:BidirectionalRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/reversed.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -void reversed_example_test()
    -{
    -    using namespace boost::adaptors;
    -    using namespace boost::assign;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9;
    -
    -    boost::copy(
    -        input | reversed,
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    9,8,7,6,5,4,3,2,1
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html b/doc/html/range/reference/adaptors/adaptors_reference/sliced.html deleted file mode 100644 index 9793092..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/sliced.html +++ /dev/null @@ -1,150 +0,0 @@ - - - -sliced - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::sliced(n, - m) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::slice(rng, - n, - m) -

    -
    -
      -
    • -Precondition:0 - <= n - && n - <= m - && m - < distance(rng) -
    • -
    • -Returns:make_range(rng, n, m) -
    • -
    • -Range Category:RandomAccessRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/sliced.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::adaptors;
    -    using namespace boost::assign;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9;
    -
    -    boost::copy(
    -        input | sliced(2, 5),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    3,4,5
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/strided.html b/doc/html/range/reference/adaptors/adaptors_reference/strided.html deleted file mode 100644 index 6fcc281..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/strided.html +++ /dev/null @@ -1,147 +0,0 @@ - - - -strided - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::strided(n) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::stride(rng, - n) -

    -
    -
      -
    • -Precondition:0 - <= n - && n - < distance(rng) -
    • -
    • -Returns: A new range based on rng where traversal is performed - in steps of n. -
    • -
    • -Range Category:RandomAccessRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/strided.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::adaptors;
    -    using namespace boost::assign;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9,10;
    -
    -    boost::copy(
    -        input | strided(2),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    1,3,5,7,9
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html b/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html deleted file mode 100644 index fc4bc42..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/tokenized.html +++ /dev/null @@ -1,143 +0,0 @@ - - - -tokenized - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - -

    -
    rng | boost::adaptors::tokenized(regex)
    -rng | boost::adaptors::tokenized(regex, i)
    -rng | boost::adaptors::tokenized(regex, rndRng)
    -rng | boost::adaptors::tokenized(regex, i, flags)
    -rng | boost::adaptors::tokenized(regex, rndRng, flags)
    -
    -

    -

    -
    -

    - Function -

    -
    -

    - -

    -
    boost::adaptors::tokenize(rng, regex)
    -boost::adaptors::tokenize(rng, regex, i)
    -boost::adaptors::tokenize(rng, regex, rndRng)
    -boost::adaptors::tokenize(rng, regex, i, flags)
    -boost::adaptors::tokenize(rng, regex, rndRng, flags)
    -
    -

    -

    -
    -
      -
    • -Precondition:
        -
      • - Let T denote typename range_value<decltype(rng)>::type, - then regex has - the type basic_regex<T> or is implicitly convertible - to one of these types. -
      • -
      • -i has the type - int. -
      • -
      • - the value_type - of rndRng is int. -
      • -
      • -flags has the type - regex_constants::syntax_option_type. -
      • -
      -
    • -
    • -Returns: A range whose iterators behave - as if they were the original iterators wrapped in regex_token_iterator. - The first iterator in the range would be constructed by forwarding - all the arguments of tokenized() to the regex_token_iterator - constructor. -
    • -
    • -Throws: Whatever constructing and - copying equivalent regex_token_iterators - might throw. -
    • -
    • -Range Category:RandomAccessRange -
    • -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html b/doc/html/range/reference/adaptors/adaptors_reference/transformed.html deleted file mode 100644 index 56a6170..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/transformed.html +++ /dev/null @@ -1,156 +0,0 @@ - - - -transformed - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::transformed(fun) -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::transform(rng, - fun) -

    -
    -
      -
    • -Precondition: The value_type - of the range is convertible to the argument type of fun. -
    • -
    • -Postcondition: For all elements x in the returned range, x is the result of fun(y) - where y is the corresponding - element in the original range. -
    • -
    • -Throws: Whatever the copy-constructor - of fun might throw. -
    • -
    • -Range Category:SinglePassRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/transformed.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -struct double_int
    -{
    -    typedef int result_type;
    -    int operator()(int x) const { return x * 2; }
    -};
    -
    -int main(int argc, const char* argv[])
    -{
    -    using namespace boost::adaptors;
    -    using namespace boost::assign;
    -
    -    std::vector<int> input;
    -    input += 1,2,3,4,5,6,7,8,9,10;
    -
    -    boost::copy(
    -        input | transformed(double_int()),
    -        std::ostream_iterator<int>(std::cout, ","));
    -
    -    return 0;
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    2,4,6,8,10,12,14,16,18,20
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html b/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html deleted file mode 100644 index 3b314ab..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference/uniqued.html +++ /dev/null @@ -1,142 +0,0 @@ - - - -uniqued - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - - -
    ---- - - - - - - - - - - - - - - -
    -

    - Syntax -

    -
    -

    - Code -

    -
    -

    - Pipe -

    -
    -

    - rng | - boost::adaptors::uniqued -

    -
    -

    - Function -

    -
    -

    - boost::adaptors::unique(rng) -

    -
    -
      -
    • -Precondition: The value_type - of the range is comparable with operator==(). -
    • -
    • -Postcondition: For all adjacent elements - [x,y] in the returned range, x==y is false. -
    • -
    • -Range Category:ForwardRange -
    • -
    -
    - -

    - -

    -
    #include <boost/range/adaptor/uniqued.hpp>
    -#include <boost/range/algorithm/copy.hpp>
    -#include <boost/assign.hpp>
    -#include <algorithm>
    -#include <iostream>
    -#include <vector>
    -
    -void uniqued_example_test()
    -{
    -    using namespace boost::assign;
    -    using namespace boost::adaptors;
    -
    -    std::vector<int> input;
    -    input += 1,1,2,2,2,3,4,5,6;
    -
    -    boost::copy(
    -        input | uniqued,
    -        std::ostream_iterator<int>(std::cout, ","));
    -}
    -
    -

    -

    -
    -

    - This would produce the output: -

    -
    1,2,3,4,5,6
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/general_requirements.html b/doc/html/range/reference/adaptors/general_requirements.html index 9cff81a..63abc37 100644 --- a/doc/html/range/reference/adaptors/general_requirements.html +++ b/doc/html/range/reference/adaptors/general_requirements.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -135,7 +135,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 4375a04..1982491 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

    - + Composition of Adaptors
    @@ -159,7 +159,7 @@ is the design solution to this problem.

    - + Range Adaptor alternative to copy_if algorithm
    @@ -176,7 +176,7 @@

    - + Range Adaptor alternative to count_if algorithm
    @@ -268,7 +268,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html index e229ed4..c6d4404 100644 --- a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html @@ -90,7 +90,13 @@ of bi_pred might throw.
  • -Range Category:SinglePassRange +Range Category:Single + Pass Range +
  • +
  • +Returned Range Category: The minimum + of the range category of rng + and Forward Range
  • diff --git a/doc/html/range/reference/adaptors/reference/copied.html b/doc/html/range/reference/adaptors/reference/copied.html index 52ba608..24b72f1 100644 --- a/doc/html/range/reference/adaptors/reference/copied.html +++ b/doc/html/range/reference/adaptors/reference/copied.html @@ -91,7 +91,12 @@ of the original range.
  • -Range Category:RandomAccessRange +Range Category:Random + Access Range +
  • +
  • +Returned Range Category:Random + Access Range
  • diff --git a/doc/html/range/reference/adaptors/reference/filtered.html b/doc/html/range/reference/adaptors/reference/filtered.html index b130702..6ce9f3c 100644 --- a/doc/html/range/reference/adaptors/reference/filtered.html +++ b/doc/html/range/reference/adaptors/reference/filtered.html @@ -89,10 +89,14 @@ of pred might throw.
  • -Range Category:ForwardRange +Range Category:Forward + Range
  • -Returned Range Category:ForwardRange +Returned Range Category: The minimum + of the range category of rng + and Bidirectional + Range
  • diff --git a/doc/html/range/reference/adaptors/reference/indexed.html b/doc/html/range/reference/adaptors/reference/indexed.html index 90ae2a0..3ef95df 100644 --- a/doc/html/range/reference/adaptors/reference/indexed.html +++ b/doc/html/range/reference/adaptors/reference/indexed.html @@ -83,7 +83,12 @@ in the sequence corresponding with the iterator.
  • -Range Category:SinglePassRange +Range Category:Single + Pass Range +
  • +
  • +Returned Range Category: The range + category of rng
  • diff --git a/doc/html/range/reference/adaptors/reference/indirected.html b/doc/html/range/reference/adaptors/reference/indirected.html index 5313ed1..7dc0558 100644 --- a/doc/html/range/reference/adaptors/reference/indirected.html +++ b/doc/html/range/reference/adaptors/reference/indirected.html @@ -84,7 +84,12 @@ element in the original range.
  • -Range Category:SinglePassRange +Range Category:Single + Pass Range +
  • +
  • +Returned Range Category: The range + category of rng
  • diff --git a/doc/html/range/reference/adaptors/reference/map_keys.html b/doc/html/range/reference/adaptors/reference/map_keys.html index 2b46c98..6c69774 100644 --- a/doc/html/range/reference/adaptors/reference/map_keys.html +++ b/doc/html/range/reference/adaptors/reference/map_keys.html @@ -83,8 +83,13 @@ is the corresponding element in the original range.
  • -Range Category:SinglePassRange +Range Category:Single + Pass Range
  • +
  • +Returned Range Category: The range + category of rng. +
  • diff --git a/doc/html/range/reference/adaptors/reference/map_values.html b/doc/html/range/reference/adaptors/reference/map_values.html index 8b3761f..6a906b2 100644 --- a/doc/html/range/reference/adaptors/reference/map_values.html +++ b/doc/html/range/reference/adaptors/reference/map_values.html @@ -83,8 +83,13 @@ is the corresponding element in the original range.
  • -Range Category:SinglePassRange +Range Category:Single + Pass Range
  • +
  • +Returned Range Category: The range + category of rng. +
  • diff --git a/doc/html/range/reference/adaptors/reference/replaced.html b/doc/html/range/reference/adaptors/reference/replaced.html index 61de327..3bcfff4 100644 --- a/doc/html/range/reference/adaptors/reference/replaced.html +++ b/doc/html/range/reference/adaptors/reference/replaced.html @@ -100,8 +100,13 @@ is the corresponding element in the original range.
  • -Range Category:ForwardRange +Range Category:Forward + Range
  • +
  • +Returned Range Category: The range + category of rng. +
  • diff --git a/doc/html/range/reference/adaptors/reference/replaced_if.html b/doc/html/range/reference/adaptors/reference/replaced_if.html index b64a538..dbd181e 100644 --- a/doc/html/range/reference/adaptors/reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/reference/replaced_if.html @@ -100,8 +100,13 @@ is the corresponding element in the original range.
  • -Range Category:ForwardRange +Range Category:Forward + Range
  • +
  • +Returned Range Category: The range + category of rng. +
  • diff --git a/doc/html/range/reference/adaptors/reference/reversed.html b/doc/html/range/reference/adaptors/reference/reversed.html index 3a9c619..f8d2f26 100644 --- a/doc/html/range/reference/adaptors/reference/reversed.html +++ b/doc/html/range/reference/adaptors/reference/reversed.html @@ -79,8 +79,13 @@ as if they were the original iterators wrapped in reverse_iterator.
  • -Range Category:BidirectionalRange +Range Category:Bidirectional + Range
  • +
  • +Returned Range Category: The range + category of rng. +
  • diff --git a/doc/html/range/reference/adaptors/reference/sliced.html b/doc/html/range/reference/adaptors/reference/sliced.html index e4a1298..757aaaf 100644 --- a/doc/html/range/reference/adaptors/reference/sliced.html +++ b/doc/html/range/reference/adaptors/reference/sliced.html @@ -89,7 +89,12 @@ Returns:make_range(rng, n, m)
  • -Range Category:RandomAccessRange +Range Category:Random + Access Range +
  • +
  • +Returned Range Category:Random + Access Range
  • diff --git a/doc/html/range/reference/adaptors/reference/strided.html b/doc/html/range/reference/adaptors/reference/strided.html index 793123c..b641325 100644 --- a/doc/html/range/reference/adaptors/reference/strided.html +++ b/doc/html/range/reference/adaptors/reference/strided.html @@ -86,7 +86,12 @@ in steps of n.
  • -Range Category:RandomAccessRange +Range Category:Random + Access Range +
  • +
  • +Returned Range Category:Random + Access Range
  • diff --git a/doc/html/range/reference/adaptors/reference/tokenized.html b/doc/html/range/reference/adaptors/reference/tokenized.html index a83f316..32f57e6 100644 --- a/doc/html/range/reference/adaptors/reference/tokenized.html +++ b/doc/html/range/reference/adaptors/reference/tokenized.html @@ -122,7 +122,12 @@ might throw.
  • -Range Category:RandomAccessRange +Range Category:Random + Access Range +
  • +
  • +Returned Range Category:Random + Access Range
  • diff --git a/doc/html/range/reference/adaptors/reference/transformed.html b/doc/html/range/reference/adaptors/reference/transformed.html index 7cad586..43b8758 100644 --- a/doc/html/range/reference/adaptors/reference/transformed.html +++ b/doc/html/range/reference/adaptors/reference/transformed.html @@ -90,8 +90,13 @@ of fun might throw.
  • -Range Category:SinglePassRange +Range Category:Single + Pass Range
  • +
  • +Returned Range Category: The range + category of rng. +
  • diff --git a/doc/html/range/reference/adaptors/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html index 6cd67eb..65fdc6e 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -83,8 +83,14 @@ [x,y] in the returned range, x==y is false.
  • -Range Category:ForwardRange +Range Category:Forward + Range
  • +
  • +Returned Range Category: The minimum + of the range concept of rng + and Forward Range. +
  • diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index b3981c1..a847fc7 100644 --- a/doc/html/range/reference/algorithms/heap/make_heap.html +++ b/doc/html/range/reference/algorithms/heap/make_heap.html @@ -27,7 +27,7 @@ make_heap
    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -60,14 +60,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    - + Requirements

    @@ -118,7 +118,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/pop_heap.html b/doc/html/range/reference/algorithms/heap/pop_heap.html index 66cd771..6cf064d 100644 --- a/doc/html/range/reference/algorithms/heap/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap/pop_heap.html @@ -27,7 +27,7 @@ pop_heap

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -62,14 +62,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    - + Requirements

    @@ -120,7 +120,7 @@

    - + Precondition:
      @@ -130,7 +130,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index 83f9113..f4497b6 100644 --- a/doc/html/range/reference/algorithms/heap/push_heap.html +++ b/doc/html/range/reference/algorithms/heap/push_heap.html @@ -27,7 +27,7 @@ push_heap

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -62,14 +62,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    - + Requirements

    @@ -120,7 +120,7 @@

    - + Precondition:
      @@ -130,7 +130,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 15f018c..c5bb9b3 100644 --- a/doc/html/range/reference/algorithms/heap/sort_heap.html +++ b/doc/html/range/reference/algorithms/heap/sort_heap.html @@ -27,7 +27,7 @@ sort_heap

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -61,14 +61,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/heap_algorithm.hpp

    - + Requirements

    @@ -119,14 +119,14 @@

    - + Precondition:

    rng is a heap.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy.html b/doc/html/range/reference/algorithms/mutating/copy.html index fd94fc3..854c4ac 100644 --- a/doc/html/range/reference/algorithms/mutating/copy.html +++ b/doc/html/range/reference/algorithms/mutating/copy.html @@ -27,7 +27,7 @@ copy

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -50,14 +50,14 @@ distance(source_rng)

    - + Definition

    Defined in the header file boost/range/algorithm/copy.hpp

    - + Requirements
      @@ -78,7 +78,7 @@
    - + Precondition:
      @@ -92,7 +92,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index 1c38629..c1d1266 100644 --- a/doc/html/range/reference/algorithms/mutating/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -28,7 +28,7 @@ copy_backward

    - + Prototype

    @@ -42,7 +42,7 @@

    - + Description

    @@ -60,14 +60,14 @@ denotes the end of the output sequence.

    - + Definition

    Defined in the header file boost/range/algorithm/copy_backward.hpp

    - + Requirements
      @@ -88,7 +88,7 @@
    - + Precondition:
      @@ -102,7 +102,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index d9b98a8..5f5da38 100644 --- a/doc/html/range/reference/algorithms/mutating/fill.html +++ b/doc/html/range/reference/algorithms/mutating/fill.html @@ -27,7 +27,7 @@ fill

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -48,14 +48,14 @@ in the range rng.

    - + Definition

    Defined in the header file boost/range/algorithm/fill.hpp

    - + Requirements
      @@ -78,7 +78,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index 95240f7..5d09a06 100644 --- a/doc/html/range/reference/algorithms/mutating/fill_n.html +++ b/doc/html/range/reference/algorithms/mutating/fill_n.html @@ -27,7 +27,7 @@ fill_n

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -47,14 +47,14 @@ val to n elements in the range rng begining with boost::begin(rng).

    - + Definition

    Defined in the header file boost/range/algorithm/fill_n.hpp

    - + Requirements
      @@ -77,7 +77,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 9d099d8..7bdf2ff 100644 --- a/doc/html/range/reference/algorithms/mutating/generate.html +++ b/doc/html/range/reference/algorithms/mutating/generate.html @@ -27,7 +27,7 @@ generate

    - + Prototype

    @@ -42,7 +42,7 @@

    - + Description

    @@ -52,14 +52,14 @@ Returns the resultant range.

    - + Definition

    Defined in the header file boost/range/algorithm/generate.hpp

    - + Requirements
      @@ -83,7 +83,7 @@
    - + Precondition:
      @@ -97,7 +97,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index cebedbf..8d4d6c5 100644 --- a/doc/html/range/reference/algorithms/mutating/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -28,7 +28,7 @@ inplace_merge

    - + Prototype

    @@ -59,7 +59,7 @@

    - + Description

    @@ -72,14 +72,14 @@ input range is preserved.

    - + Definition

    Defined in the header file boost/range/algorithm/inplace_merge.hpp

    - + Requirements

    @@ -116,11 +116,11 @@ argument types.

    - + Precondition:
    - + For the non-predicate version:
    @@ -143,7 +143,7 @@
    - + For the predicate version:
    @@ -164,7 +164,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html index 6637a05..d66fc41 100644 --- a/doc/html/range/reference/algorithms/mutating/merge.html +++ b/doc/html/range/reference/algorithms/mutating/merge.html @@ -27,7 +27,7 @@ merge

    - + Prototype

    @@ -56,7 +56,7 @@

    - + Description

    @@ -75,14 +75,14 @@ version uses the predicate instead of operator<().

    - + Definition

    Defined in the header file boost/range/algorithm/merge.hpp

    - + Requirements

    @@ -150,11 +150,11 @@

    - + Precondition:
    - + For the non-predicate version:
    @@ -189,7 +189,7 @@
    - + For the predicate version:
    @@ -220,7 +220,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/nth_element.html b/doc/html/range/reference/algorithms/mutating/nth_element.html index 52596c7..cd13253 100644 --- a/doc/html/range/reference/algorithms/mutating/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -28,7 +28,7 @@ nth_element

    - + Prototype

    @@ -59,7 +59,7 @@

    - + Description

    @@ -70,14 +70,14 @@ is the same as the element that would be in that position if rng has been sorted.

    - + Definition

    Defined in the header file boost/range/algorithm/nth_element.hpp

    - + Requirements

    @@ -128,7 +128,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/partial_sort.html b/doc/html/range/reference/algorithms/mutating/partial_sort.html index f7fabfd..7938cd3 100644 --- a/doc/html/range/reference/algorithms/mutating/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -28,7 +28,7 @@ partial_sort

    - + Prototype

    @@ -59,7 +59,7 @@

    - + Description

    @@ -75,14 +75,14 @@ predicate instead.

    - + Definition

    Defined in the header file boost/range/algorithm/partial_sort.hpp

    - + Requirements

    @@ -133,7 +133,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html index d74da64..79bd88c 100644 --- a/doc/html/range/reference/algorithms/mutating/partition.html +++ b/doc/html/range/reference/algorithms/mutating/partition.html @@ -27,7 +27,7 @@ partition

    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -80,14 +80,14 @@ corresponds to the middle iterator.

    - + Definition

    Defined in the header file boost/range/algorithm/partition.hpp

    - + Requirements
      @@ -107,7 +107,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index 1c64f84..d94fc5a 100644 --- a/doc/html/range/reference/algorithms/mutating/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -28,7 +28,7 @@ random_shuffle

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -61,14 +61,14 @@ the shuffles range.

    - + Definition

    Defined in the header file boost/range/algorithm/random_shuffle.hpp

    - + Requirements

    @@ -99,7 +99,7 @@

    - + Precondition:
    • @@ -108,7 +108,7 @@ maximum value.
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index 310e46b..de178ea 100644 --- a/doc/html/range/reference/algorithms/mutating/remove.html +++ b/doc/html/range/reference/algorithms/mutating/remove.html @@ -27,7 +27,7 @@ remove

    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -83,14 +83,14 @@ are dereferenceable, but the elements are unspecified.

    - + Definition

    Defined in the header file boost/range/algorithm/remove.hpp

    - + Requirements
      @@ -113,7 +113,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index 5855105..b775716 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -28,7 +28,7 @@ remove_copy

    - + Prototype

    @@ -45,7 +45,7 @@

    - + Description

    @@ -54,14 +54,14 @@ rng for which x == val is false.

    - + Definition

    Defined in the header file boost/range/algorithm/remove_copy.hpp

    - + Requirements
      @@ -84,7 +84,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html index 7d827dd..3f25b68 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -28,7 +28,7 @@ remove_copy_if

    - + Prototype

    @@ -45,7 +45,7 @@

    - + Description

    @@ -55,14 +55,14 @@ is false.

    - + Definition

    Defined in the header file boost/range/algorithm/remove_copy_if.hpp

    - + Requirements
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 54c3146..95a933c 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_if.html @@ -27,7 +27,7 @@ remove_if

    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -82,14 +82,14 @@ are unspecified.

    - + Definition

    Defined in the header file boost/range/algorithm/remove_if.hpp

    - + Requirements
      @@ -112,7 +112,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index 5a3a2eb..abbffc3 100644 --- a/doc/html/range/reference/algorithms/mutating/replace.html +++ b/doc/html/range/reference/algorithms/mutating/replace.html @@ -27,7 +27,7 @@ replace

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -57,14 +57,14 @@ Return a reference to rng.

    - + Definition

    Defined in the header file boost/range/algorithm/replace.hpp

    - + Requirements
      @@ -93,7 +93,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index 113c82e..a5678bd 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -28,7 +28,7 @@ replace_copy

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -54,14 +54,14 @@ x.

    - + Definition

    Defined in the header file boost/range/algorithm/replace_copy.hpp

    - + Requirements
      @@ -88,7 +88,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html index 34505fd..17607de 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -28,7 +28,7 @@ replace_copy_if

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -52,14 +52,14 @@ : x.

    - + Definition

    Defined in the header file boost/range/algorithm/replace_copy_if.hpp

    - + Requirements
      @@ -90,7 +90,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index d5c0a79..110c753 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -28,7 +28,7 @@ replace_if

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -52,14 +52,14 @@ Returns a reference to rng.

    - + Definition

    Defined in the header file boost/range/algorithm/replace_if.hpp

    - + Requirements
      @@ -91,7 +91,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index c0a5649..0ae4ef5 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse.html +++ b/doc/html/range/reference/algorithms/mutating/reverse.html @@ -27,7 +27,7 @@ reverse

    - + Prototype

    @@ -42,7 +42,7 @@

    - + Description

    @@ -50,14 +50,14 @@ Returns a reference to the reversed range.

    - + Definition

    Defined in the header file boost/range/algorithm/reverse.hpp

    - + Requirements
      @@ -72,7 +72,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index 34475c0..34a4b9a 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse_copy.html +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -28,7 +28,7 @@ reverse_copy

    - + Prototype

    @@ -40,7 +40,7 @@

    - + Description

    @@ -50,14 +50,14 @@ Returns the output iterator one passed the last copied element.

    - + Definition

    Defined in the header file boost/range/algorithm/reverse_copy.hpp

    - + Requirements
      @@ -76,7 +76,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index b40be4a..b0dc3e4 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate.html +++ b/doc/html/range/reference/algorithms/mutating/rotate.html @@ -27,7 +27,7 @@ rotate

    - + Prototype

    @@ -44,7 +44,7 @@

    - + Description

    @@ -53,14 +53,14 @@ and [middle, end(rng)). Returns a reference to rng.

    - + Definition

    Defined in the header file boost/range/algorithm/rotate.hpp

    - + Requirements
      @@ -74,7 +74,7 @@
    - + Precondition:
      @@ -86,7 +86,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index 1f1a782..293f540 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate_copy.html +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -28,7 +28,7 @@ rotate_copy

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -52,14 +52,14 @@ and [middle, end(rng)) to out.

    - + Definition

    Defined in the header file boost/range/algorithm/rotate_copy.hpp

    - + Requirements
      @@ -77,7 +77,7 @@
    - + Precondition:
      @@ -89,7 +89,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index 08f6f50..ffa09ad 100644 --- a/doc/html/range/reference/algorithms/mutating/sort.html +++ b/doc/html/range/reference/algorithms/mutating/sort.html @@ -27,7 +27,7 @@ sort

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -71,14 +71,14 @@ [x,y], pred(y, x) == false.

    - + Definition

    Defined in the header file boost/range/algorithm/sort.hpp

    - + Requirements

    @@ -129,7 +129,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/stable_partition.html b/doc/html/range/reference/algorithms/mutating/stable_partition.html index b88e26c..c12efc0 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -28,7 +28,7 @@ stable_partition

    - + Prototype

    @@ -61,7 +61,7 @@

    - + Description

    @@ -83,14 +83,14 @@ the iterator to the first element that fails to satisfy pred.

    - + Definition

    Defined in the header file boost/range/algorithm/stable_partition.hpp

    - + Requirements
      @@ -108,7 +108,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 137605b..7f4e1a5 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -28,7 +28,7 @@ stable_sort

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -72,14 +72,14 @@ [x,y], pred(y,x) == false.

    - + Definition

    Defined in the header file boost/range/algorithm/stable_sort.hpp

    - + Requirements

    @@ -130,7 +130,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/swap_ranges.html b/doc/html/range/reference/algorithms/mutating/swap_ranges.html index 78bf64d..a9fc9fa 100644 --- a/doc/html/range/reference/algorithms/mutating/swap_ranges.html +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -28,7 +28,7 @@ swap_ranges

    - + Prototype

    @@ -40,7 +40,7 @@

    - + Description

    @@ -50,14 +50,14 @@ Returns a reference to rng2.

    - + Definition

    Defined in the header file boost/range/algorithm/swap_ranges.hpp

    - + Requirements
      @@ -81,7 +81,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index be08af4..9247576 100644 --- a/doc/html/range/reference/algorithms/mutating/transform.html +++ b/doc/html/range/reference/algorithms/mutating/transform.html @@ -27,7 +27,7 @@ transform

    - + Prototype

    @@ -56,7 +56,7 @@

    - + Description

    @@ -92,14 +92,14 @@ The return value is out + min(distance(rng1), distance(rng2)).

    - + Definition

    Defined in the header file boost/range/algorithm/transform.hpp

    - + Requirements

    @@ -169,7 +169,7 @@

    - + Precondition:

    @@ -201,7 +201,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 2ea15fd..961a44f 100644 --- a/doc/html/range/reference/algorithms/mutating/unique.html +++ b/doc/html/range/reference/algorithms/mutating/unique.html @@ -27,7 +27,7 @@ unique

    - + Prototype

    @@ -68,7 +68,7 @@

    - + Description

    @@ -86,14 +86,14 @@ type.

    - + Definition

    Defined in the header file boost/range/algorithm/unique.hpp

    - + Requirements

    @@ -137,7 +137,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique_copy.html b/doc/html/range/reference/algorithms/mutating/unique_copy.html index 209ac02..e0de9fc 100644 --- a/doc/html/range/reference/algorithms/mutating/unique_copy.html +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -28,7 +28,7 @@ unique_copy

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -56,14 +56,14 @@ value type.

    - + Definition

    Defined in the header file boost/range/algorithm/unique_copy.hpp

    - + Requirements

    @@ -117,7 +117,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/copy_n.html b/doc/html/range/reference/algorithms/new/copy_n.html index ffe4dfe..b84b29e 100644 --- a/doc/html/range/reference/algorithms/new/copy_n.html +++ b/doc/html/range/reference/algorithms/new/copy_n.html @@ -27,7 +27,7 @@ copy_n

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -53,14 +53,14 @@ from [boost::begin(rng), boost::begin(rng) + n) to the range [out, out + n)

    - + Definition

    Defined in the header file boost/range/algorithm_ext/copy_n.hpp

    - + Requirements
      @@ -79,7 +79,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/erase.html b/doc/html/range/reference/algorithms/new/erase.html index c6aa933..47a5197 100644 --- a/doc/html/range/reference/algorithms/new/erase.html +++ b/doc/html/range/reference/algorithms/new/erase.html @@ -27,7 +27,7 @@ erase

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -58,14 +58,14 @@ the frequently used combination equivalent to target.erase(std::remove_if(target.begin(), target.end(), pred), target.end());

    - + Definition

    Defined in the header file boost/range/algorithm_ext/erase.hpp

    - + Requirements
    1. @@ -73,7 +73,7 @@ erase of an iterator range.
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/for_each.html b/doc/html/range/reference/algorithms/new/for_each.html index 41fe5ab..c9c5db1 100644 --- a/doc/html/range/reference/algorithms/new/for_each.html +++ b/doc/html/range/reference/algorithms/new/for_each.html @@ -27,7 +27,7 @@ for_each

    - + Prototype

    @@ -72,7 +72,7 @@

    - + Description

    @@ -88,14 +88,14 @@ It is safe to call this function with unequal length ranges.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/for_each.hpp

    - + Requirements
      @@ -125,7 +125,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/insert.html b/doc/html/range/reference/algorithms/new/insert.html index 0ed5479..013ca65 100644 --- a/doc/html/range/reference/algorithms/new/insert.html +++ b/doc/html/range/reference/algorithms/new/insert.html @@ -27,7 +27,7 @@ insert

    - + Prototype

    @@ -44,7 +44,7 @@

    - + Description

    @@ -54,14 +54,14 @@ target.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/insert.hpp

    - + Requirements
      @@ -81,7 +81,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/iota.html b/doc/html/range/reference/algorithms/new/iota.html index e346957..00613b2 100644 --- a/doc/html/range/reference/algorithms/new/iota.html +++ b/doc/html/range/reference/algorithms/new/iota.html @@ -27,7 +27,7 @@ iota

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -50,14 +50,14 @@ + boost::distance(boost::begin(rng), it)

    - + Definition

    Defined in the header file boost/range/algorithm_ext/iota.hpp

    - + Requirements
      @@ -72,7 +72,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/is_sorted.html b/doc/html/range/reference/algorithms/new/is_sorted.html index 18f5846..167665d 100644 --- a/doc/html/range/reference/algorithms/new/is_sorted.html +++ b/doc/html/range/reference/algorithms/new/is_sorted.html @@ -27,7 +27,7 @@ is_sorted

    - + Prototype

    @@ -42,7 +42,7 @@

    - + Description

    @@ -58,14 +58,14 @@ is true.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/is_sorted.hpp

    - + Requirements
      @@ -85,7 +85,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/overwrite.html b/doc/html/range/reference/algorithms/new/overwrite.html index 6d90fcf..3ef0cfb 100644 --- a/doc/html/range/reference/algorithms/new/overwrite.html +++ b/doc/html/range/reference/algorithms/new/overwrite.html @@ -27,7 +27,7 @@ overwrite

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -52,14 +52,14 @@ into the range to.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/overwrite.hpp

    - + Requirements
      @@ -86,7 +86,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/push_back.html b/doc/html/range/reference/algorithms/new/push_back.html index 6b67c08..b5a0ff1 100644 --- a/doc/html/range/reference/algorithms/new/push_back.html +++ b/doc/html/range/reference/algorithms/new/push_back.html @@ -27,7 +27,7 @@ push_back

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -52,14 +52,14 @@ to the back of the container target.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/push_back.hpp

    - + Requirements
      @@ -79,7 +79,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/push_front.html b/doc/html/range/reference/algorithms/new/push_front.html index 7413640..a8b3381 100644 --- a/doc/html/range/reference/algorithms/new/push_front.html +++ b/doc/html/range/reference/algorithms/new/push_front.html @@ -27,7 +27,7 @@ push_front

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -52,14 +52,14 @@ to the front of the container target.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/push_front.hpp

    - + Requirements
      @@ -79,7 +79,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/remove_erase.html b/doc/html/range/reference/algorithms/new/remove_erase.html index 0dc0e23..6dd59be 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase.html +++ b/doc/html/range/reference/algorithms/new/remove_erase.html @@ -27,7 +27,7 @@ remove_erase

    - + Prototype

    @@ -40,7 +40,7 @@

    - + Description

    @@ -50,14 +50,14 @@ algorithm which merely rearranges elements.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/erase.hpp

    - + Requirements
    1. @@ -65,7 +65,7 @@ erase of an iterator range.
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new/remove_erase_if.html b/doc/html/range/reference/algorithms/new/remove_erase_if.html index 4c42049..ab20e8f 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -28,7 +28,7 @@ remove_erase_if

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -52,14 +52,14 @@ algorithm which merely rearranges elements.

    - + Definition

    Defined in the header file boost/range/algorithm_ext/erase.hpp

    - + Requirements
      @@ -73,7 +73,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html index 9bc5d43..4bece6d 100644 --- a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -28,7 +28,7 @@ adjacent_find

    - + Prototype

    @@ -77,7 +77,7 @@

    - + Description

    @@ -98,14 +98,14 @@ is true.

    - + Definition

    Defined in the header file boost/range/algorithm/adjacent_find.hpp

    - + Requirements

    @@ -143,7 +143,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/binary_search.html b/doc/html/range/reference/algorithms/non_mutating/binary_search.html index 01bdb29..fcbbbbb 100644 --- a/doc/html/range/reference/algorithms/non_mutating/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -28,7 +28,7 @@ binary_search

    - + Prototype

    @@ -43,7 +43,7 @@

    - + Description

    @@ -53,14 +53,14 @@ range rng.

    - + Definition

    Defined in the header file boost/range/algorithm/binary_search.hpp

    - + Requirements

    @@ -111,7 +111,7 @@

    - + Precondition:

    @@ -129,7 +129,7 @@ order according to the function object pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/count.html b/doc/html/range/reference/algorithms/non_mutating/count.html index c84ad1c..e1b7195 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count.html +++ b/doc/html/range/reference/algorithms/non_mutating/count.html @@ -27,7 +27,7 @@ count

    - + Prototype

    @@ -44,7 +44,7 @@

    - + Description

    @@ -54,14 +54,14 @@ is true.

    - + Definition

    Defined in the header file boost/range/algorithm/count.hpp

    - + Requirements
      @@ -84,7 +84,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/count_if.html b/doc/html/range/reference/algorithms/non_mutating/count_if.html index 825af0a..53b05ad 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -28,7 +28,7 @@ count_if

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -51,14 +51,14 @@ is true.

    - + Definition

    Defined in the header file boost/range/algorithm/count_if.hpp

    - + Requirements
      @@ -81,7 +81,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index 371bf4b..6f0e022 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal.html @@ -27,7 +27,7 @@ equal

    - + Prototype

    @@ -52,7 +52,7 @@

    - + Description

    @@ -70,14 +70,14 @@ considered equal in the predicate version if pred(x,y) is true.

    - + Definition

    Defined in the header file boost/range/algorithm/equal.hpp

    - + Requirements

    @@ -138,7 +138,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal_range.html b/doc/html/range/reference/algorithms/non_mutating/equal_range.html index 5b5d7b8..7aa0fc1 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -28,7 +28,7 @@ equal_range

    - + Prototype

    @@ -71,7 +71,7 @@

    - + Description

    @@ -85,14 +85,14 @@ is determined by pred.

    - + Definition

    Defined in the header file boost/range/algorithm/equal_range.hpp

    - + Requirements

    @@ -143,7 +143,7 @@

    - + Precondition:

    @@ -155,7 +155,7 @@ is ordered in ascending order according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/find.html b/doc/html/range/reference/algorithms/non_mutating/find.html index 23ae0cc..485e44a 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find.html +++ b/doc/html/range/reference/algorithms/non_mutating/find.html @@ -27,7 +27,7 @@ find

    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -59,14 +59,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/find.hpp

    - + Requirements
      @@ -87,7 +87,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/find_end.html b/doc/html/range/reference/algorithms/non_mutating/find_end.html index a3c2e03..f11bb47 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -28,7 +28,7 @@ find_end

    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -81,14 +81,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/find_end.hpp

    - + Requirements

    @@ -148,7 +148,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/find_first_of.html b/doc/html/range/reference/algorithms/non_mutating/find_first_of.html index 8879c90..972690f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_first_of.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_first_of.html @@ -28,7 +28,7 @@ find_first_of

    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -86,14 +86,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/find_first_of.hpp

    - + Requirements

    @@ -147,7 +147,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/find_if.html b/doc/html/range/reference/algorithms/non_mutating/find_if.html index cac2242..59ab8d3 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -28,7 +28,7 @@ find_if

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -64,14 +64,14 @@ defines found in the same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/find_if.hpp

    - + Requirements
      @@ -90,7 +90,7 @@
    - + Precondition:

    @@ -98,7 +98,7 @@ rng, *i is in the domain of UnaryPredicate.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/for_each.html b/doc/html/range/reference/algorithms/non_mutating/for_each.html index 8e10027..7d8792f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -28,7 +28,7 @@ for_each

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -59,14 +59,14 @@ fun(x).

    - + Definition

    Defined in the header file boost/range/algorithm/for_each.hpp

    - + Requirements
      @@ -90,7 +90,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html index e1b9898..e3e37ef 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -28,7 +28,7 @@ lexicographical_compare

    - + Prototype

    @@ -53,7 +53,7 @@

    - + Description

    @@ -73,14 +73,14 @@ predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/lexicographical_compare.hpp

    - + Requirements

    @@ -145,7 +145,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html index aec7685..f18a5bc 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -28,7 +28,7 @@ lower_bound

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -72,14 +72,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/lower_bound.hpp

    - + Requirements

    @@ -130,7 +130,7 @@

    - + Precondition:

    @@ -148,7 +148,7 @@ order according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/max_element.html b/doc/html/range/reference/algorithms/non_mutating/max_element.html index 83a3f13..9216f88 100644 --- a/doc/html/range/reference/algorithms/non_mutating/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -28,7 +28,7 @@ max_element

    - + Prototype

    @@ -84,7 +84,7 @@

    - + Description

    @@ -98,14 +98,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/max_element.hpp

    - + Requirements

    @@ -142,7 +142,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/min_element.html b/doc/html/range/reference/algorithms/non_mutating/min_element.html index f9df12d..4abd6a8 100644 --- a/doc/html/range/reference/algorithms/non_mutating/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -28,7 +28,7 @@ min_element

    - + Prototype

    @@ -84,7 +84,7 @@

    - + Description

    @@ -98,14 +98,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/min_element.hpp

    - + Requirements

    @@ -142,7 +142,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/mismatch.html b/doc/html/range/reference/algorithms/non_mutating/mismatch.html index ed7efa3..d740dce 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -28,7 +28,7 @@ mismatch

    - + Prototype

    @@ -106,7 +106,7 @@

    - + Description

    @@ -118,14 +118,14 @@ Equality is determined by operator== for non-predicate versions of mismatch, and by satisfying pred in the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/mismatch.hpp

    - + Requirements

    @@ -186,14 +186,14 @@

    - + Precondition:

    distance(rng2) >= distance(rng1)

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/search.html b/doc/html/range/reference/algorithms/non_mutating/search.html index 43f010f..9746802 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -28,7 +28,7 @@ search

    - + Prototype

    @@ -96,7 +96,7 @@

    - + Description

    @@ -115,14 +115,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/search.hpp

    - + Requirements

    @@ -183,7 +183,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/search_n.html b/doc/html/range/reference/algorithms/non_mutating/search_n.html index 0c84f36..2b94b7f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search_n.html +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -28,7 +28,7 @@ search_n

    - + Prototype

    @@ -55,7 +55,7 @@

    - + Description

    @@ -64,14 +64,14 @@ and by a predicate when one is supplied.

    - + Definition

    Defined in the header file boost/range/algorithm/search_n.hpp

    - + Requirements

    @@ -125,7 +125,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html index 0405255..1bf73d6 100644 --- a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -28,7 +28,7 @@ upper_bound

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -71,14 +71,14 @@ same manner as the returned iterator described above.

    - + Definition

    Defined in the header file boost/range/algorithm/upper_bound.hpp

    - + Requirements

    @@ -129,7 +129,7 @@

    - + Precondition:

    @@ -147,7 +147,7 @@ order according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/numeric/accumulate.html b/doc/html/range/reference/algorithms/numeric/accumulate.html index b588227..4ba0962 100644 --- a/doc/html/range/reference/algorithms/numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/numeric/accumulate.html @@ -27,7 +27,7 @@ accumulate

    - + Prototype

    @@ -52,7 +52,7 @@

    - + Description

    @@ -63,18 +63,18 @@ The return value is the resultant value of the above algorithm.

    - + Definition

    Defined in the header file boost/range/numeric.hpp

    - + Requirements
    - + For the first version
    @@ -99,7 +99,7 @@
    - + For the second version
    @@ -133,7 +133,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html index 3f7c169..5dff5f8 100644 --- a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -28,7 +28,7 @@ adjacent_difference

    - + Prototype

    @@ -55,7 +55,7 @@

    - + Description

    @@ -69,18 +69,18 @@ instead of operator-().

    - + Definition

    Defined in the header file boost/range/numeric.hpp

    - + Requirements
    - + For the first version
    @@ -111,7 +111,7 @@
    - + For the second version
    @@ -146,7 +146,7 @@
    - + Precondition:

    @@ -154,7 +154,7 @@ + distance(rng)) is a valid range.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/numeric/inner_product.html b/doc/html/range/reference/algorithms/numeric/inner_product.html index 30046e1..7872880 100644 --- a/doc/html/range/reference/algorithms/numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -28,7 +28,7 @@ inner_product

    - + Prototype

    @@ -54,7 +54,7 @@

    - + Description

    @@ -67,18 +67,18 @@ algorithm please see inner_product.

    - + Definition

    Defined in the header file boost/range/numeric.hpp

    - + Requirements
    - + For the first version
    @@ -113,7 +113,7 @@
    - + For the second version
    @@ -162,14 +162,14 @@
    - + Precondition:

    distance(rng2) >= distance(rng1) is a valid range.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/numeric/partial_sum.html b/doc/html/range/reference/algorithms/numeric/partial_sum.html index e4f548c..cddd838 100644 --- a/doc/html/range/reference/algorithms/numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -28,7 +28,7 @@ partial_sum

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -58,18 +58,18 @@ in the same manner as std::partial_sum(boost::begin(rng), boost::end(rng), out_it). See partial_sum.

    - + Definition

    Defined in the header file boost/range/numeric.hpp

    - + Requirements
    - + For the first version
    @@ -99,7 +99,7 @@
    - + For the second version
    @@ -128,7 +128,7 @@
    - + Precondition:

    @@ -136,7 +136,7 @@ + distance(rng)) is a valid range.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/permutation/next_permutation.html b/doc/html/range/reference/algorithms/permutation/next_permutation.html index b9c73d4..3f23383 100644 --- a/doc/html/range/reference/algorithms/permutation/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -28,7 +28,7 @@ next_permutation

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -67,14 +67,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/permutation.hpp

    - + Requirements

    @@ -125,7 +125,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/permutation/prev_permutation.html b/doc/html/range/reference/algorithms/permutation/prev_permutation.html index 3e74632..3cb4d46 100644 --- a/doc/html/range/reference/algorithms/permutation/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -28,7 +28,7 @@ prev_permutation

    - + Prototype

    @@ -49,7 +49,7 @@

    - + Description

    @@ -67,14 +67,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/permutation.hpp

    - + Requirements

    @@ -125,7 +125,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index c268cc7..d03a126 100644 --- a/doc/html/range/reference/algorithms/set/includes.html +++ b/doc/html/range/reference/algorithms/set/includes.html @@ -27,7 +27,7 @@ includes

    - + Prototype

    @@ -47,7 +47,7 @@

    - + Description

    @@ -59,14 +59,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    - + Requirements

    @@ -144,7 +144,7 @@

    - + Precondition:

    @@ -162,7 +162,7 @@ according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/set_difference.html b/doc/html/range/reference/algorithms/set/set_difference.html index d4e8698..3084d87 100644 --- a/doc/html/range/reference/algorithms/set/set_difference.html +++ b/doc/html/range/reference/algorithms/set/set_difference.html @@ -27,7 +27,7 @@ set_difference

    - + Prototype

    @@ -56,7 +56,7 @@

    - + Description

    @@ -70,14 +70,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    - + Requirements

    @@ -163,7 +163,7 @@

    - + Precondition:

    @@ -181,7 +181,7 @@ according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/set_intersection.html b/doc/html/range/reference/algorithms/set/set_intersection.html index 1314edd..a817f35 100644 --- a/doc/html/range/reference/algorithms/set/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -28,7 +28,7 @@ set_intersection

    - + Prototype

    @@ -57,7 +57,7 @@

    - + Description

    @@ -71,14 +71,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    - + Requirements

    @@ -164,7 +164,7 @@

    - + Precondition:

    @@ -182,7 +182,7 @@ according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html index ae951ce..659877c 100644 --- a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -28,7 +28,7 @@ set_symmetric_difference

    - + Prototype

    @@ -59,7 +59,7 @@

    - + Description

    @@ -75,14 +75,14 @@ the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    - + Requirements

    @@ -168,7 +168,7 @@

    - + Precondition:

    @@ -186,7 +186,7 @@ according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/set_union.html b/doc/html/range/reference/algorithms/set/set_union.html index 1384bcd..ccc1783 100644 --- a/doc/html/range/reference/algorithms/set/set_union.html +++ b/doc/html/range/reference/algorithms/set/set_union.html @@ -27,7 +27,7 @@ set_union

    - + Prototype

    @@ -56,7 +56,7 @@

    - + Description

    @@ -69,14 +69,14 @@ in the predicate versions.

    - + Definition

    Defined in the header file boost/range/algorithm/set_algorithm.hpp

    - + Requirements

    @@ -162,7 +162,7 @@

    - + Precondition:

    @@ -180,7 +180,7 @@ according to pred.

    - + Complexity

    diff --git a/doc/html/range/reference/concept_implementation.html b/doc/html/range/reference/concept_implementation.html new file mode 100644 index 0000000..0d150f3 --- /dev/null +++ b/doc/html/range/reference/concept_implementation.html @@ -0,0 +1,48 @@ + + + +Range concept implementation + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +


    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/concept_implementation/overview.html b/doc/html/range/reference/concept_implementation/overview.html new file mode 100644 index 0000000..d0c35e1 --- /dev/null +++ b/doc/html/range/reference/concept_implementation/overview.html @@ -0,0 +1,68 @@ + + + +Overview + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + Three types of objects are currently supported by the library: +

    +
      +
    • + standard-like containers +
    • +
    • std::pair<iterator,iterator>
    • +
    • + 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. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/concept_implementation/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html new file mode 100644 index 0000000..1493f51 --- /dev/null +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -0,0 +1,163 @@ + + + +Semantics + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +
    + + notation +
    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + 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* +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/concept_implementation/semantics/functions.html b/doc/html/range/reference/concept_implementation/semantics/functions.html new file mode 100644 index 0000000..0c0ef81 --- /dev/null +++ b/doc/html/range/reference/concept_implementation/semantics/functions.html @@ -0,0 +1,408 @@ + + + +Functions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Return type +

    +
    +

    + Returns +

    +
    +

    + Complexity +

    +
    +

    + begin(x) +

    +
    +

    + range_iterator<X>::type +

    +
    +

    + p.first if p + is of type std::pair<T> a + if a is an + array range_begin(x) if that expression would invoke + a function found by ADL t.begin() otherwise +

    +
    +

    + constant time +

    +
    +

    + end(x) +

    +
    +

    + range_iterator<X>::type +

    +
    +

    + p.second if p + is of type std::pair<T> a + + sz + if a is an + array of size sz + range_end(x) + if that expression would invoke a function found by ADL t.end() + otherwise +

    +
    +

    + constant time +

    +
    +

    + empty(x) +

    +
    +

    + bool +

    +
    +

    + boost::begin(x) + == boost::end(x) +

    +
    +

    + constant time +

    +
    +

    + distance(x) +

    +
    +

    + range_difference<X>::type +

    +
    +

    + std::distance(boost::begin(x),boost::end(x)) +

    +
    +

    + - +

    +
    +

    + size(x) +

    +
    +

    + range_difference<X>::type +

    +
    +

    + boost::end(x) + - boost::begin(x) +

    +
    +

    + constant time +

    +
    +

    + rbegin(x) +

    +
    +

    + range_reverse_iterator<X>::type +

    +
    +

    + range_reverse_iterator<X>::type(boost::end(x)) +

    +
    +

    + constant time +

    +
    +

    + rend(x) +

    +
    +

    + range_reverse_iterator<X>::type +

    +
    +

    + range_reverse_iterator<X>::type(boost::begin(x)) +

    +
    +

    + constant time +

    +
    +

    + const_begin(x) +

    +
    +

    + range_iterator<const + X>::type +

    +
    +

    + range_iterator<const + X>::type(boost::begin(x)) +

    +
    +

    + constant time +

    +
    +

    + const_end(x) +

    +
    +

    + range_iterator<const + X>::type +

    +
    +

    + range_iterator<const + X>::type(boost::end(x)) +

    +
    +

    + constant time +

    +
    +

    + const_rbegin(x) +

    +
    +

    + range_reverse_iterator<const + X>::type +

    +
    +

    + range_reverse_iterator<const + X>::type(boost::rbegin(x)) +

    +
    +

    + constant time +

    +
    +

    + const_rend(x) +

    +
    +

    + range_reverse_iterator<const + X>::type +

    +
    +

    + range_reverse_iterator<const + X>::type(boost::rend(x)) +

    +
    +

    + constant time +

    +
    +

    + as_literal(x) +

    +
    +

    + iterator_range<U> where U + is Char* + if x is a pointer + to a string and U + is range_iterator<X>::type + otherwise +

    +
    +

    + [s,s + + std::char_traits<X>::length(s)) if s + is a Char* + or an array of Char + [boost::begin(x),boost::end(x)) otherwise +

    +
    +

    + linear time for pointers to a string or arrays of Char, constant time otherwise +

    +
    +

    + as_array(x) +

    +
    +

    + iterator_range<X> +

    +
    +

    + [boost::begin(x),boost::end(x)) +

    +
     
    +

    + The special const_-named + functions are useful when you want to document clearly that your code + is read-only. +

    +

    + as_literal() + can be used internally + in string algorithm libraries such that arrays of characters are handled + correctly. +

    +

    + as_array() + can be used with string algorithm libraries to make it clear that arrays + of characters are handled like an array and not like a string. +

    +

    + Notice that the above functions should always be called with qualification + (boost::) + to prevent unintended + Argument Dependent Lookup (ADL). +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/concept_implementation/semantics/metafunctions.html b/doc/html/range/reference/concept_implementation/semantics/metafunctions.html new file mode 100644 index 0000000..779a3b7 --- /dev/null +++ b/doc/html/range/reference/concept_implementation/semantics/metafunctions.html @@ -0,0 +1,236 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Return type +

    +
    +

    + Complexity +

    +
    +

    + range_iterator<X>::type +

    +
    +

    + +

    +
    T::iterator
    +P::first_type
    +A*
    +
    +

    +

    +
    +

    + compile time +

    +
    +

    + range_iterator<const + X>::type +

    +
    +

    + +

    +
    T::const_iterator
    +P::first_type
    +const A*
    +
    +

    +

    +
    +

    + compile time +

    +
    +

    + range_value<X>::type +

    +
    +

    + boost::iterator_value<range_iterator<X>::type>::type +

    +
    +

    + compile time +

    +
    +

    + range_reference<X>::type +

    +
    +

    + boost::iterator_reference<range_iterator<X>::type>::type +

    +
    +

    + compile time +

    +
    +

    + range_pointer<X>::type +

    +
    +

    + boost::iterator_pointer<range_iterator<X>::type>::type +

    +
    +

    + compile time +

    +
    +

    + range_category<X>::type +

    +
    +

    + boost::iterator_category<range_iterator<X>::type>::type +

    +
    +

    + compile time +

    +
    +

    + range_difference<X>::type +

    +
    +

    + boost::iterator_category<range_iterator<X>::type>::type +

    +
    +

    + compile time +

    +
    +

    + range_reverse_iterator<X>::type +

    +
    +

    + boost::reverse_iterator<range_iterator<X>::type> +

    +
    +

    + compile time +

    +
    +

    + range_reverse_iterator<const + X>::type +

    +
    +

    + boost::reverse_iterator<range_iterator<const X>::type +

    +
    +

    + compile time +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/concept_implementation/synopsis.html b/doc/html/range/reference/concept_implementation/synopsis.html new file mode 100644 index 0000000..9dffad1 --- /dev/null +++ b/doc/html/range/reference/concept_implementation/synopsis.html @@ -0,0 +1,185 @@ + + + +Synopsis + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + +

    +
    namespace boost
    +{
    +    //
    +    // Single Pass Range metafunctions
    +    //
    +
    +    template< class T >
    +    struct range_iterator;
    +
    +    template< class T >
    +    struct range_value;
    +
    +    template< class T >
    +    struct range_reference;
    +    
    +    template< class T >
    +    struct range_pointer;
    +    
    +    template< class T >
    +    struct range_category;
    +
    +    //
    +    // Forward Range metafunctions
    +    //
    +
    +    template< class T >
    +    struct range_difference;
    +
    +    //
    +    // Bidirectional Range metafunctions
    +    //
    +
    +    template< class T >
    +    struct range_reverse_iterator;
    +
    +    //
    +    // Single Pass Range functions
    +    //
    +
    +    template< class T >
    +    typename range_iterator<T>::type
    +    begin( T& r );
    +
    +    template< class T >
    +    typename range_iterator<const T>::type
    +    begin( const T& r );
    +
    +    template< class T >
    +    typename range_iterator<T>::type
    +    end( T& r );
    +
    +    template< class T >
    +    typename range_iterator<const T>::type
    +    end( const T& r );
    +
    +    template< class T >
    +    bool
    +    empty( const T& r );
    +
    +    //
    +    // Forward Range functions
    +    //
    +
    +    template< class T >
    +    typename range_difference<T>::type
    +    distance( const T& r );
    +
    +    //
    +    // Bidirectional Range functions
    +    //
    +
    +    template< class T >
    +    typename range_reverse_iterator<T>::type
    +    rbegin( T& r );
    +
    +    template< class T >
    +    typename range_reverse_iterator<const T>::type
    +    rbegin( const T& r );
    +
    +    template< class T >
    +    typename range_reverse_iterator<T>::type
    +    rend( T& r );
    +
    +    template< class T >
    +    typename range_reverse_iterator<const T>::type
    +    rend( const T& r );
    +    
    +    //
    +    // Random Access Range functions
    +    //
    +    
    +    template< class T >
    +    typename range_difference<T>::type
    +    size( const T& r );
    +
    +    //
    +    // Special const Range functions
    +    //
    +
    +    template< class T >
    +    typename range_iterator<const T>::type 
    +    const_begin( const T& r );
    +
    +    template< class T >
    +    typename range_iterator<const T>::type 
    +    const_end( const T& r );
    +
    +    template< class T >
    +    typename range_reverse_iterator<const T>::type 
    +    const_rbegin( const T& r );
    +
    +    template< class T >
    +    typename range_reverse_iterator<const T>::type 
    +    const_rend( const T& r );
    +    
    +    //
    +    // String utilities
    +    //
    +    
    +    template< class T >
    +    iterator_range< ... see below ... >
    +    as_literal( T& r );
    +    
    +    template< class T >
    +    iterator_range< ... see below ... >
    +    as_literal( const T& r );
    +    
    +    template< class T >
    +    iterator_range< typename range_iterator<T>::type >
    +    as_array( T& r );
    +    
    +    template< class T >
    +    iterator_range< typename range_iterator<const T>::type >
    +    as_array( const T& r );
    +
    +} // namespace 'boost' 
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html deleted file mode 100644 index fb1226b..0000000 --- a/doc/html/range/reference/overview.html +++ /dev/null @@ -1,68 +0,0 @@ - - - -Overview - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -

    - Three types of objects are currently supported by the library: -

    -
      -
    • - standard-like containers -
    • -
    • std::pair<iterator,iterator>
    • -
    • - 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. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index c7e564a..566a7f2 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -27,7 +27,7 @@ counting_range
    - + Prototype

    @@ -48,7 +48,7 @@

    - + Description

    @@ -58,14 +58,14 @@ (from Boost.Iterator).

    - + Definition

    Defined in header file boost/range/counting_range.hpp

    - + Requirements
    1. diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index 93df52c..358791b 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -27,24 +27,24 @@ irange
    - + Prototype

    template<class Integer>
    -integer_range< range_detail::integer_iterator<Integer> >
    +iterator_range< range_detail::integer_iterator<Integer> >
     irange(Integer first, Integer  last);
     
     template<class Integer, class StepSize>
    -integer_range< range_detail::integer_iterator_with_step<Integer, StepSize> >
    +iterator_range< range_detail::integer_iterator_with_step<Integer, StepSize> >
     irange(Integer first, Integer last, StepSize step_size);
     

    - + Description

    @@ -58,14 +58,14 @@ parameters denoted a half-open range.

    - + Definition

    Defined in the header file boost/range/irange.hpp

    - + Requirements
      @@ -79,7 +79,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 5e8c62b..eda91a4 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -27,7 +27,7 @@ istream_range

    - + Prototype

    @@ -40,7 +40,7 @@

    - + Description

    @@ -49,7 +49,7 @@ wrapping a std::istream_iterator.

    - + Definition

    diff --git a/doc/html/range/reference/semantics.html b/doc/html/range/reference/semantics.html deleted file mode 100644 index a547b72..0000000 --- a/doc/html/range/reference/semantics.html +++ /dev/null @@ -1,163 +0,0 @@ - - - -Semantics - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -


    -
    -PrevUpHomeNext -
    -
    - - -
    - - notation -
    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - 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* -

    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index 525d1c2..a0fc0c0 100644 --- a/doc/html/range/reference/utilities/iterator_range.html +++ b/doc/html/range/reference/utilities/iterator_range.html @@ -48,7 +48,7 @@ type.

    - + Synopsis

    @@ -188,7 +188,7 @@ iterators from the same container.

    - + Details member functions
    @@ -220,7 +220,7 @@

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index 88e4ab9..349f282 100644 --- a/doc/html/range/reference/utilities/join.html +++ b/doc/html/range/reference/utilities/join.html @@ -39,7 +39,7 @@ check if the end of a range has been reached internally during traversal.

    - + Synposis

    @@ -65,7 +65,7 @@

    - + Example

    diff --git a/doc/html/range/reference/utilities/sub_range.html b/doc/html/range/reference/utilities/sub_range.html index 2fbf85a..8c75a91 100644 --- a/doc/html/range/reference/utilities/sub_range.html +++ b/doc/html/range/reference/utilities/sub_range.html @@ -35,7 +35,7 @@ is.

    - + Synopsis

    diff --git a/doc/html/range/upgrade/upgrade_from_1_34.html b/doc/html/range/upgrade/upgrade_from_1_34.html index dfc4c52..1275e9c 100644 --- a/doc/html/range/upgrade/upgrade_from_1_34.html +++ b/doc/html/range/upgrade/upgrade_from_1_34.html @@ -33,12 +33,11 @@

    1. Direct support for character arrays was abandoned in favor of uniform treatment - of all arrays. Instead string algorithms can use the new function as_literal(). + of all arrays. Instead string algorithms can use the new function as_literal().
    2. -size - now requires a Random - Access Range. The old behavior is provided as distance(). +size now requires a Random + Access Range. The old behavior is provided as distance().
    3. range_size<T>::type has been completely removed in favor diff --git a/doc/reference.qbk b/doc/reference.qbk index 25500d0..76e210e 100644 --- a/doc/reference.qbk +++ b/doc/reference.qbk @@ -1,8 +1,12 @@ [section:reference Reference] [include reference/overview.qbk] + +[section:concept_implementation Range concept implementation] [include reference/synopsis.qbk] [include reference/semantics.qbk] +[endsect] + [include reference/adaptors.qbk] [include reference/algorithms.qbk] [include reference/ranges.qbk] diff --git a/doc/reference/adaptors.qbk b/doc/reference/adaptors.qbk index 22df03c..1b3fd9f 100644 --- a/doc/reference/adaptors.qbk +++ b/doc/reference/adaptors.qbk @@ -121,30 +121,6 @@ In other words: [endsect] -[section:adaptors_synopsis Synopsis] - -The library provides the following Adapter Generator expressions: - -`` -rng | boost::adaptors::adjacent_filtered(bi_pred) -rng | boost::adaptors::copied(n,m) -rng | boost::adaptors::filtered(pred) -rng | boost::adaptors::indexed -rng | boost::adaptors::indirected -rng | boost::adaptors::map_keys -rng | boost::adaptors::map_values -rng | boost::adaptors::replaced(new_value, old_value) -rng | boost::adaptors::replaced_if(pred, new_value) -rng | boost::adaptors::reversed -rng | boost::adaptors::sliced(n, m) -rng | boost::adaptors::strided(n) -rng | boost::adaptors::tokenized( ) -rng | boost::adaptors::transformed(fun) -rng | boost::adaptors::uniqued -`` - -[endsect] - [section:general_requirements General Requirements] In the description of generator expressions, the following notation is used: diff --git a/doc/reference/adaptors/adjacent_filtered.qbk b/doc/reference/adaptors/adjacent_filtered.qbk index 933536d..1502d3b 100644 --- a/doc/reference/adaptors/adjacent_filtered.qbk +++ b/doc/reference/adaptors/adjacent_filtered.qbk @@ -9,7 +9,8 @@ * [*Precondition:] The `value_type` of the range is convertible to both argument types of `bi_pred`. * [*Postcondition:] For all adjacent elements `[x,y]` in the returned range, `bi_pred(x,y)` is `true`. * [*Throws:] Whatever the copy constructor of `bi_pred` might throw. -* [*Range Category:] `SinglePassRange` +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The minimum of the range category of `rng` and __forward_range__ [section:adjacent_filtered_example adjacent_filtered example] `` diff --git a/doc/reference/adaptors/copied.qbk b/doc/reference/adaptors/copied.qbk index 263286c..dbdeb4b 100644 --- a/doc/reference/adaptors/copied.qbk +++ b/doc/reference/adaptors/copied.qbk @@ -8,7 +8,8 @@ * [*Precondition:] `0 <= n && n <= m && m < distance(rng)` * [*Returns:] A new `iterator_range` that holds the sliced range `[n,m)` of the original range. -* [*Range Category:] `RandomAccessRange` +* [*Range Category:] __random_access_range__ +* [*Returned Range Category:] __random_access_range__ [section:copied_example copied example] `` diff --git a/doc/reference/adaptors/filtered.qbk b/doc/reference/adaptors/filtered.qbk index 2a6dc33..02c826f 100644 --- a/doc/reference/adaptors/filtered.qbk +++ b/doc/reference/adaptors/filtered.qbk @@ -9,8 +9,8 @@ * [*Precondition:] The `value_type` of the range is convertible to the argument type of `pred`. * [*Postcondition:] For all adjacent elements `[x]` in the returned range, `pred(x)` is `true`. * [*Throws:] Whatever the copy constructor of `pred` might throw. -* [*Range Category:] `ForwardRange` -* [*Returned Range Category:] `ForwardRange` +* [*Range Category:] __forward_range__ +* [*Returned Range Category:] The minimum of the range category of `rng` and __bidirectional_range__ [section:filtered_example filtered example] `` diff --git a/doc/reference/adaptors/indexed.qbk b/doc/reference/adaptors/indexed.qbk index 36dfd88..f6eb23e 100644 --- a/doc/reference/adaptors/indexed.qbk +++ b/doc/reference/adaptors/indexed.qbk @@ -7,7 +7,8 @@ ] * [*Returns:] A range adapted to return both the element and the associated index. The returned range consists of iterators that have in addition to the usual iterator member functions an `index()` member function that returns the appropriate index for the element in the sequence corresponding with the iterator. -* [*Range Category:] `SinglePassRange` +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The range category of `rng` [section:indexed_example indexed example] `` diff --git a/doc/reference/adaptors/indirected.qbk b/doc/reference/adaptors/indirected.qbk index f0cbd7a..44182fb 100644 --- a/doc/reference/adaptors/indirected.qbk +++ b/doc/reference/adaptors/indirected.qbk @@ -8,7 +8,8 @@ * [*Precondition:] The `value_type` of the range defines unary `operator*()` * [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `*y` where `y` is the corresponding element in the original range. -* [*Range Category:] `SinglePassRange` +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The range category of `rng` [section:indirected_example indirected example] `` diff --git a/doc/reference/adaptors/map_keys.qbk b/doc/reference/adaptors/map_keys.qbk index 7b29013..831d88f 100644 --- a/doc/reference/adaptors/map_keys.qbk +++ b/doc/reference/adaptors/map_keys.qbk @@ -8,7 +8,8 @@ * [*Precondition:] The `value_type` of the range is an instantiation of `std::pair`. * [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `y.first` where `y` is the corresponding element in the original range. -* [*Range Category:] `SinglePassRange` +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The range category of `rng`. [section:map_keys_example map_keys example] `` diff --git a/doc/reference/adaptors/map_values.qbk b/doc/reference/adaptors/map_values.qbk index 28f75c8..a89b0e3 100644 --- a/doc/reference/adaptors/map_values.qbk +++ b/doc/reference/adaptors/map_values.qbk @@ -8,7 +8,8 @@ * [*Precondition:] The `value_type` of the range is an instantiation of `std::pair`. * [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `y.second` where `y` is the corresponding element in the original range. -* [*Range Category:] `SinglePassRange` +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The range category of `rng`. [section:map_values_example map_values example] `` diff --git a/doc/reference/adaptors/replaced.qbk b/doc/reference/adaptors/replaced.qbk index 92a673b..3fe1cb8 100644 --- a/doc/reference/adaptors/replaced.qbk +++ b/doc/reference/adaptors/replaced.qbk @@ -10,7 +10,8 @@ * `new_value` is convertible to the `value_type` of the range. * `old_value` is convertible to the `value_type` of the range. * [*Postcondition:] For all elements `x` in the returned range, the value `x` is equal to the value of `(y == old_value) ? new_value : y` where `y` is the corresponding element in the original range. -* [*Range Category:] `ForwardRange` +* [*Range Category:] __forward_range__ +* [*Returned Range Category:] The range category of `rng`. [section:replaced_example replaced example] `` diff --git a/doc/reference/adaptors/replaced_if.qbk b/doc/reference/adaptors/replaced_if.qbk index b7b7e57..0a67aae 100644 --- a/doc/reference/adaptors/replaced_if.qbk +++ b/doc/reference/adaptors/replaced_if.qbk @@ -10,7 +10,8 @@ * The range `value_type` is convertible to the argument type of `pred`. * `new_value` is convertible to the `value_type` of the range. * [*Postconditions:] For all elements `x` in the returned range, the value `x` is equal to the value of `pred(y) ? new_value : y` where `y` is the corresponding element in the original range. -* [*Range Category:] `ForwardRange` +* [*Range Category:] __forward_range__ +* [*Returned Range Category:] The range category of `rng`. [section:replaced_if_example replaced_if example] `` diff --git a/doc/reference/adaptors/reversed.qbk b/doc/reference/adaptors/reversed.qbk index 4ad623b..56cf141 100644 --- a/doc/reference/adaptors/reversed.qbk +++ b/doc/reference/adaptors/reversed.qbk @@ -7,7 +7,8 @@ ] * [*Returns:] A range whose iterators behave as if they were the original iterators wrapped in `reverse_iterator`. -* [*Range Category:] `BidirectionalRange` +* [*Range Category:] __bidirectional_range__ +* [*Returned Range Category:] The range category of `rng`. [section:reversed_example reversed example] `` diff --git a/doc/reference/adaptors/sliced.qbk b/doc/reference/adaptors/sliced.qbk index e424ddc..275e4a8 100644 --- a/doc/reference/adaptors/sliced.qbk +++ b/doc/reference/adaptors/sliced.qbk @@ -8,7 +8,8 @@ * [*Precondition:] `0 <= n && n <= m && m < distance(rng)` * [*Returns:] `make_range(rng, n, m)` -* [*Range Category:] `RandomAccessRange` +* [*Range Category:] __random_access_range__ +* [*Returned Range Category:] __random_access_range__ [section:sliced_example sliced example] `` diff --git a/doc/reference/adaptors/strided.qbk b/doc/reference/adaptors/strided.qbk index cf2f09f..5b7ddf2 100644 --- a/doc/reference/adaptors/strided.qbk +++ b/doc/reference/adaptors/strided.qbk @@ -8,7 +8,8 @@ * [*Precondition:] `0 <= n && n < distance(rng)` * [*Returns:] A new range based on `rng` where traversal is performed in steps of `n`. -* [*Range Category:] `RandomAccessRange` +* [*Range Category:] __random_access_range__ +* [*Returned Range Category:] __random_access_range__ [section:strided_example strided example] `` diff --git a/doc/reference/adaptors/tokenized.qbk b/doc/reference/adaptors/tokenized.qbk index 7b7504c..2b3a656 100644 --- a/doc/reference/adaptors/tokenized.qbk +++ b/doc/reference/adaptors/tokenized.qbk @@ -35,7 +35,8 @@ * `flags` has the type `regex_constants::syntax_option_type`. * [*Returns:] A range whose iterators behave as if they were the original iterators wrapped in `regex_token_iterator`. The first iterator in the range would be constructed by forwarding all the arguments of `tokenized()` to the `regex_token_iterator` constructor. * [*Throws:] Whatever constructing and copying equivalent `regex_token_iterator`s might throw. -* [*Range Category:] `RandomAccessRange` +* [*Range Category:] __random_access_range__ +* [*Returned Range Category:] __random_access_range__ [endsect] diff --git a/doc/reference/adaptors/transformed.qbk b/doc/reference/adaptors/transformed.qbk index 3b64768..f5bacf9 100644 --- a/doc/reference/adaptors/transformed.qbk +++ b/doc/reference/adaptors/transformed.qbk @@ -9,7 +9,8 @@ * [*Precondition:] The `value_type` of the range is convertible to the argument type of `fun`. * [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `fun(y)` where `y` is the corresponding element in the original range. * [*Throws:] Whatever the copy-constructor of `fun` might throw. -* [*Range Category:] `SinglePassRange` +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The range category of `rng`. [section:transformed_example transformed example] `` diff --git a/doc/reference/adaptors/uniqued.qbk b/doc/reference/adaptors/uniqued.qbk index a90cdde..b7565a0 100644 --- a/doc/reference/adaptors/uniqued.qbk +++ b/doc/reference/adaptors/uniqued.qbk @@ -8,7 +8,8 @@ * [*Precondition:] The `value_type` of the range is comparable with `operator==()`. * [*Postcondition:] For all adjacent elements `[x,y]` in the returned range, `x==y` is false. -* [*Range Category:] `ForwardRange` +* [*Range Category:] __forward_range__ +* [*Returned Range Category:] The minimum of the range concept of `rng` and __forward_range__. [section:uniqued_example uniqued example] `` diff --git a/doc/reference/algorithms.qbk b/doc/reference/algorithms.qbk index 5683f1b..e5c16f7 100644 --- a/doc/reference/algorithms.qbk +++ b/doc/reference/algorithms.qbk @@ -74,7 +74,7 @@ The same task may be accomplished simply with `` boost::erase(vec, boost::unique(vec)); `` -and there is no need to worry about generating an invalid range. Furthermore, if the container is complex, calling `vec.begin()` several times will be more expensive than using a range algorithm. +and there is no need to worry about generating an invalid range. Furthermore, if the container is complex, calling `vec.end()` several times will be more expensive than using a range algorithm. [endsect] diff --git a/doc/reference/ranges/irange.qbk b/doc/reference/ranges/irange.qbk index bd9efc4..a689ec0 100644 --- a/doc/reference/ranges/irange.qbk +++ b/doc/reference/ranges/irange.qbk @@ -4,17 +4,17 @@ `` template -integer_range< range_detail::integer_iterator > +iterator_range< range_detail::integer_iterator > irange(Integer first, Integer last); template -integer_range< range_detail::integer_iterator_with_step > +iterator_range< range_detail::integer_iterator_with_step > irange(Integer first, Integer last, StepSize step_size); `` [heading Description] -`irange` is a function to generate an Integer Range. +`irange` is a function to generate an Integer Range. `irange` allows treating integers as a model of the __random_access_range__ Concept. It should be noted that the `first` and `last` parameters denoted a half-open range.