From 83c89f3038c2ab3779298a526057574a4b648e8d Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 18:09:41 +0000 Subject: [PATCH 01/32] Boost.Range documentation: corrected the Returned Range Category for the uniqued adaptor [SVN r61654] --- doc/html/range/reference/adaptors/reference/uniqued.html | 3 ++- doc/reference/adaptors/uniqued.qbk | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/html/range/reference/adaptors/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html index 65fdc6e..2446ef8 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -89,7 +89,8 @@
  • Returned Range Category: The minimum of the range concept of rng - and Forward Range. + and Bidirectional + Range.
  • diff --git a/doc/reference/adaptors/uniqued.qbk b/doc/reference/adaptors/uniqued.qbk index b7565a0..ffb4d14 100644 --- a/doc/reference/adaptors/uniqued.qbk +++ b/doc/reference/adaptors/uniqued.qbk @@ -9,7 +9,7 @@ * [*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:] __forward_range__ -* [*Returned Range Category:] The minimum of the range concept of `rng` and __forward_range__. +* [*Returned Range Category:] The minimum of the range concept of `rng` and __bidirectional_range__. [section:uniqued_example uniqued example] `` From 1d5fb47238883b801d1b3144fa69d38961a9c57d Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 19:07:47 +0000 Subject: [PATCH 02/32] Boost.Range documentation iteration. [SVN r61660] --- doc/html/index.html | 4 +- .../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/history_ack.html | 4 +- doc/html/range/introduction.html | 97 ++++++-------- doc/html/range/mfc_atl.html | 4 +- .../adaptors/adaptors_reference.html | 75 ----------- .../reference/adaptors/introduction.html | 6 +- .../reference/adaptors/reference/uniqued.html | 3 +- .../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 +- .../concept_implementation/semantics.html | 2 +- .../reference/ranges/counting_range.html | 8 +- doc/html/range/reference/ranges/irange.html | 10 +- .../range/reference/ranges/istream_range.html | 6 +- .../reference/utilities/iterator_range.html | 6 +- doc/html/range/reference/utilities/join.html | 4 +- .../range/reference/utilities/sub_range.html | 2 +- doc/introduction.qbk | 71 +++-------- doc/reference/adaptors/adjacent_filtered.html | 101 --------------- doc/reference/adaptors/copied.html | 93 -------------- doc/reference/adaptors/filtered.html | 108 ---------------- doc/reference/adaptors/indexed.html | 117 ----------------- doc/reference/adaptors/indirected.html | 95 -------------- doc/reference/adaptors/map_keys.html | 99 --------------- doc/reference/adaptors/map_values.html | 98 --------------- doc/reference/adaptors/replaced.html | 107 ---------------- doc/reference/adaptors/replaced_if.html | 114 ----------------- doc/reference/adaptors/reversed.html | 91 -------------- doc/reference/adaptors/sliced.html | 94 -------------- doc/reference/adaptors/strided.html | 94 -------------- doc/reference/adaptors/tokenized.html | 118 ------------------ doc/reference/adaptors/transformed.html | 107 ---------------- doc/reference/adaptors/uniqued.html | 95 -------------- doc/reference/adaptors/uniqued.qbk | 2 +- 111 files changed, 525 insertions(+), 2192 deletions(-) delete mode 100644 doc/html/range/reference/adaptors/adaptors_reference.html delete mode 100755 doc/reference/adaptors/adjacent_filtered.html delete mode 100755 doc/reference/adaptors/copied.html delete mode 100755 doc/reference/adaptors/filtered.html delete mode 100755 doc/reference/adaptors/indexed.html delete mode 100755 doc/reference/adaptors/indirected.html delete mode 100755 doc/reference/adaptors/map_keys.html delete mode 100755 doc/reference/adaptors/map_values.html delete mode 100755 doc/reference/adaptors/replaced.html delete mode 100755 doc/reference/adaptors/replaced_if.html delete mode 100755 doc/reference/adaptors/reversed.html delete mode 100755 doc/reference/adaptors/sliced.html delete mode 100755 doc/reference/adaptors/strided.html delete mode 100755 doc/reference/adaptors/tokenized.html delete mode 100755 doc/reference/adaptors/transformed.html delete mode 100755 doc/reference/adaptors/uniqued.html diff --git a/doc/html/index.html b/doc/html/index.html index f6095bd..e164ebd 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)

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

    - +

    Last revised: April 28, 2010 at 17:51:33 GMT

    Last revised: April 28, 2010 at 19:00:21 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 72c8c28..033d969 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 30d3850..b9db1e4 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 61ec9e8..a57c6ce 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 379410e..6c88e2a 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 32bcef4..5f32a71 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/history_ack.html b/doc/html/range/history_ack.html index 37d497d..9d5d3d6 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/introduction.html b/doc/html/range/introduction.html index 7bedc97..9f1c4e8 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -69,73 +69,48 @@ arrays?) -

    - Below are given a small example (the complete example can be found here - ): -

    +

    + + Example + - Iterate over the values in a map +

    -
    //
    -// 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_size< ForwardReadableWriteableRange >::type
    -my_generic_replace( ForwardReadableWriteableRange& c, const T& value, const T& replacement )
    -{
    -   typename boost::range_iterator< ForwardReadableWriteableRange >::type found = find( c, value );
    -
    -   if( found != boost::end( c ) )
    -       *found = replacement;
    -   return std::distance( boost::begin( c ), found );
    -}
    -
    -//
    -// usage
    -//
    -const int N = 5;
    -std::vector<int> my_vector;
    -int values[] = { 1,2,3,4,5,6,7,8,9 };
    -
    -my_vector.assign( values, boost::end( values ) );
    -typedef std::vector<int>::iterator iterator;
    -std::pair<iterator,iterator>       my_view( boost::begin( my_vector ),
    -                                            boost::begin( my_vector ) + N );
    -char  str_val[] = "a string";
    -char* str       = str_val;
    -
    -std::cout << my_generic_replace( my_vector, 4, 2 );
    -std::cout << my_generic_replace( my_view, 4, 2 );
    -std::cout << my_generic_replace( str, 'a', 'b' );
    -
    -// prints '3', '5' and '0'
    -
    +
    using namespace boost;
    +using namespace boost::adaptors;
    +for_each( my_map | map_values, fn );
    +

    +

    + + Example + - Iterate over the keys in a map +

    +

    + +

    +
    using namespace boost;
    +using namespace boost::adaptors;
    +for_each( my_map | map_keys, fn );
    +
    +

    +

    +

    + + Example + - Push the even values from a map in reverse order into the container target +

    +

    + +

    +
    using namespace boost;
    +using namespace boost::adaptors;
    +// Assume that is_even is a predicate that has been implemented elsewhere...
    +push_back(target, my_map | map_values | filtered(is_even()) | reversed);
    +

    - 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 - about The - Forwarding Problem ).

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index c0f1c6d..8b4ac5b 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_reference.html b/doc/html/range/reference/adaptors/adaptors_reference.html deleted file mode 100644 index d284888..0000000 --- a/doc/html/range/reference/adaptors/adaptors_reference.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -Reference - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -


    -
    -PrevUpHomeNext -
    -
    - - -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/adaptors/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 1982491..6e4781b 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/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/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html index 2446ef8..bc7d2f0 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -89,8 +89,7 @@
  • Returned Range Category: The minimum of the range concept of rng - and Bidirectional - Range. + and __forward_passrange_.
  • diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index a847fc7..4a9912b 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 6cf064d..dece502 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index f4497b6..ac81f7c 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index c5bb9b3..90695dd 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 854c4ac..c4bcea4 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index c1d1266..4c90f5e 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index 5f5da38..11b5e4d 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index 5d09a06..f4fa658 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 7bdf2ff..75d71e8 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index 8d4d6c5..acd871d 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 d66fc41..b068a7e 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 cd13253..9814a4e 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 7938cd3..5ae4453 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 79bd88c..7514afe 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index d94fc5a..0481481 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index de178ea..6491a8e 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index b775716..67afb34 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
    - + 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 3f25b68..404c434 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 95a933c..de07e74 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index abbffc3..60ee7e6 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index a5678bd..5b5e346 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
    - + 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 17607de..3c97ba1 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index 110c753..ec5325b 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index 0ae4ef5..ab30425 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index 34a4b9a..4f0a397 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index b0dc3e4..71ed099 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index 293f540..bbf8b8a 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index ffa09ad..3ec9dd9 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 c12efc0..582128a 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 7f4e1a5..79b0551 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 a9fc9fa..3a26dc8 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index 9247576..22bc5a3 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 961a44f..a2351e6 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 e0de9fc..d3ab9b1 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 b84b29e..3990a4a 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 47a5197..e36ab86 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 c9c5db1..c618c69 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 013ca65..457cdeb 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 00613b2..d9a0bff 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 167665d..fd3db29 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 3ef0cfb..54ac945 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 b5a0ff1..6c28ea9 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 a8b3381..41303af 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 6dd59be..06ee9d1 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 ab20e8f..f4c21e4 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 4bece6d..96a5042 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 fcbbbbb..27d20df 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 e1b7195..bb284dd 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
    - + 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 53b05ad..a52d12e 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index 6f0e022..42b1e37 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 7aa0fc1..3927bf3 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 485e44a..a0071e5 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
    - + 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 f11bb47..74ea668 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 972690f..0709e1e 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 59ab8d3..e57f94b 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
    - + 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 7d8792f..f8cb0c0 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
    - + 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 e3e37ef..fd3973d 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 f18a5bc..7eff1d3 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 9216f88..2ffa24d 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 4abd6a8..577ace5 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 d740dce..a18e3ef 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 9746802..fadef01 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 2b94b7f..92b2fe3 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 1bf73d6..c2ba3ee 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 4ba0962..bbea87e 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 5dff5f8..578a8f0 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 7872880..e9284df 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 cddd838..e0d1cb3 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 3f23383..f6838ea 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 3cb4d46..bf1e432 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 d03a126..45df74c 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 3084d87..5e8f31e 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 a817f35..924d5d5 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 659877c..ab6aec1 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 ccc1783..31d8005 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 1493f51..59e2d98 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 566a7f2..e0079e8 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 358791b..b2683ec 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 eda91a4..d83cfb2 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index a0fc0c0..0391b8f 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 349f282..d0232a3 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 8c75a91..a2362cb 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/introduction.qbk b/doc/introduction.qbk index c25eeae..7fc83df 100644 --- a/doc/introduction.qbk +++ b/doc/introduction.qbk @@ -12,62 +12,27 @@ The main advantages are * more flexible, compact and maintainable client code * safe use of built-in arrays (for legacy code; why else would you use built-in arrays?) -Below are given a small example (the complete example can be found [@http://www.boost.org/libs/range/test/algorithm_example.cpp here] ): - +[heading Example - Iterate over the values in a map] `` - // - // 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_size< ForwardReadableWriteableRange >::type - my_generic_replace( ForwardReadableWriteableRange& c, const T& value, const T& replacement ) - { - typename boost::range_iterator< ForwardReadableWriteableRange >::type found = find( c, value ); - - if( found != boost::end( c ) ) - *found = replacement; - return std::distance( boost::begin( c ), found ); - } - - // - // usage - // - const int N = 5; - std::vector my_vector; - int values[] = { 1,2,3,4,5,6,7,8,9 }; - - my_vector.assign( values, boost::end( values ) ); - typedef std::vector::iterator iterator; - std::pair 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' +using namespace boost; +using namespace boost::adaptors; +for_each( my_map | map_values, fn ); `` -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 about __the_forwarding_problem__ ). +[heading Example - Iterate over the keys in a map] +`` +using namespace boost; +using namespace boost::adaptors; +for_each( my_map | map_keys, fn ); +`` + +[heading Example - Push the even values from a map in reverse order into the container `target`] +`` +using namespace boost; +using namespace boost::adaptors; +// Assume that is_even is a predicate that has been implemented elsewhere... +push_back(target, my_map | map_values | filtered(is_even()) | reversed); +`` [endsect] diff --git a/doc/reference/adaptors/adjacent_filtered.html b/doc/reference/adaptors/adjacent_filtered.html deleted file mode 100755 index a5da75a..0000000 --- a/doc/reference/adaptors/adjacent_filtered.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - -

    - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    adjacent_filtered

    -
    -
                rng | boost::adaptors::adjacent_filtered( bi_pred )
    -        
    -
                boost::make_adjacent_filtered_range( rng, bi_pred )
    -        
    -
    - - -
    -

    Example

    -
    -        #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
    -

    -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/copied.html b/doc/reference/adaptors/copied.html deleted file mode 100755 index 12b3351..0000000 --- a/doc/reference/adaptors/copied.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    copied

    -
    -
    rng | boost::adaptors::copied( n, m )
    -
    boost::make_copied_range( rng, n, m )
    -
    - - -
    -

    Example

    -
    -    #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 -

    -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/filtered.html b/doc/reference/adaptors/filtered.html deleted file mode 100755 index 055c826..0000000 --- a/doc/reference/adaptors/filtered.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    filtered

    -
    -
    rng | boost::adaptors::filtered( pred )
    -
    boost::make_filtered_range( rng, pred )
    -
    - - -
    -

    Example

    -
    -        #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, ","));
    -
    -            return 0;
    -        }
    -    
    -

    - This would produce the output:
    - 2,4,6,8 -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/indexed.html b/doc/reference/adaptors/indexed.html deleted file mode 100755 index 74e0d04..0000000 --- a/doc/reference/adaptors/indexed.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    indexed

    -
    -
    rng | boost::adaptors::indexed
    -
    boost::make_indexed_range( rng )
    -
    - -
    -

    Example

    -
    -        #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));
    -        }
    -        
    -        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 produces 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
    -
    -

    -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/indirected.html b/doc/reference/adaptors/indirected.html deleted file mode 100755 index 0a56e32..0000000 --- a/doc/reference/adaptors/indirected.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    indirected

    -
    -
    rng | boost::adaptors::indirected
    -
    boost::make_indirected_range( rng )
    -
    - - -
    -

    Example

    -
    -        #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 produces the output:
    - 0,1,2,3,4,5,6,7,8,9 -

    -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/map_keys.html b/doc/reference/adaptors/map_keys.html deleted file mode 100755 index a1eec17..0000000 --- a/doc/reference/adaptors/map_keys.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    map_keys

    -
    -
    rng | boost::adaptors::map_keys
    -
    boost::make_map_key_range( rng )
    -
    - - -
    -

    Example

    -
    -        #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 produces the output:
    - - 0,1,2,3,4,5,6,7,8,9 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/map_values.html b/doc/reference/adaptors/map_values.html deleted file mode 100755 index bc3c165..0000000 --- a/doc/reference/adaptors/map_values.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    map_values

    -
    -
    rng | boost::adaptors::map_values
    -
    boost::make_map_value_range( rng )
    -
    - -
    -

    Example

    -
    -        #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 produces the output:
    - - 0,10,20,30,40,50,60,70,80,90 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/replaced.html b/doc/reference/adaptors/replaced.html deleted file mode 100755 index 861277f..0000000 --- a/doc/reference/adaptors/replaced.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    replaced

    -
    -
    rng | boost::adaptors::replaced( new_value, old_value )
    -
    boost::make_replaced_range( rng, new_value, old_value )
    -
    - -
    -

    Example

    -
    -        #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 produces the output:
    - - 1,10,3,10,5,10,7,10,9 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/replaced_if.html b/doc/reference/adaptors/replaced_if.html deleted file mode 100755 index cde3678..0000000 --- a/doc/reference/adaptors/replaced_if.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    replaced_if

    -
    -
    rng | boost::adaptors::replaced_if( pred, new_value )
    -
    boost::make_replaced_if_range( rng, pred, new_value )
    -
    - - -
    -

    Example

    -
    -        #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 produces the output:
    - - 1,10,3,10,5,10,7,10,9 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/reversed.html b/doc/reference/adaptors/reversed.html deleted file mode 100755 index 0aea1ee..0000000 --- a/doc/reference/adaptors/reversed.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    reversed

    -
    -
    rng | boost::adaptors::reversed
    -
    boost::make_reversed_range( rng )
    -
    - -
    -

    Example

    -
    -        #include <boost/range/adaptor/reversed.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 | reversed,
    -                std::ostream_iterator<int>(std::cout, ","));
    -                
    -            return 0;
    -        }
    -    
    -

    - This produces the output:
    - - 9,8,7,6,5,4,3,2,1 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/sliced.html b/doc/reference/adaptors/sliced.html deleted file mode 100755 index d979392..0000000 --- a/doc/reference/adaptors/sliced.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    sliced

    -
    -
    rng | boost::adaptors::sliced( n, m )
    -
    boost::make_sliced_range( rng, n, m )
    -
    - -
    -

    Example

    -
    -        #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 produces the output:
    - - 3,4,5 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/strided.html b/doc/reference/adaptors/strided.html deleted file mode 100755 index 3e23af5..0000000 --- a/doc/reference/adaptors/strided.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    strided

    -
    -
    rng | boost::adaptors::strided( n )
    -
    boost::make_strided_range( rng, n )
    -
    - -
    -

    Example

    -
    -        #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 produces the output: - - 1,3,5,7,9 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/tokenized.html b/doc/reference/adaptors/tokenized.html deleted file mode 100755 index 304e91d..0000000 --- a/doc/reference/adaptors/tokenized.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    tokenized

    -
    -
    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 )
    -
    boost::make_tokenized_range( rng, regex, i, flags )
    -
    boost::make_tokenized_range( rng, regex, rngRng, flags )
    -
    - -
    -

    Example

    -
    -        #include <boost/range/adaptor/tokenized.hpp>
    -        #include <boost/range/algorithm_ext/push_back.hpp>
    -        #include <boost/assert.hpp>
    -        #include <algorithm>
    -        #include <string>
    -        #include <vector>
    -        
    -        int main(int argc, const char* argv)
    -        {
    -            using namespace boost::adaptors;
    -            
    -            std::string input = "a b c d e f g hijklmnopqrstuvwxyz";
    -            std::vector< boost::sub_match< std::string::iterator > > result;
    -            boost::push_back(result, input | tokenized(boost::regex("\\b")));
    -            
    -            BOOST_ASSERT( boost::size(result) == 16u );
    -            
    -            return 0;
    -        }
    -    
    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/transformed.html b/doc/reference/adaptors/transformed.html deleted file mode 100755 index 4069f9a..0000000 --- a/doc/reference/adaptors/transformed.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    transformed

    -
    -
    rng | boost::adaptors::transformed( fun )
    -
    boost::make_transformed_range( rng, fun )
    -
    - -
    -

    Example

    -
    -        #include <boost/range/adaptor/transformed.hpp>
    -        #include <boost/range/algorithm/copy.hpp>
    -        #include <boost/range/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 produces the output:
    - - 2,4,6,8,10,12,14,16,18,20 - -

    - -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/uniqued.html b/doc/reference/adaptors/uniqued.html deleted file mode 100755 index 43ca130..0000000 --- a/doc/reference/adaptors/uniqued.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Boost.Range Range Adaptors - - - - - - - - - - -

    Boost.Range

    - -

    Range Adaptors

    - -
    - -

    uniqued

    -
    -
    rng | boost::adaptors::uniqued
    -
    boost::make_uniqued_range( rng )
    -
    - - -
    -

    Example

    - -
    -    #include <boost/range/adaptor/uniqued.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,1,2,2,2,3,4,5,6;
    -        
    -	boost::copy(
    -	    input | uniqued,
    -            std::ostream_iterator<int>(std::cout, ",") );
    -         
    -        return 0;
    -    }
    -   
    -

    - This would produce the output:
    - 1,2,3,4,5,6
    -

    -
    -

    - (C) Copyright Neil Groves 2009 - (C) Copyright Thorsten Ottosen 2003-2004 -

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/doc/reference/adaptors/uniqued.qbk b/doc/reference/adaptors/uniqued.qbk index ffb4d14..8bcb629 100644 --- a/doc/reference/adaptors/uniqued.qbk +++ b/doc/reference/adaptors/uniqued.qbk @@ -9,7 +9,7 @@ * [*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:] __forward_range__ -* [*Returned Range Category:] The minimum of the range concept of `rng` and __bidirectional_range__. +* [*Returned Range Category:] The minimum of the range concept of `rng` and __forward_pass_range__. [section:uniqued_example uniqued example] `` From 7e065ca313b1c1b18704a2871eb7542f7435ff02 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 19:16:28 +0000 Subject: [PATCH 03/32] Boost.Range corrected dodgy link in the Uniqued adaptor documentation. [SVN r61661] --- doc/html/range/reference/adaptors/reference/uniqued.html | 2 +- doc/reference/adaptors/uniqued.qbk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/html/range/reference/adaptors/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html index bc7d2f0..65fdc6e 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -89,7 +89,7 @@
  • Returned Range Category: The minimum of the range concept of rng - and __forward_passrange_. + and Forward Range.
  • diff --git a/doc/reference/adaptors/uniqued.qbk b/doc/reference/adaptors/uniqued.qbk index 8bcb629..b7565a0 100644 --- a/doc/reference/adaptors/uniqued.qbk +++ b/doc/reference/adaptors/uniqued.qbk @@ -9,7 +9,7 @@ * [*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:] __forward_range__ -* [*Returned Range Category:] The minimum of the range concept of `rng` and __forward_pass_range__. +* [*Returned Range Category:] The minimum of the range concept of `rng` and __forward_range__. [section:uniqued_example uniqued example] `` From 3ef3363c2df69b4a591ddba27e11ab8fdacdbfef Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 28 Apr 2010 19:27:44 +0000 Subject: [PATCH 04/32] Boost.Range documentation iteration. [SVN r61662] --- doc/html/index.html | 4 +- .../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/history_ack.html | 4 +- doc/html/range/introduction.html | 6 +- doc/html/range/mfc_atl.html | 4 +- .../reference/adaptors/introduction.html | 6 +- .../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 +- .../range_algorithm_introduction.html | 257 ++++++++++++++++++ .../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 +- .../concept_implementation/semantics.html | 2 +- doc/html/range/reference/overview.html | 68 +++++ .../reference/ranges/counting_range.html | 8 +- doc/html/range/reference/ranges/irange.html | 10 +- .../range/reference/ranges/istream_range.html | 6 +- .../reference/utilities/iterator_range.html | 6 +- doc/html/range/reference/utilities/join.html | 4 +- .../range/reference/utilities/sub_range.html | 2 +- 94 files changed, 797 insertions(+), 472 deletions(-) create mode 100644 doc/html/range/reference/algorithms/range_algorithm_introduction.html create mode 100644 doc/html/range/reference/overview.html diff --git a/doc/html/index.html b/doc/html/index.html index e164ebd..c6eaa25 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)

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

    - +

    Last revised: April 28, 2010 at 19:00:21 GMT

    Last revised: April 28, 2010 at 19:23:17 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 033d969..5bf3493 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 b9db1e4..9155507 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 a57c6ce..e9777dc 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 6c88e2a..c54a961 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 5f32a71..eeca3f7 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/history_ack.html b/doc/html/range/history_ack.html index 9d5d3d6..7376fd8 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/introduction.html b/doc/html/range/introduction.html index 9f1c4e8..425f7c0 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 8b4ac5b..7f2827c 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/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 6e4781b..3272a3c 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/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/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index 4a9912b..2cffa4f 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 dece502..ec7f440 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index ac81f7c..2c59f90 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 90695dd..32eaee6 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 c4bcea4..8968afa 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index 4c90f5e..3cc1743 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index 11b5e4d..b2dfe94 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index f4fa658..560f14f 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 75d71e8..7868f31 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index acd871d..bd52738 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 b068a7e..6649d4e 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 9814a4e..a844b1c 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 5ae4453..62c2ec0 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 7514afe..4798ea1 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index 0481481..45aa69e 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index 6491a8e..df9ee6c 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index 67afb34..4948098 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
    - + 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 404c434..98fd5d3 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index de07e74..2973846 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index 60ee7e6..695424f 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index 5b5e346..80dfc2d 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
    - + 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 3c97ba1..5d8c9b7 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index ec5325b..d3d32f1 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index ab30425..3c77a43 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index 4f0a397..f039c9a 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index 71ed099..c5bcb16 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index bbf8b8a..dc159d7 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index 3ec9dd9..543f388 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 582128a..1bd0ef4 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 79b0551..afce5c9 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 3a26dc8..43e30b5 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index 22bc5a3..7325f42 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 a2351e6..8f77088 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 d3ab9b1..85ad5a1 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 3990a4a..6a32d1c 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 e36ab86..ac672ce 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 c618c69..f21aab0 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 457cdeb..f781319 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 d9a0bff..e068eb1 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 fd3db29..522248e 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 54ac945..81d3bf6 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 6c28ea9..f9287a5 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 41303af..c0f4312 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 06ee9d1..94886a6 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 f4c21e4..024c4b3 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 96a5042..41a16a1 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 27d20df..b44a77f 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 bb284dd..8c23e6a 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
    - + 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 a52d12e..3708ff7 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index 42b1e37..8909fbd 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 3927bf3..247e97a 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 a0071e5..f67262b 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
    - + 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 74ea668..07b117b 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 0709e1e..aed4750 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 e57f94b..72637c9 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
    - + 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 f8cb0c0..55d70df 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
    - + 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 fd3973d..f88b6ad 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 7eff1d3..6c66a8e 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 2ffa24d..c547ba1 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 577ace5..d5c1a14 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 a18e3ef..bf1411d 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 fadef01..dc9f4cc 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 92b2fe3..e02cae1 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 c2ba3ee..7560152 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 bbea87e..4081a11 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 578a8f0..d6f0d27 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 e9284df..0146bf4 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 e0d1cb3..3a96abc 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 f6838ea..5a429e5 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 bf1e432..a841cb7 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/range_algorithm_introduction.html b/doc/html/range/reference/algorithms/range_algorithm_introduction.html new file mode 100644 index 0000000..20e6bad --- /dev/null +++ b/doc/html/range/reference/algorithms/range_algorithm_introduction.html @@ -0,0 +1,257 @@ + + + +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.end() several times will be more expensive + than using a range algorithm. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index 45df74c..15f655f 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 5e8f31e..ecfcc65 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 924d5d5..fba3e22 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 ab6aec1..5490888 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 31d8005..94f3cd0 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 59e2d98..15c6e46 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html new file mode 100644 index 0000000..9738793 --- /dev/null +++ b/doc/html/range/reference/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/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index e0079e8..53da5b8 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 b2683ec..1a7c730 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 d83cfb2..f017f57 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index 0391b8f..ade0bc0 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 d0232a3..d3c70ab 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 a2362cb..5fab009 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

    From c9802507abf278c30ecef16a8dd858bcb06eb1a9 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 29 Apr 2010 22:03:58 +0000 Subject: [PATCH 05/32] Boost.Range - modified join and irange to return public range types. [SVN r61690] --- include/boost/range/detail/join_iterator.hpp | 83 +++++--------------- include/boost/range/irange.hpp | 40 ++++++++-- include/boost/range/join.hpp | 71 ++++++++++------- 3 files changed, 95 insertions(+), 99 deletions(-) diff --git a/include/boost/range/detail/join_iterator.hpp b/include/boost/range/detail/join_iterator.hpp index 792f834..020c893 100644 --- a/include/boost/range/detail/join_iterator.hpp +++ b/include/boost/range/detail/join_iterator.hpp @@ -12,9 +12,9 @@ #define BOOST_RANGE_DETAIL_JOIN_ITERATOR_HPP_INCLUDED #include +#include #include #include -#include #include #include #include @@ -30,21 +30,6 @@ namespace boost template struct join_iterator_link { -private: - class reference_count_t - { - public: - reference_count_t() : m_count(0u) {} - reference_count_t(const reference_count_t&) : m_count(0u) {} - reference_count_t& operator=(const reference_count_t&) { return *this; } - - void increment() { ++m_count; } - bool decrement() { return --m_count ? false : true; } - - private: - unsigned int m_count; - }; - public: join_iterator_link(Iterator1 last1, Iterator2 first2) : last1(last1) @@ -52,43 +37,13 @@ public: { } - void add_reference() const - { - count.increment(); - } - - bool release_reference() const - { - return count.decrement(); - } - Iterator1 last1; Iterator2 first2; private: join_iterator_link() /* = delete */ ; - - mutable reference_count_t count; }; -} // range_detail - -template -inline void intrusive_ptr_add_ref(const range_detail::join_iterator_link* p) -{ - p->add_reference(); -} - -template -inline void intrusive_ptr_release(const range_detail::join_iterator_link* p) -{ - if (p->release_reference()) - delete p; -} - -namespace range_detail -{ - class join_iterator_begin_tag {}; class join_iterator_end_tag {}; @@ -184,7 +139,7 @@ public: join_iterator(unsigned int section, Iterator1 current1, Iterator1 last1, Iterator2 first2, Iterator2 current2) : m_section(section) , m_it(section, current1, current2) - , m_link(new link_t(last1, first2)) + , m_link(link_t(last1, first2)) { } @@ -192,7 +147,7 @@ public: join_iterator(Range1& r1, Range2& r2, join_iterator_begin_tag) : m_section(boost::empty(r1) ? 1u : 0u) , m_it(boost::empty(r1) ? 1u : 0u, boost::begin(r1), boost::begin(r2)) - , m_link(new link_t(boost::end(r1), boost::begin(r2))) + , m_link(link_t(boost::end(r1), boost::begin(r2))) { } @@ -200,7 +155,7 @@ public: join_iterator(const Range1& r1, const Range2& r2, join_iterator_begin_tag) : m_section(boost::empty(r1) ? 1u : 0u) , m_it(boost::empty(r1) ? 1u : 0u, boost::const_begin(r1), boost::const_begin(r2)) - , m_link(new link_t(boost::const_end(r1), boost::const_begin(r2))) + , m_link(link_t(boost::const_end(r1), boost::const_begin(r2))) { } @@ -208,7 +163,7 @@ public: join_iterator(Range1& r1, Range2& r2, join_iterator_end_tag) : m_section(1u) , m_it(1u, boost::end(r1), boost::end(r2)) - , m_link(new link_t(boost::end(r1), boost::begin(r2))) + , m_link(link_t(boost::end(r1), boost::begin(r2))) { } @@ -216,7 +171,7 @@ public: join_iterator(const Range1& r1, const Range2& r2, join_iterator_end_tag) : m_section(1u) , m_it(1u, boost::const_end(r1), boost::const_end(r2)) - , m_link(new link_t(boost::const_end(r1), boost::const_begin(r2))) + , m_link(link_t(boost::const_end(r1), boost::const_begin(r2))) { } @@ -228,9 +183,9 @@ private: else { ++m_it.it1(); - if (m_it.it1() == m_link->last1) + if (m_it.it1() == m_link.last1) { - m_it.it2() = m_link->first2; + m_it.it2() = m_link.first2; m_section = 1u; } } @@ -240,9 +195,9 @@ private: { if (m_section) { - if (m_it.it2() == m_link->first2) + if (m_it.it2() == m_link.first2) { - m_it.it1() = boost::prior(m_link->last1); + m_it.it1() = boost::prior(m_link.last1); m_section = 0u; } else @@ -280,8 +235,8 @@ private: result = other.m_it.it2() - m_it.it2(); else { - result = (m_link->first2 - m_it.it2()) - + (other.m_it.it1() - m_link->last1); + result = (m_link.first2 - m_it.it2()) + + (other.m_it.it1() - m_link.last1); BOOST_ASSERT( result <= 0 ); } @@ -290,8 +245,8 @@ private: { if (other.m_section) { - result = (m_link->last1 - m_it.it1()) - + (other.m_it.it2() - m_link->first2); + result = (m_link.last1 - m_it.it1()) + + (other.m_it.it2() - m_link.first2); } else result = other.m_it.it1() - m_it.it1(); @@ -305,7 +260,7 @@ private: BOOST_ASSERT( m_section == 1u ); if (offset < 0) { - difference_t r2_dist = m_link->first2 - m_it.it2(); + difference_t r2_dist = m_link.first2 - m_it.it2(); BOOST_ASSERT( r2_dist <= 0 ); if (offset >= r2_dist) std::advance(m_it.it2(), offset); @@ -313,7 +268,7 @@ private: { difference_t r1_dist = offset - r2_dist; BOOST_ASSERT( r1_dist <= 0 ); - m_it.it1() = m_link->last1 + r1_dist; + m_it.it1() = m_link.last1 + r1_dist; m_section = 0u; } } @@ -327,7 +282,7 @@ private: BOOST_ASSERT( m_section == 0u ); if (offset > 0) { - difference_t r1_dist = m_link->last1 - m_it.it1(); + difference_t r1_dist = m_link.last1 - m_it.it1(); BOOST_ASSERT( r1_dist >= 0 ); if (offset < r1_dist) std::advance(m_it.it1(), offset); @@ -335,7 +290,7 @@ private: { difference_t r2_dist = offset - r1_dist; BOOST_ASSERT( r2_dist >= 0 ); - m_it.it2() = m_link->first2 + r2_dist; + m_it.it2() = m_link.first2 + r2_dist; m_section = 1u; } } @@ -345,7 +300,7 @@ private: unsigned int m_section; iterator_union m_it; - intrusive_ptr m_link; + link_t m_link; friend class ::boost::iterator_core_access; }; diff --git a/include/boost/range/irange.hpp b/include/boost/range/irange.hpp index ee25d45..8045550 100644 --- a/include/boost/range/irange.hpp +++ b/include/boost/range/irange.hpp @@ -173,28 +173,54 @@ namespace boost } // namespace range_detail template - iterator_range< range_detail::integer_iterator > - irange(Integer first, Integer last) + class integer_range + : public iterator_range< range_detail::integer_iterator > + { + typedef range_detail::integer_iterator iterator_t; + typedef iterator_range base_t; + public: + integer_range(Integer first, Integer last) + : base_t(iterator_t(first), iterator_t(last)) + { + } + }; + + template + class strided_integer_range + : public iterator_range< range_detail::integer_iterator_with_step > + { + typedef range_detail::integer_iterator_with_step iterator_t; + typedef iterator_range base_t; + public: + template + strided_integer_range(Iterator first, Iterator last) + : base_t(first, last) + { + } + }; + + template + integer_range + irange(Integer first, Integer last) { BOOST_ASSERT( first <= last ); - return boost::iterator_range< range_detail::integer_iterator >( - range_detail::integer_iterator(first), - range_detail::integer_iterator(last)); + return integer_range(first, last); } template - iterator_range< range_detail::integer_iterator_with_step > + strided_integer_range irange(Integer first, Integer last, StepSize step_size) { BOOST_ASSERT( step_size != 0 ); BOOST_ASSERT( (step_size > 0) ? (last >= first) : (last <= first) ); + typedef typename range_detail::integer_iterator_with_step iterator_t; const std::ptrdiff_t last_step = (static_cast(last) - static_cast(first)) / (static_cast(step_size)); - return boost::iterator_range< iterator_t >( + return strided_integer_range( iterator_t(first, 0, step_size), iterator_t(first, last_step, step_size)); } diff --git a/include/boost/range/join.hpp b/include/boost/range/join.hpp index 518026c..ad0217e 100644 --- a/include/boost/range/join.hpp +++ b/include/boost/range/join.hpp @@ -18,49 +18,64 @@ namespace boost { + namespace range_detail + { template -iterator_range::type, - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME add_const< - BOOST_DEDUCED_TYPENAME range_value::type>::type> -> +class joined_type +{ +public: + typedef iterator_range< + range_detail::join_iterator< + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_iterator::type, + BOOST_DEDUCED_TYPENAME range_value::type + > + > type; +}; + + } // namespace range_detail + +template +class joined_range + : public range_detail::joined_type::type +{ + 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 BOOST_DEDUCED_TYPENAME range_detail::joined_type< + SinglePassRange1, SinglePassRange2>::type base_t; +public: + joined_range(SinglePassRange1& rng1, SinglePassRange2& rng2) + : base_t( + iterator_t(rng1, rng2, range_detail::join_iterator_begin_tag()), + iterator_t(rng1, rng2, range_detail::join_iterator_end_tag()) + ) + { + } +}; + +template +joined_range 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; - - return iterator_range( - iterator_t(r1, r2, range_detail::join_iterator_begin_tag()), - iterator_t(r1, r2, range_detail::join_iterator_end_tag())); + return joined_range(r1, r2); } template -iterator_range::type, - BOOST_DEDUCED_TYPENAME range_iterator::type, - BOOST_DEDUCED_TYPENAME range_value::type> -> +joined_range 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; - - return iterator_range( - iterator_t(r1, r2, range_detail::join_iterator_begin_tag()), - iterator_t(r1, r2, range_detail::join_iterator_end_tag())); + return joined_range(r1, r2); } } // namespace boost From 5b1d0544e2cafe29b5c22276ad50f9bdd593d12d Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 4 May 2010 15:26:09 +0000 Subject: [PATCH 06/32] Const-qualified objects of class type require the class to have a user-declared default constructor. [SVN r61758] --- test/extension_mechanism.cpp | 2 ++ 1 file changed, 2 insertions(+) mode change 100755 => 100644 test/extension_mechanism.cpp diff --git a/test/extension_mechanism.cpp b/test/extension_mechanism.cpp old mode 100755 new mode 100644 index a206afb..9e9891a --- a/test/extension_mechanism.cpp +++ b/test/extension_mechanism.cpp @@ -41,6 +41,8 @@ namespace Foo // struct X { + X() : vec() { } + typedef std::vector data_t; typedef data_t::iterator iterator; typedef data_t::const_iterator const_iterator; From aebb16feefcc97bff4cc4ac5cbf55c354f93d2ee Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 12 May 2010 01:34:50 +0000 Subject: [PATCH 07/32] Boost.Range sliced adaptor is now compatible with VC10 even with using namespace boost::adaptors. [SVN r61923] --- include/boost/range/adaptor/sliced.hpp | 28 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/include/boost/range/adaptor/sliced.hpp b/include/boost/range/adaptor/sliced.hpp index eb506e0..03c6894 100755 --- a/include/boost/range/adaptor/sliced.hpp +++ b/include/boost/range/adaptor/sliced.hpp @@ -28,14 +28,26 @@ namespace boost }; template< class RandomAccessRange > - inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > + class sliced_range : public boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > + { + typedef boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > base_t; + public: + template + sliced_range(Rng& rng, T t, U u) + : base_t(boost::make_iterator_range(rng, t, u - boost::size(rng))) + { + } + }; + + template< class RandomAccessRange > + inline sliced_range 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" ); - return boost::make_iterator_range( rng, t, u - boost::size(rng) ); + return sliced_range(rng, t, u); } template< class RandomAccessRange > @@ -46,23 +58,21 @@ namespace boost 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) ); + return sliced_range(rng, t, u); } template< class RandomAccessRange > - inline iterator_range< - BOOST_DEDUCED_TYPENAME range_iterator::type > + inline sliced_range operator|( RandomAccessRange& r, const sliced& f ) { - return adaptors::slice( r, f.t, f.u ); + return sliced_range( r, f.t, f.u ); } template< class RandomAccessRange > - inline iterator_range< - BOOST_DEDUCED_TYPENAME range_iterator::type > + inline sliced_range operator|( const RandomAccessRange& r, const sliced& f ) { - return adaptors::slice( r, f.t, f.u ); + return sliced_range( r, f.t, f.u ); } } // namespace adaptors From db345d4e8e86b0607fca2b61567c331ca52632c0 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 20 Jun 2010 18:00:48 +0000 Subject: [PATCH 08/32] Update various libraries' documentation build. Mostly to use the images and css files under doc/src instead of doc/html, usually be deleting the settings in order to use the defaults. Also add 'boost.root' to some builds in order to fix links which rely on it. [SVN r63146] --- doc/Jamfile.v2 | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 5195b32..82a8d7f 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -19,8 +19,6 @@ boostbook quickbook boost_range.qbk : boost.root=../../../.. - boost.libraries=../../../libraries.htm - html.stylesheet=../../../../doc/html/boostbook.css chunk.section.depth=4 chunk.first.sections=1 toc.section.depth=3 From ef000176d8c844fdffac870f839189848a14ec83 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 12 Jul 2010 00:08:41 +0000 Subject: [PATCH 09/32] [boost][range] - Improved handling of temporary ranges in range algorithms. [SVN r63902] --- .../boost/range/adaptor/adjacent_filtered.hpp | 9 ++- include/boost/range/algorithm/copy.hpp | 2 +- .../boost/range/algorithm/copy_backward.hpp | 2 +- include/boost/range/algorithm/equal.hpp | 8 +-- include/boost/range/algorithm/fill.hpp | 9 +++ include/boost/range/algorithm/fill_n.hpp | 10 +++ include/boost/range/algorithm/find.hpp | 20 ++++++ include/boost/range/algorithm/find_end.hpp | 53 ++++++++++++++ .../boost/range/algorithm/find_first_of.hpp | 54 ++++++++++++++ include/boost/range/algorithm/find_if.hpp | 20 ++++++ include/boost/range/algorithm/generate.hpp | 9 +++ .../boost/range/algorithm/heap_algorithm.hpp | 72 +++++++++++++++++++ include/boost/range/algorithm/lower_bound.hpp | 43 +++++++++++ .../boost/range/algorithm/partial_sort.hpp | 22 ++++++ .../range/algorithm/partial_sort_copy.hpp | 28 +++++++- include/boost/range/algorithm/partition.hpp | 20 ++++++ .../boost/range/algorithm/random_shuffle.hpp | 18 +++++ include/boost/range/algorithm/remove.hpp | 20 ++++++ include/boost/range/algorithm/remove_copy.hpp | 4 +- .../boost/range/algorithm/remove_copy_if.hpp | 4 +- include/boost/range/algorithm/remove_if.hpp | 20 ++++++ include/boost/range/algorithm/replace.hpp | 11 +++ .../boost/range/algorithm/replace_copy.hpp | 4 +- .../boost/range/algorithm/replace_copy_if.hpp | 4 +- include/boost/range/algorithm/replace_if.hpp | 11 +++ include/boost/range/algorithm/reverse.hpp | 9 +++ .../boost/range/algorithm/reverse_copy.hpp | 2 +- include/boost/range/algorithm/rotate.hpp | 10 +++ include/boost/range/algorithm/search_n.hpp | 8 +-- include/boost/range/algorithm/sort.hpp | 18 +++++ include/boost/range/algorithm/stable_sort.hpp | 18 +++++ include/boost/range/algorithm/swap_ranges.hpp | 45 ++++++++++++ include/boost/range/algorithm/upper_bound.hpp | 43 +++++++++++ include/boost/range/algorithm_ext/iota.hpp | 13 ++++ .../boost/range/algorithm_ext/is_sorted.hpp | 6 +- .../boost/range/algorithm_ext/overwrite.hpp | 27 +++++++ 36 files changed, 649 insertions(+), 27 deletions(-) diff --git a/include/boost/range/adaptor/adjacent_filtered.hpp b/include/boost/range/adaptor/adjacent_filtered.hpp index c01f1c1..f63a599 100644 --- a/include/boost/range/adaptor/adjacent_filtered.hpp +++ b/include/boost/range/adaptor/adjacent_filtered.hpp @@ -27,7 +27,6 @@ namespace boost { - namespace range_detail { template< class Iter, class Pred, bool default_pass > @@ -140,10 +139,14 @@ namespace boost 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) ) + : base_range(skip_iter(boost::begin(r), boost::end(r), p), + skip_iter(boost::end(r), boost::end(r), p)) { } + + private: + P m_pred; + R* m_range; }; template< class T > diff --git a/include/boost/range/algorithm/copy.hpp b/include/boost/range/algorithm/copy.hpp index dc5a0c3..f15b31f 100644 --- a/include/boost/range/algorithm/copy.hpp +++ b/include/boost/range/algorithm/copy.hpp @@ -30,7 +30,7 @@ namespace boost template< class SinglePassRange, class OutputIterator > inline OutputIterator copy(const SinglePassRange& rng, OutputIterator out) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return std::copy(boost::begin(rng),boost::end(rng),out); } diff --git a/include/boost/range/algorithm/copy_backward.hpp b/include/boost/range/algorithm/copy_backward.hpp index 52dc922..c95c6f1 100755 --- a/include/boost/range/algorithm/copy_backward.hpp +++ b/include/boost/range/algorithm/copy_backward.hpp @@ -32,7 +32,7 @@ inline BidirectionalTraversalWriteableIterator copy_backward(const BidirectionalRange& rng, BidirectionalTraversalWriteableIterator out) { - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); return std::copy_backward(boost::begin(rng), boost::end(rng), out); } diff --git a/include/boost/range/algorithm/equal.hpp b/include/boost/range/algorithm/equal.hpp index 7226440..a3ebc29 100755 --- a/include/boost/range/algorithm/equal.hpp +++ b/include/boost/range/algorithm/equal.hpp @@ -159,8 +159,8 @@ namespace boost template< class SinglePassRange1, class SinglePassRange2 > inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2 ) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return ::boost::range_detail::equal( ::boost::begin(rng1), ::boost::end(rng1), @@ -172,8 +172,8 @@ namespace boost inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred ) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return ::boost::range_detail::equal( ::boost::begin(rng1), ::boost::end(rng1), diff --git a/include/boost/range/algorithm/fill.hpp b/include/boost/range/algorithm/fill.hpp index 72c5d58..95231a8 100755 --- a/include/boost/range/algorithm/fill.hpp +++ b/include/boost/range/algorithm/fill.hpp @@ -33,6 +33,15 @@ inline ForwardRange& fill(ForwardRange& rng, const Value& val) return rng; } +/// \overload +template< class ForwardRange, class Value > +inline const ForwardRange& fill(const ForwardRange& rng, const Value& val) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + std::fill(boost::begin(rng), boost::end(rng), val); + return rng; +} + } // namespace range using range::fill; } diff --git a/include/boost/range/algorithm/fill_n.hpp b/include/boost/range/algorithm/fill_n.hpp index 29d7d6f..02a0c2a 100755 --- a/include/boost/range/algorithm/fill_n.hpp +++ b/include/boost/range/algorithm/fill_n.hpp @@ -36,6 +36,16 @@ inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val) return rng; } +/// \overload +template< class ForwardRange, class Size, class Value > +inline const ForwardRange& fill_n(const ForwardRange& rng, Size n, const Value& val) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_ASSERT( static_cast(std::distance(boost::begin(rng), boost::end(rng))) >= n ); + std::fill_n(boost::begin(rng), n, val); + return rng; +} + } // namespace range using range::fill_n; } // namespace boost diff --git a/include/boost/range/algorithm/find.hpp b/include/boost/range/algorithm/find.hpp index b4bf6d9..cb40919 100755 --- a/include/boost/range/algorithm/find.hpp +++ b/include/boost/range/algorithm/find.hpp @@ -34,6 +34,15 @@ find( SinglePassRange& rng, const Value& val ) return std::find(boost::begin(rng), boost::end(rng), val); } +/// \overload +template< class SinglePassRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +find( const SinglePassRange& rng, const Value& val ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::find(boost::begin(rng), boost::end(rng), val); +} + // range_return overloads /// \overload @@ -47,6 +56,17 @@ find( SinglePassRange& rng, const Value& val ) rng); } +/// \overload +template< range_return_value re, class SinglePassRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_return::type +find( const SinglePassRange& rng, const Value& val ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return range_return:: + pack(std::find(boost::begin(rng), boost::end(rng), val), + rng); +} + } // namespace range using range::find; } diff --git a/include/boost/range/algorithm/find_end.hpp b/include/boost/range/algorithm/find_end.hpp index 864d4b0..cd09525 100755 --- a/include/boost/range/algorithm/find_end.hpp +++ b/include/boost/range/algorithm/find_end.hpp @@ -39,6 +39,18 @@ find_end(ForwardRange1 & rng1, const ForwardRange2& rng2) boost::begin(rng2),boost::end(rng2)); } +/// \overload +template< class ForwardRange1, class ForwardRange2 > +inline BOOST_DEDUCED_TYPENAME range_iterator< const ForwardRange1 >::type +find_end(const ForwardRange1 & rng1, const ForwardRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return std::find_end(boost::begin(rng1),boost::end(rng1), + boost::begin(rng2),boost::end(rng2)); +} + /// \overload template< class ForwardRange1, class ForwardRange2, class BinaryPredicate > inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -51,6 +63,18 @@ find_end(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 +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return std::find_end(boost::begin(rng1),boost::end(rng1), + boost::begin(rng2),boost::end(rng2),pred); +} + /// \overload template< range_return_value re, class ForwardRange1, class ForwardRange2 > inline BOOST_DEDUCED_TYPENAME range_return::type @@ -65,6 +89,20 @@ find_end(ForwardRange1& rng1, const ForwardRange2& rng2) rng1); } +/// \overload +template< range_return_value re, class ForwardRange1, class ForwardRange2 > +inline BOOST_DEDUCED_TYPENAME range_return::type +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return range_return:: + pack(std::find_end(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2)), + rng1); +} + /// \overload template< range_return_value re, class ForwardRange1, class ForwardRange2, class BinaryPredicate > @@ -80,6 +118,21 @@ find_end(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 +find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return range_return:: + pack(std::find_end(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2), pred), + rng1); +} + } // namespace range using range::find_end; } // namespace boost diff --git a/include/boost/range/algorithm/find_first_of.hpp b/include/boost/range/algorithm/find_first_of.hpp index f7543b7..37e58eb 100755 --- a/include/boost/range/algorithm/find_first_of.hpp +++ b/include/boost/range/algorithm/find_first_of.hpp @@ -39,6 +39,18 @@ find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2) boost::begin(rng2),boost::end(rng2)); } +/// \overload +template< class SinglePassRange1, class ForwardRange2 > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return std::find_first_of(boost::begin(rng1),boost::end(rng1), + boost::begin(rng2),boost::end(rng2)); +} + /// \overload template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate > inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -51,6 +63,18 @@ find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2, BinaryPredica boost::begin(rng2),boost::end(rng2),pred); } +/// \overload +template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return std::find_first_of(boost::begin(rng1),boost::end(rng1), + boost::begin(rng2),boost::end(rng2),pred); +} + // range return overloads /// \overload template< range_return_value re, class SinglePassRange1, class ForwardRange2 > @@ -66,6 +90,20 @@ find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2) rng1); } +/// \overload +template< range_return_value re, class SinglePassRange1, class ForwardRange2 > +inline BOOST_DEDUCED_TYPENAME range_return::type +find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return range_return:: + pack(std::find_first_of(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2)), + rng1); +} + /// \overload template< range_return_value re, class SinglePassRange1, class ForwardRange2, class BinaryPredicate > @@ -82,6 +120,22 @@ find_first_of(SinglePassRange1 & rng1, const ForwardRange2& rng2, rng1); } +/// \overload +template< range_return_value re, class SinglePassRange1, class ForwardRange2, + class BinaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type +find_first_of(const SinglePassRange1 & rng1, const ForwardRange2& rng2, + BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + + return range_return:: + pack(std::find_first_of(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2), pred), + rng1); +} + } // namespace range using range::find_first_of; } // namespace boost diff --git a/include/boost/range/algorithm/find_if.hpp b/include/boost/range/algorithm/find_if.hpp index 3254d8c..ba86c62 100755 --- a/include/boost/range/algorithm/find_if.hpp +++ b/include/boost/range/algorithm/find_if.hpp @@ -35,6 +35,15 @@ find_if( SinglePassRange& rng, UnaryPredicate pred ) return std::find_if(boost::begin(rng), boost::end(rng), pred); } +/// \overload +template< class SinglePassRange, class UnaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +find_if( const SinglePassRange& rng, UnaryPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::find_if(boost::begin(rng), boost::end(rng), pred); +} + // range_return overloads /// \overload @@ -48,6 +57,17 @@ find_if( SinglePassRange& rng, UnaryPredicate pred ) rng); } +/// \overload +template< range_return_value re, class SinglePassRange, class UnaryPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type +find_if( const SinglePassRange& rng, UnaryPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return range_return:: + pack(std::find_if(boost::begin(rng), boost::end(rng), pred), + rng); +} + } // namespace range using range::find_if; } // namespace boost diff --git a/include/boost/range/algorithm/generate.hpp b/include/boost/range/algorithm/generate.hpp index bd63a48..324412c 100755 --- a/include/boost/range/algorithm/generate.hpp +++ b/include/boost/range/algorithm/generate.hpp @@ -33,6 +33,15 @@ 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 64df3e9..584920d 100755 --- a/include/boost/range/algorithm/heap_algorithm.hpp +++ b/include/boost/range/algorithm/heap_algorithm.hpp @@ -34,6 +34,15 @@ inline RandomAccessRange& push_heap(RandomAccessRange& rng) return 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; +} + /// \overload template inline RandomAccessRange& push_heap(RandomAccessRange& rng, Compare comp_pred) @@ -43,6 +52,15 @@ 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 @@ -57,6 +75,15 @@ 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) @@ -66,6 +93,15 @@ 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 @@ -80,6 +116,15 @@ inline RandomAccessRange& make_heap(RandomAccessRange& rng) return rng; } +/// \overload +template +inline const 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) @@ -89,6 +134,15 @@ 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 @@ -103,6 +157,15 @@ 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) @@ -112,6 +175,15 @@ 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/lower_bound.hpp b/include/boost/range/algorithm/lower_bound.hpp index 5d3945e..402e3c7 100755 --- a/include/boost/range/algorithm/lower_bound.hpp +++ b/include/boost/range/algorithm/lower_bound.hpp @@ -33,6 +33,16 @@ lower_bound( ForwardRange& rng, Value val ) BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return std::lower_bound(boost::begin(rng), boost::end(rng), val); } + +/// \overload +template< class ForwardRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +lower_bound( const ForwardRange& rng, Value val ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::lower_bound(boost::begin(rng), boost::end(rng), val); +} + /// \overload template< class ForwardRange, class Value, class SortPredicate > inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -41,6 +51,16 @@ lower_bound( ForwardRange& rng, Value val, SortPredicate pred ) BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred); } + +/// \overload +template< class ForwardRange, class Value, class SortPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +lower_bound( const ForwardRange& rng, Value val, SortPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred); +} + /// \overload template< range_return_value re, class ForwardRange, class Value > inline BOOST_DEDUCED_TYPENAME range_return::type @@ -51,6 +71,18 @@ lower_bound( ForwardRange& rng, Value val ) pack(std::lower_bound(boost::begin(rng), boost::end(rng), val), rng); } + +/// \overload +template< range_return_value re, class ForwardRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_return::type +lower_bound( const ForwardRange& rng, Value val ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + pack(std::lower_bound(boost::begin(rng), boost::end(rng), val), + rng); +} + /// \overload template< range_return_value re, class ForwardRange, class Value, class SortPredicate > inline BOOST_DEDUCED_TYPENAME range_return::type @@ -62,6 +94,17 @@ lower_bound( ForwardRange& rng, Value val, SortPredicate pred ) rng); } +/// \overload +template< range_return_value re, class ForwardRange, class Value, class SortPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type +lower_bound( const ForwardRange& rng, Value val, SortPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + pack(std::lower_bound(boost::begin(rng), boost::end(rng), val, pred), + rng); +} + } // namespace range using range::lower_bound; } // namespace boost diff --git a/include/boost/range/algorithm/partial_sort.hpp b/include/boost/range/algorithm/partial_sort.hpp index 1797c55..d7044cd 100755 --- a/include/boost/range/algorithm/partial_sort.hpp +++ b/include/boost/range/algorithm/partial_sort.hpp @@ -35,6 +35,16 @@ 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, @@ -47,6 +57,18 @@ 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 a2fe761..9129389 100755 --- a/include/boost/range/algorithm/partial_sort_copy.hpp +++ b/include/boost/range/algorithm/partial_sort_copy.hpp @@ -32,7 +32,18 @@ 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((SinglePassRangeConcept)); + + return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2)); +} + +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +partial_sort_copy(const SinglePassRange& rng1, const RandomAccessRange& rng2) +{ + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1), boost::begin(rng2), boost::end(rng2)); @@ -45,7 +56,20 @@ 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((SinglePassRangeConcept)); + + return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), boost::end(rng2), pred); +} + +/// \overload +template +inline BOOST_DEDUCED_TYPENAME range_iterator::type +partial_sort_copy(const SinglePassRange& rng1, const RandomAccessRange& rng2, + BinaryPredicate pred) +{ + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); 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 6404918..b814a24 100755 --- a/include/boost/range/algorithm/partition.hpp +++ b/include/boost/range/algorithm/partition.hpp @@ -34,6 +34,15 @@ 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 @@ -47,6 +56,17 @@ 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/random_shuffle.hpp b/include/boost/range/algorithm/random_shuffle.hpp index 0b17333..95bbd97 100755 --- a/include/boost/range/algorithm/random_shuffle.hpp +++ b/include/boost/range/algorithm/random_shuffle.hpp @@ -34,6 +34,15 @@ 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) @@ -43,6 +52,15 @@ 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 638dff2..699a7cd 100755 --- a/include/boost/range/algorithm/remove.hpp +++ b/include/boost/range/algorithm/remove.hpp @@ -34,6 +34,15 @@ 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 @@ -47,6 +56,17 @@ 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_copy.hpp b/include/boost/range/algorithm/remove_copy.hpp index 0d3d83d..b65747e 100755 --- a/include/boost/range/algorithm/remove_copy.hpp +++ b/include/boost/range/algorithm/remove_copy.hpp @@ -31,9 +31,9 @@ namespace boost /// InputIterator's value type. template< class SinglePassRange, class OutputIterator, class Value > inline OutputIterator -remove_copy(SinglePassRange& rng, OutputIterator out_it, const Value& val) +remove_copy(const SinglePassRange& rng, OutputIterator out_it, const Value& val) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return std::remove_copy(boost::begin(rng), boost::end(rng), out_it, val); } diff --git a/include/boost/range/algorithm/remove_copy_if.hpp b/include/boost/range/algorithm/remove_copy_if.hpp index 8febe59..8d9c37b 100755 --- a/include/boost/range/algorithm/remove_copy_if.hpp +++ b/include/boost/range/algorithm/remove_copy_if.hpp @@ -28,9 +28,9 @@ namespace boost /// \pre out_it is not an iterator in the range rng template< class SinglePassRange, class OutputIterator, class Predicate > inline OutputIterator - remove_copy_if(SinglePassRange& rng, OutputIterator out_it, Predicate pred) + remove_copy_if(const SinglePassRange& rng, OutputIterator out_it, Predicate pred) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return std::remove_copy_if(boost::begin(rng), boost::end(rng), out_it, pred); } } diff --git a/include/boost/range/algorithm/remove_if.hpp b/include/boost/range/algorithm/remove_if.hpp index 349e7a4..a965df0 100755 --- a/include/boost/range/algorithm/remove_if.hpp +++ b/include/boost/range/algorithm/remove_if.hpp @@ -35,6 +35,15 @@ 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 @@ -48,6 +57,17 @@ 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 3f2d72c..44d3e4c 100755 --- a/include/boost/range/algorithm/replace.hpp +++ b/include/boost/range/algorithm/replace.hpp @@ -35,6 +35,17 @@ 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_copy.hpp b/include/boost/range/algorithm/replace_copy.hpp index 36c91ce..0c02005 100755 --- a/include/boost/range/algorithm/replace_copy.hpp +++ b/include/boost/range/algorithm/replace_copy.hpp @@ -27,10 +27,10 @@ namespace boost /// \pre ForwardRange is a model of the ForwardRangeConcept template< class ForwardRange, class OutputIterator, class Value > inline OutputIterator -replace_copy(ForwardRange& rng, OutputIterator out_it, const Value& what, +replace_copy(const ForwardRange& rng, OutputIterator out_it, const Value& what, const Value& with_what) { - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return std::replace_copy(boost::begin(rng), boost::end(rng), out_it, what, with_what); } diff --git a/include/boost/range/algorithm/replace_copy_if.hpp b/include/boost/range/algorithm/replace_copy_if.hpp index 5d4bfb6..d313151 100755 --- a/include/boost/range/algorithm/replace_copy_if.hpp +++ b/include/boost/range/algorithm/replace_copy_if.hpp @@ -31,10 +31,10 @@ namespace boost /// \pre Value is convertible to a type in OutputIterator's set of value types. template< class ForwardRange, class OutputIterator, class Predicate, class Value > inline OutputIterator -replace_copy_if(ForwardRange& rng, OutputIterator out_it, Predicate pred, +replace_copy_if(const ForwardRange& rng, OutputIterator out_it, Predicate pred, const Value& with_what) { - BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return std::replace_copy_if(boost::begin(rng), boost::end(rng), out_it, pred, with_what); } diff --git a/include/boost/range/algorithm/replace_if.hpp b/include/boost/range/algorithm/replace_if.hpp index 393a4ca..93d5a1f 100755 --- a/include/boost/range/algorithm/replace_if.hpp +++ b/include/boost/range/algorithm/replace_if.hpp @@ -36,6 +36,17 @@ 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 8741d66..20a7eb1 100755 --- a/include/boost/range/algorithm/reverse.hpp +++ b/include/boost/range/algorithm/reverse.hpp @@ -34,6 +34,15 @@ 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 d86145d..f1990ad 100755 --- a/include/boost/range/algorithm/reverse_copy.hpp +++ b/include/boost/range/algorithm/reverse_copy.hpp @@ -29,7 +29,7 @@ namespace boost template inline OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out) { - BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalRangeConcept )); return std::reverse_copy(boost::begin(rng), boost::end(rng), out); } diff --git a/include/boost/range/algorithm/rotate.hpp b/include/boost/range/algorithm/rotate.hpp index aef6062..ca4b223 100755 --- a/include/boost/range/algorithm/rotate.hpp +++ b/include/boost/range/algorithm/rotate.hpp @@ -34,6 +34,16 @@ inline ForwardRange& rotate(ForwardRange& rng, return rng; } +/// \overload +template +inline const ForwardRange& rotate(const ForwardRange& rng, + BOOST_DEDUCED_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/search_n.hpp b/include/boost/range/algorithm/search_n.hpp index 2ced140..b69bc6d 100755 --- a/include/boost/range/algorithm/search_n.hpp +++ b/include/boost/range/algorithm/search_n.hpp @@ -44,7 +44,7 @@ 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)); + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); return std::search_n(boost::begin(rng), boost::end(rng), count, value); } @@ -69,7 +69,7 @@ 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((ForwardRangeConcept)); BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); return std::search_n(boost::begin(rng), boost::end(rng), @@ -97,7 +97,7 @@ template< range_return_value re, class ForwardRange, class Integer, inline BOOST_DEDUCED_TYPENAME range_return::type search_n(const ForwardRange& rng, Integer count, const Value& value) { - BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); return range_return:: pack(std::search_n(boost::begin(rng), boost::end(rng), count, value), @@ -128,7 +128,7 @@ 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((ForwardRangeConcept)); BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); diff --git a/include/boost/range/algorithm/sort.hpp b/include/boost/range/algorithm/sort.hpp index 0c6e3b2..45eecde 100755 --- a/include/boost/range/algorithm/sort.hpp +++ b/include/boost/range/algorithm/sort.hpp @@ -34,6 +34,15 @@ 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) @@ -43,6 +52,15 @@ 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_sort.hpp b/include/boost/range/algorithm/stable_sort.hpp index 6a27aa4..d18da4d 100755 --- a/include/boost/range/algorithm/stable_sort.hpp +++ b/include/boost/range/algorithm/stable_sort.hpp @@ -34,6 +34,15 @@ 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) @@ -43,6 +52,15 @@ 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 5b8967a..52b0162 100755 --- a/include/boost/range/algorithm/swap_ranges.hpp +++ b/include/boost/range/algorithm/swap_ranges.hpp @@ -80,6 +80,51 @@ swap_ranges(SinglePassRange1& range1, SinglePassRange2& range2) return range2; } +/// \overload +template< class SinglePassRange1, class SinglePassRange2 > +inline SinglePassRange2& +swap_ranges(const SinglePassRange1& range1, SinglePassRange2& range2) +{ + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + + boost::range_detail::swap_ranges_impl( + boost::begin(range1), boost::end(range1), + boost::begin(range2), boost::end(range2)); + + return range2; +} + +/// \overload +template< class SinglePassRange1, class SinglePassRange2 > +inline const SinglePassRange2& +swap_ranges(SinglePassRange1& range1, const SinglePassRange2& range2) +{ + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + + boost::range_detail::swap_ranges_impl( + boost::begin(range1), boost::end(range1), + boost::begin(range2), boost::end(range2)); + + return range2; +} + +/// \overload +template< class SinglePassRange1, class SinglePassRange2 > +inline const SinglePassRange2& +swap_ranges(const SinglePassRange1& range1, const SinglePassRange2& range2) +{ + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + + boost::range_detail::swap_ranges_impl( + boost::begin(range1), boost::end(range1), + boost::begin(range2), boost::end(range2)); + + return range2; +} + } // namespace range using range::swap_ranges; } // namespace boost diff --git a/include/boost/range/algorithm/upper_bound.hpp b/include/boost/range/algorithm/upper_bound.hpp index 8aa26bd..510127f 100755 --- a/include/boost/range/algorithm/upper_bound.hpp +++ b/include/boost/range/algorithm/upper_bound.hpp @@ -33,7 +33,16 @@ upper_bound( ForwardRange& rng, Value val ) BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return std::upper_bound(boost::begin(rng), boost::end(rng), val); } + /// \overload +template< class ForwardRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +upper_bound( const ForwardRange& rng, Value val ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::upper_bound(boost::begin(rng), boost::end(rng), val); +} + /// \overload template< class ForwardRange, class Value, class SortPredicate > inline BOOST_DEDUCED_TYPENAME range_iterator::type @@ -42,6 +51,16 @@ upper_bound( ForwardRange& rng, Value val, SortPredicate pred ) BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred); } + +/// \overload +template< class ForwardRange, class Value, class SortPredicate > +inline BOOST_DEDUCED_TYPENAME range_iterator::type +upper_bound( const ForwardRange& rng, Value val, SortPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred); +} + /// \overload template< range_return_value re, class ForwardRange, class Value > inline BOOST_DEDUCED_TYPENAME range_return::type @@ -52,6 +71,18 @@ upper_bound( ForwardRange& rng, Value val ) pack(std::upper_bound(boost::begin(rng), boost::end(rng), val), rng); } + +/// \overload +template< range_return_value re, class ForwardRange, class Value > +inline BOOST_DEDUCED_TYPENAME range_return::type +upper_bound( const ForwardRange& rng, Value val ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + pack(std::upper_bound(boost::begin(rng), boost::end(rng), val), + rng); +} + /// \overload template< range_return_value re, class ForwardRange, class Value, class SortPredicate > @@ -64,6 +95,18 @@ upper_bound( ForwardRange& rng, Value val, SortPredicate pred ) rng); } +/// \overload +template< range_return_value re, class ForwardRange, class Value, + class SortPredicate > +inline BOOST_DEDUCED_TYPENAME range_return::type +upper_bound( const ForwardRange& rng, Value val, SortPredicate pred ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); + return range_return:: + pack(std::upper_bound(boost::begin(rng), boost::end(rng), val, pred), + rng); +} + } // namespace range using range::upper_bound; } // namespace boost diff --git a/include/boost/range/algorithm_ext/iota.hpp b/include/boost/range/algorithm_ext/iota.hpp index 65cbc89..f7af446 100644 --- a/include/boost/range/algorithm_ext/iota.hpp +++ b/include/boost/range/algorithm_ext/iota.hpp @@ -34,6 +34,19 @@ inline ForwardRange& iota( ForwardRange& rng, Value x ) return rng; } +template< class ForwardRange, class Value > +inline const ForwardRange& iota( const ForwardRange& rng, Value x ) +{ + BOOST_CONCEPT_ASSERT(( ForwardRangeConcept )); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iterator_t; + + 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 using range::iota; } // namespace boost diff --git a/include/boost/range/algorithm_ext/is_sorted.hpp b/include/boost/range/algorithm_ext/is_sorted.hpp index 69ead10..54fc038 100755 --- a/include/boost/range/algorithm_ext/is_sorted.hpp +++ b/include/boost/range/algorithm_ext/is_sorted.hpp @@ -51,7 +51,7 @@ template inline bool is_sorted(const SinglePassRange& rng) { BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((LessThanComparableConcept::type>)); + BOOST_RANGE_CONCEPT_ASSERT((LessThanComparableConcept::type>)); return range_detail::is_sorted(boost::begin(rng), boost::end(rng)); } @@ -59,8 +59,8 @@ inline bool is_sorted(const SinglePassRange& rng) template inline bool is_sorted(const SinglePassRange& rng, BinaryPredicate pred) { - BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); - BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, BOOST_DEDUCED_TYPENAME range_value::type>)); + BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept)); + BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, BOOST_DEDUCED_TYPENAME range_value::type>)); return range_detail::is_sorted(boost::begin(rng), boost::end(rng), pred); } diff --git a/include/boost/range/algorithm_ext/overwrite.hpp b/include/boost/range/algorithm_ext/overwrite.hpp index d2cf4ed..f84f6ea 100755 --- a/include/boost/range/algorithm_ext/overwrite.hpp +++ b/include/boost/range/algorithm_ext/overwrite.hpp @@ -50,6 +50,33 @@ inline void overwrite( const SinglePassRange1& from, SinglePassRange2& to ) } } +template< class SinglePassRange1, class SinglePassRange2 > +inline void overwrite( const SinglePassRange1& from, const SinglePassRange2& to ) +{ + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + + BOOST_DEDUCED_TYPENAME range_iterator::type + i = boost::begin(from), e = boost::end(from); + + BOOST_DEDUCED_TYPENAME range_iterator::type + out = boost::begin(to); + +#ifndef NDEBUG + BOOST_DEDUCED_TYPENAME range_iterator::type + last_out = boost::end(to); +#endif + + for( ; i != e; ++out, ++i ) + { +#ifndef NDEBUG + BOOST_ASSERT( out != last_out + && "out of bounds in boost::overwrite()" ); +#endif + *out = *i; + } +} + } // namespace range using range::overwrite; } // namespace boost From 74a01a4487415d9366e1d2c1422871d98aba9cbb Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 12 Jul 2010 00:12:49 +0000 Subject: [PATCH 10/32] [boost][range] - Improved handling of temporary ranges in range algorithms. [SVN r63903] --- test/algorithm_test/adjacent_find.cpp | 8 +- test/algorithm_test/binary_search.cpp | 4 + test/algorithm_test/copy.cpp | 7 + test/algorithm_test/copy_backward.cpp | 4 + test/algorithm_test/copy_n.cpp | 7 + test/algorithm_test/count.cpp | 40 +-- test/algorithm_test/count_if.cpp | 14 + test/algorithm_test/equal.cpp | 40 +++ test/algorithm_test/equal_range.cpp | 14 +- test/algorithm_test/fill.cpp | 6 + test/algorithm_test/find.cpp | 14 +- test/algorithm_test/find_end.cpp | 28 +- test/algorithm_test/find_first_of.cpp | 32 ++- test/algorithm_test/find_if.cpp | 10 +- test/algorithm_test/for_each.cpp | 3 + test/algorithm_test/generate.cpp | 6 + test/algorithm_test/heap.cpp | 23 ++ test/algorithm_test/includes.cpp | 8 + test/algorithm_test/inplace_merge.cpp | 19 ++ .../lexicographical_compare.cpp | 14 +- test/algorithm_test/lower_bound.cpp | 23 +- test/algorithm_test/max_element.cpp | 24 +- test/algorithm_test/merge.cpp | 80 ++++++ test/algorithm_test/min_element.cpp | 22 +- test/algorithm_test/mismatch.cpp | 245 +++++++++++------- test/algorithm_test/next_permutation.cpp | 21 +- test/algorithm_test/nth_element.cpp | 26 ++ test/algorithm_test/partial_sort.cpp | 22 ++ test/algorithm_test/partition.cpp | 33 ++- test/algorithm_test/prev_permutation.cpp | 24 +- test/algorithm_test/random_shuffle.cpp | 19 ++ test/algorithm_test/remove.cpp | 11 +- test/algorithm_test/remove_copy.cpp | 9 + test/algorithm_test/remove_copy_if.cpp | 12 +- test/algorithm_test/remove_if.cpp | 12 +- test/algorithm_test/replace.cpp | 9 +- test/algorithm_test/replace_copy.cpp | 12 +- test/algorithm_test/replace_copy_if.cpp | 13 +- test/algorithm_test/replace_if.cpp | 10 +- test/algorithm_test/reverse.cpp | 12 +- test/algorithm_test/reverse_copy.cpp | 15 +- test/algorithm_test/rotate.cpp | 16 +- test/algorithm_test/rotate_copy.cpp | 15 +- test/algorithm_test/search.cpp | 16 ++ test/algorithm_test/search_n.cpp | 10 +- test/algorithm_test/set_difference.cpp | 44 ++++ test/algorithm_test/set_intersection.cpp | 44 ++++ .../set_symmetric_difference.cpp | 44 ++++ test/algorithm_test/set_union.cpp | 40 +++ test/algorithm_test/sort.cpp | 16 +- test/algorithm_test/stable_partition.cpp | 28 +- test/algorithm_test/stable_sort.cpp | 22 +- test/algorithm_test/swap_ranges.cpp | 37 ++- test/algorithm_test/transform.cpp | 34 ++- test/algorithm_test/unique.cpp | 26 +- test/algorithm_test/unique_copy.cpp | 22 ++ test/algorithm_test/upper_bound.cpp | 25 +- 57 files changed, 1178 insertions(+), 216 deletions(-) diff --git a/test/algorithm_test/adjacent_find.cpp b/test/algorithm_test/adjacent_find.cpp index 914736b..63b65e8 100644 --- a/test/algorithm_test/adjacent_find.cpp +++ b/test/algorithm_test/adjacent_find.cpp @@ -9,7 +9,7 @@ // For more information, see http://www.boost.org/libs/range/ // #include - +#include #include #include @@ -38,14 +38,18 @@ namespace boost BOOST_CHECK( boost::adjacent_find(cont) == cont.end() ); BOOST_CHECK( boost::adjacent_find(cref_cont) == cref_cont.end() ); + BOOST_CHECK( boost::adjacent_find(boost::make_iterator_range(cont)) == cont.end() ); BOOST_CHECK( boost::adjacent_find(cont, pred) == cont.end() ); BOOST_CHECK( boost::adjacent_find(cref_cont, pred) == cref_cont.end() ); + BOOST_CHECK( boost::adjacent_find(boost::make_iterator_range(cont), pred) == cont.end() ); cont += 1; BOOST_CHECK( boost::adjacent_find(cont) == cont.end() ); BOOST_CHECK( boost::adjacent_find(cref_cont) == cref_cont.end() ); + BOOST_CHECK( boost::adjacent_find(boost::make_iterator_range(cont)) == cont.end() ); BOOST_CHECK( boost::adjacent_find(cont, pred) == cont.end() ); BOOST_CHECK( boost::adjacent_find(cref_cont, pred) == cref_cont.end() ); + BOOST_CHECK( boost::adjacent_find(boost::make_iterator_range(cont), pred) == cont.end() ); cont += 2,3,4,5,5,5,6,7,8,9; iterator_t it = boost::adjacent_find(cont); @@ -57,6 +61,8 @@ namespace boost { BOOST_CHECK( *it == 5 ); } + BOOST_CHECK( it == boost::adjacent_find(boost::make_iterator_range(cont)) ); + BOOST_CHECK( it_pred == boost::adjacent_find(boost::make_iterator_range(cont), pred) ); const_iterator_t cit = boost::adjacent_find(cref_cont); const_iterator_t cit_pred = boost::adjacent_find(cref_cont, pred); BOOST_CHECK( cit == cit_pred ); diff --git a/test/algorithm_test/binary_search.cpp b/test/algorithm_test/binary_search.cpp index e0aca31..2646c2e 100644 --- a/test/algorithm_test/binary_search.cpp +++ b/test/algorithm_test/binary_search.cpp @@ -37,6 +37,8 @@ namespace boost BOOST_CHECK( reference_result == test_result ); + BOOST_CHECK( test_result == boost::binary_search(boost::make_iterator_range(test), 5) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() @@ -68,6 +70,8 @@ namespace boost bool test_result = boost::binary_search(test, 5, pred); + BOOST_CHECK( test_result == boost::binary_search(boost::make_iterator_range(test), 5, pred) ); + BOOST_CHECK( reference_result == test_result ); BOOST_CHECK_EQUAL_COLLECTIONS( diff --git a/test/algorithm_test/copy.cpp b/test/algorithm_test/copy.cpp index 932d190..47f4172 100644 --- a/test/algorithm_test/copy.cpp +++ b/test/algorithm_test/copy.cpp @@ -42,6 +42,13 @@ namespace boost target.begin(), target.end(), source.begin(), source.end() ); + + it == boost::copy(boost::make_iterator_range(source), target.begin()); + + BOOST_CHECK( it == target.end() ); + + BOOST_CHECK_EQUAL_COLLECTIONS(target.begin(), target.end(), + source.begin(), source.end()); } void test_copy() diff --git a/test/algorithm_test/copy_backward.cpp b/test/algorithm_test/copy_backward.cpp index d66082a..3fd5679 100644 --- a/test/algorithm_test/copy_backward.cpp +++ b/test/algorithm_test/copy_backward.cpp @@ -39,6 +39,10 @@ namespace boost BOOST_CHECK( it == target.end() ); BOOST_CHECK_EQUAL_COLLECTIONS( target.begin(), target.end(), source.rbegin(), source.rend() ); + + BOOST_CHECK( it == boost::copy_backward(boost::make_iterator_range(source), target.begin()) ); + BOOST_CHECK_EQUAL_COLLECTIONS( target.begin(), target.end(), + source.rbegin(), source.rend() ); } void test_copy_backward() diff --git a/test/algorithm_test/copy_n.cpp b/test/algorithm_test/copy_n.cpp index 59bca9b..230eb03 100644 --- a/test/algorithm_test/copy_n.cpp +++ b/test/algorithm_test/copy_n.cpp @@ -40,6 +40,13 @@ namespace target.begin(), target.end(), source.begin(), source.end() ); + + it = boost::copy(boost::make_iterator_range(source), target.begin()); + + BOOST_CHECK( it == target.end() ); + + BOOST_CHECK_EQUAL_COLLECTIONS(target.begin(), target.end(), + source.begin(), source.end()); } void test_copy_n() diff --git a/test/algorithm_test/count.cpp b/test/algorithm_test/count.cpp index d364710..90b2090 100644 --- a/test/algorithm_test/count.cpp +++ b/test/algorithm_test/count.cpp @@ -31,28 +31,36 @@ namespace boost Container cont; const Container& cref_cont = cont; - BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0) ); - BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(boost::make_iterator_range(cont), 0u) ); cont += 1; - BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0) ); - BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0) ); - BOOST_CHECK_EQUAL( 1u, boost::count(cont, 1) ); - BOOST_CHECK_EQUAL( 1u, boost::count(cref_cont, 1) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(boost::make_iterator_range(cont), 0u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(cont, 1u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(cref_cont, 1u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(boost::make_iterator_range(cont), 1u) ); cont += 2,3,4,5,6,7,8,9; - BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0) ); - BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0) ); - BOOST_CHECK_EQUAL( 1u, boost::count(cont, 1) ); - BOOST_CHECK_EQUAL( 1u, boost::count(cref_cont, 1) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(boost::make_iterator_range(cont), 0u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(cont, 1u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(cref_cont, 1u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(boost::make_iterator_range(cont), 1u) ); cont += 2; - BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0) ); - BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0) ); - BOOST_CHECK_EQUAL( 1u, boost::count(cont, 1) ); - BOOST_CHECK_EQUAL( 1u, boost::count(cref_cont, 1) ); - BOOST_CHECK_EQUAL( 2u, boost::count(cont, 2) ); - BOOST_CHECK_EQUAL( 2u, boost::count(cref_cont, 2) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(cref_cont, 0u) ); + BOOST_CHECK_EQUAL( 0u, boost::count(boost::make_iterator_range(cont), 0u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(cont, 1u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(cref_cont, 1u) ); + BOOST_CHECK_EQUAL( 1u, boost::count(boost::make_iterator_range(cont), 1u) ); + BOOST_CHECK_EQUAL( 2u, boost::count(cont, 2u) ); + BOOST_CHECK_EQUAL( 2u, boost::count(cref_cont, 2u) ); + BOOST_CHECK_EQUAL( 2u, boost::count(boost::make_iterator_range(cont), 2u) ); } void test_count() diff --git a/test/algorithm_test/count_if.cpp b/test/algorithm_test/count_if.cpp index 11526b4..c3d1b8b 100644 --- a/test/algorithm_test/count_if.cpp +++ b/test/algorithm_test/count_if.cpp @@ -15,6 +15,7 @@ #include #include "../test_function/false_predicate.hpp" +#include "../test_function/true_predicate.hpp" #include "../test_function/equal_to_x.hpp" #include #include @@ -38,29 +39,42 @@ namespace boost BOOST_CHECK_EQUAL( 0u, boost::count_if(cont, pred_t(0)) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(cref_cont, pred_t(0)) ); + BOOST_CHECK_EQUAL( 0u, boost::count_if(boost::make_iterator_range(cont), pred_t(0)) ); cont += 1; BOOST_CHECK_EQUAL( 0u, boost::count_if(cont, pred_t(0)) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(cref_cont, pred_t(0)) ); + BOOST_CHECK_EQUAL( 0u, boost::count_if(boost::make_iterator_range(cont), pred_t(0)) ); BOOST_CHECK_EQUAL( 1u, boost::count_if(cont, pred_t(1)) ); BOOST_CHECK_EQUAL( 1u, boost::count_if(cref_cont, pred_t(1)) ); + BOOST_CHECK_EQUAL( 1u, boost::count_if(boost::make_iterator_range(cont), pred_t(1)) ); cont += 2,3,4,5,6,7,8,9; BOOST_CHECK_EQUAL( 0u, boost::count_if(cont, pred_t(0)) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(cref_cont, pred_t(0)) ); + BOOST_CHECK_EQUAL( 0u, boost::count_if(boost::make_iterator_range(cont), pred_t(0)) ); BOOST_CHECK_EQUAL( 1u, boost::count_if(cont, pred_t(1)) ); BOOST_CHECK_EQUAL( 1u, boost::count_if(cref_cont, pred_t(1)) ); + BOOST_CHECK_EQUAL( 1u, boost::count_if(boost::make_iterator_range(cont), pred_t(1)) ); cont += 2; BOOST_CHECK_EQUAL( 0u, boost::count_if(cont, pred_t(0)) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(cref_cont, pred_t(0)) ); + BOOST_CHECK_EQUAL( 0u, boost::count_if(boost::make_iterator_range(cont), pred_t(0)) ); BOOST_CHECK_EQUAL( 1u, boost::count_if(cont, pred_t(1)) ); BOOST_CHECK_EQUAL( 1u, boost::count_if(cref_cont, pred_t(1)) ); + BOOST_CHECK_EQUAL( 1u, boost::count_if(boost::make_iterator_range(cont), pred_t(1)) ); BOOST_CHECK_EQUAL( 2u, boost::count_if(cont, pred_t(2)) ); BOOST_CHECK_EQUAL( 2u, boost::count_if(cref_cont, pred_t(2)) ); + BOOST_CHECK_EQUAL( 2u, boost::count_if(boost::make_iterator_range(cont), pred_t(2)) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(cont, false_predicate()) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(cref_cont, false_predicate()) ); + BOOST_CHECK_EQUAL( 0u, boost::count_if(boost::make_iterator_range(cont), false_predicate()) ); + + BOOST_CHECK_EQUAL( cont.size(), boost::count_if(cont, true_predicate()) ); + BOOST_CHECK_EQUAL( cont.size(), boost::count_if(cref_cont, true_predicate()) ); + BOOST_CHECK_EQUAL( cont.size(), boost::count_if(boost::make_iterator_range(cont), true_predicate()) ); } void test_count_if() diff --git a/test/algorithm_test/equal.cpp b/test/algorithm_test/equal.cpp index d750706..243f064 100644 --- a/test/algorithm_test/equal.cpp +++ b/test/algorithm_test/equal.cpp @@ -38,30 +38,70 @@ namespace boost Container2& cont2 = mcont2; BOOST_CHECK( boost::equal(cont1, cont2) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( boost::equal(cont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2)) ); BOOST_CHECK( boost::equal(cont1, cont2, std::equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2, std::equal_to()) ); + BOOST_CHECK( boost::equal(cont1, boost::make_iterator_range(cont2), std::equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::equal_to()) ); BOOST_CHECK( boost::equal(cont1, cont2, std::not_equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2, std::not_equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::not_equal_to()) ); mcont1 += 1; BOOST_CHECK( !boost::equal(cont1, cont2) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( !boost::equal(cont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2)) ); BOOST_CHECK( !boost::equal(cont1, cont2, std::equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2, std::equal_to()) ); + BOOST_CHECK( !boost::equal(cont1, boost::make_iterator_range(cont2), std::equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::equal_to()) ); BOOST_CHECK( !boost::equal(cont1, cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::not_equal_to()) ); mcont1.clear(); mcont2 += 1; BOOST_CHECK( !boost::equal(cont1, cont2) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2)) ); BOOST_CHECK( !boost::equal(cont1, cont2, std::equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2, std::equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::equal_to()) ); BOOST_CHECK( !boost::equal(cont1, cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::not_equal_to()) ); mcont1 += 1; BOOST_CHECK( boost::equal(cont1, cont2) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( boost::equal(cont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2)) ); BOOST_CHECK( boost::equal(cont1, cont2, std::equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2, std::equal_to()) ); + BOOST_CHECK( boost::equal(cont1, boost::make_iterator_range(cont2), std::equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::equal_to()) ); BOOST_CHECK( !boost::equal(cont1, cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(cont1, boost::make_iterator_range(cont2), std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::not_equal_to()) ); mcont1 += 2,3,4,5,6,7,8,9; mcont2 += 2,3,4,5,6,7,8,9; BOOST_CHECK( boost::equal(cont1, cont2) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( boost::equal(cont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2)) ); BOOST_CHECK( boost::equal(cont1, cont2, std::equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), cont2, std::equal_to()) ); + BOOST_CHECK( boost::equal(cont1, boost::make_iterator_range(cont2), std::equal_to()) ); + BOOST_CHECK( boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::equal_to()) ); BOOST_CHECK( !boost::equal(cont1, cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), cont2, std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(cont1, boost::make_iterator_range(cont2), std::not_equal_to()) ); + BOOST_CHECK( !boost::equal(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), std::not_equal_to()) ); } template< class Container1, class Container2 > diff --git a/test/algorithm_test/equal_range.cpp b/test/algorithm_test/equal_range.cpp index 652508c..612f1a4 100644 --- a/test/algorithm_test/equal_range.cpp +++ b/test/algorithm_test/equal_range.cpp @@ -70,8 +70,11 @@ namespace boost pair_t test_result = boost::equal_range(test, 5); - check_result(reference, reference_result, - test, test_result); + check_result(reference, reference_result, test, test_result); + + pair_t test_result2 = boost::equal_range(boost::make_iterator_range(test), 5); + + check_result(reference, reference_result, test, test_result2); } template @@ -107,8 +110,11 @@ namespace boost pair_t test_result = boost::equal_range(test, 5, BinaryPredicate()); - check_result(reference, reference_result, - test, test_result); + check_result(reference, reference_result, test, test_result); + + pair_t test_result2 = boost::equal_range(boost::make_iterator_range(test), 5, BinaryPredicate()); + + check_result(reference, reference_result, test, test_result2); } template diff --git a/test/algorithm_test/fill.cpp b/test/algorithm_test/fill.cpp index 93dba7e..2f975c4 100644 --- a/test/algorithm_test/fill.cpp +++ b/test/algorithm_test/fill.cpp @@ -36,6 +36,12 @@ namespace boost BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), target.begin(), target.end() ); + + Container target2(cont); + boost::fill(boost::make_iterator_range(target2), 1); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target2.begin(), target2.end() ); } template< class Container > diff --git a/test/algorithm_test/find.cpp b/test/algorithm_test/find.cpp index fd179f1..6eb1528 100644 --- a/test/algorithm_test/find.cpp +++ b/test/algorithm_test/find.cpp @@ -33,7 +33,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::find(cont, 3); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::find(cont, 3); + iter_t result2 = boost::find(boost::make_iterator_range(cont), 3); + BOOST_CHECK( result == result2 ); + return result; } template @@ -43,7 +47,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy&, Container& cont) { - return boost::find(cont, 3); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::find(cont, 3); + result_t result2 = boost::find(boost::make_iterator_range(cont), 3); + BOOST_CHECK( result == result2 ); + return result; } }; @@ -90,6 +98,8 @@ namespace boost std::vector vi; const std::vector& cvi = vi; std::vector::const_iterator it = boost::find(vi, 0); + std::vector::const_iterator it2 = boost::find(cvi, 0); + BOOST_CHECK( it == it2 ); } } } diff --git a/test/algorithm_test/find_end.cpp b/test/algorithm_test/find_end.cpp index a126e87..0592d5f 100644 --- a/test/algorithm_test/find_end.cpp +++ b/test/algorithm_test/find_end.cpp @@ -41,7 +41,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::find_end(cont, m_cont); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::find_end(cont, m_cont); + BOOST_CHECK( result == boost::find_end(boost::make_iterator_range(cont), m_cont) ); + BOOST_CHECK( result == boost::find_end(cont, boost::make_iterator_range(m_cont)) ); + BOOST_CHECK( result == boost::find_end(boost::make_iterator_range(cont), boost::make_iterator_range(m_cont)) ); + return result; } template @@ -51,7 +56,13 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::find_end(cont, policy.cont()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::find_end(cont, policy.cont()); + BOOST_CHECK( result == boost::find_end(boost::make_iterator_range(cont), policy.cont()) ); + BOOST_CHECK( result == boost::find_end(cont, boost::make_iterator_range(policy.cont())) ); + BOOST_CHECK( result == boost::find_end(boost::make_iterator_range(cont), + boost::make_iterator_range(policy.cont())) ); + return result; } }; @@ -84,7 +95,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::find_end(cont, m_cont, m_pred); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t it = boost::find_end(cont, m_cont, m_pred); + BOOST_CHECK( it == boost::find_end(boost::make_iterator_range(cont), m_cont, m_pred) ); + BOOST_CHECK( it == boost::find_end(cont, boost::make_iterator_range(m_cont), m_pred) ); + BOOST_CHECK( it == boost::find_end(boost::make_iterator_range(cont), boost::make_iterator_range(m_cont), m_pred) ); + return it; } template @@ -94,6 +110,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::find_end(cont, policy.cont(), policy.pred()); + BOOST_CHECK( result == boost::find_end(boost::make_iterator_range(cont), policy.cont(), policy.pred()) ); + BOOST_CHECK( result == boost::find_end(cont, boost::make_iterator_range(policy.cont()), policy.pred()) ); + BOOST_CHECK( result == boost::find_end(boost::make_iterator_range(cont), + boost::make_iterator_range(policy.cont()), policy.pred()) ); return boost::find_end(cont, policy.cont(), policy.pred()); } }; diff --git a/test/algorithm_test/find_first_of.cpp b/test/algorithm_test/find_first_of.cpp index 9ff7adb..c96d36a 100644 --- a/test/algorithm_test/find_first_of.cpp +++ b/test/algorithm_test/find_first_of.cpp @@ -41,7 +41,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::find_first_of(cont, m_cont); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::find_first_of(cont, m_cont); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), m_cont) ); + BOOST_CHECK( result == boost::find_first_of(cont, boost::make_iterator_range(m_cont)) ); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), boost::make_iterator_range(m_cont)) ); + return result; } template @@ -51,7 +56,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::find_first_of(cont, policy.cont()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::find_first_of(cont, policy.cont()); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), policy.cont()) ); + BOOST_CHECK( result == boost::find_first_of(cont, boost::make_iterator_range(policy.cont())) ); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), boost::make_iterator_range(policy.cont())) ); + return result; } }; @@ -84,7 +94,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::find_first_of(cont, m_cont, m_pred); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::find_first_of(cont, m_cont, m_pred); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), m_cont, m_pred) ); + BOOST_CHECK( result == boost::find_first_of(cont, boost::make_iterator_range(m_cont), m_pred) ); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), boost::make_iterator_range(m_cont), m_pred) ); + return result; } template @@ -94,7 +109,12 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::find_first_of(cont, policy.cont(), policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::find_first_of(cont, policy.cont(), policy.pred()); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), policy.cont(), policy.pred()) ); + BOOST_CHECK( result == boost::find_first_of(cont, boost::make_iterator_range(policy.cont()), policy.pred()) ); + BOOST_CHECK( result == boost::find_first_of(boost::make_iterator_range(cont), boost::make_iterator_range(policy.cont()), policy.pred()) ); + return result; } }; @@ -103,8 +123,8 @@ namespace boost reference(Container& cont) { return std::find_first_of(cont.begin(), cont.end(), - m_cont.begin(), m_cont.end(), - m_pred); + m_cont.begin(), m_cont.end(), + m_pred); } private: diff --git a/test/algorithm_test/find_if.cpp b/test/algorithm_test/find_if.cpp index a5fe459..04fe6f2 100644 --- a/test/algorithm_test/find_if.cpp +++ b/test/algorithm_test/find_if.cpp @@ -38,7 +38,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::find_if(cont, m_pred); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::find_if(cont, m_pred); + BOOST_CHECK( result == boost::find_if(boost::make_iterator_range(cont), m_pred) ); + return result; } template @@ -48,7 +51,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(find_if_test_policy& policy, Container& cont) { - return boost::find_if(cont, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::find_if(cont, policy.pred()); + BOOST_CHECK( result == boost::find_if(boost::make_iterator_range(cont), policy.pred()) ); + return result; } }; diff --git a/test/algorithm_test/for_each.cpp b/test/algorithm_test/for_each.cpp index 37614ad..2ef51bf 100644 --- a/test/algorithm_test/for_each.cpp +++ b/test/algorithm_test/for_each.cpp @@ -42,6 +42,9 @@ namespace boost // Test the mutable version fn_t result_fn = boost::for_each(rng, fn_t(rng)); BOOST_CHECK_EQUAL( boost::udistance(rng), result_fn.invocation_count() ); + + fn_t result_fn2 = boost::for_each(boost::make_iterator_range(rng), fn_t(rng)); + BOOST_CHECK_EQUAL( boost::udistance(rng), result_fn.invocation_count() ); // Test the constant version const SinglePassRange& cref_rng = rng; diff --git a/test/algorithm_test/generate.cpp b/test/algorithm_test/generate.cpp index ab47b06..d8fc0e6 100644 --- a/test/algorithm_test/generate.cpp +++ b/test/algorithm_test/generate.cpp @@ -49,6 +49,12 @@ namespace boost BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() ); + + Container test2(cont); + boost::generate(boost::make_iterator_range(test2), generator_fn()); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/heap.cpp b/test/algorithm_test/heap.cpp index 933d1f6..74b7fa3 100644 --- a/test/algorithm_test/heap.cpp +++ b/test/algorithm_test/heap.cpp @@ -41,28 +41,39 @@ namespace boost reference += 1,2,3,4,5,6,7,8,9; std::vector test_cont(reference); + std::vector test_cont2(reference); std::make_heap(reference.begin(), reference.end()); boost::make_heap(test_cont); check_equal(reference, test_cont); + boost::make_heap(boost::make_iterator_range(test_cont2)); + check_equal(reference, test_cont2); std::push_heap(reference.begin(), reference.end()); boost::push_heap(test_cont); check_equal(reference, test_cont); + boost::push_heap(boost::make_iterator_range(test_cont2)); + check_equal(reference, test_cont2); std::make_heap(reference.begin(), reference.end()); boost::make_heap(test_cont); + boost::make_heap(boost::make_iterator_range(test_cont2)); std::sort_heap(reference.begin(), reference.end()); boost::sort_heap(test_cont); check_equal(reference, test_cont); + boost::sort_heap(boost::make_iterator_range(test_cont2)); + check_equal(reference, test_cont2); std::make_heap(reference.begin(), reference.end()); boost::make_heap(test_cont); + boost::make_heap(boost::make_iterator_range(test_cont2)); std::pop_heap(reference.begin(), reference.end()); boost::pop_heap(test_cont); check_equal(reference, test_cont); + boost::pop_heap(boost::make_iterator_range(test_cont2)); + check_equal(reference, test_cont2); } template @@ -75,30 +86,42 @@ namespace boost std::sort(reference.begin(), reference.end(), pred); std::vector test_cont(reference); + std::vector test_cont2(reference); std::make_heap(reference.begin(), reference.end(), pred); boost::make_heap(test_cont, pred); check_equal(reference, test_cont); + boost::make_heap(boost::make_iterator_range(test_cont2), pred); + check_equal(reference, test_cont2); reference.push_back(5); test_cont.push_back(5); + test_cont2.push_back(5); std::push_heap(reference.begin(), reference.end(), pred); boost::push_heap(test_cont, pred); check_equal(reference, test_cont); + boost::push_heap(boost::make_iterator_range(test_cont2), pred); + check_equal(reference, test_cont2); std::make_heap(reference.begin(), reference.end(), pred); boost::make_heap(test_cont, pred); + boost::make_heap(boost::make_iterator_range(test_cont2), pred); std::sort_heap(reference.begin(), reference.end(), pred); boost::sort_heap(test_cont, pred); check_equal(reference, test_cont); + boost::sort_heap(boost::make_iterator_range(test_cont2), pred); + check_equal(reference, test_cont2); std::make_heap(reference.begin(), reference.end(), pred); boost::make_heap(test_cont, pred); + boost::make_heap(boost::make_iterator_range(test_cont2), pred); std::pop_heap(reference.begin(), reference.end(), pred); boost::pop_heap(test_cont, pred); check_equal(reference, test_cont); + boost::pop_heap(boost::make_iterator_range(test_cont2), pred); + check_equal(reference, test_cont2); } void test_heap() diff --git a/test/algorithm_test/includes.cpp b/test/algorithm_test/includes.cpp index f928957..8977532 100644 --- a/test/algorithm_test/includes.cpp +++ b/test/algorithm_test/includes.cpp @@ -46,6 +46,10 @@ namespace boost old_cont2.begin(), old_cont2.end(), cont2.begin(), cont2.end() ); + + BOOST_CHECK( test_result == boost::includes(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( test_result == boost::includes(cont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( test_result == boost::includes(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2)) ); } template @@ -88,6 +92,10 @@ namespace boost old_cont2.begin(), old_cont2.end(), cont2.begin(), cont2.end() ); + + BOOST_CHECK( test_result == boost::includes(boost::make_iterator_range(cont1), cont2, pred) ); + BOOST_CHECK( test_result == boost::includes(cont1, boost::make_iterator_range(cont2), pred) ); + BOOST_CHECK( test_result == boost::includes(boost::make_iterator_range(cont1), boost::make_iterator_range(cont2), pred) ); } template diff --git a/test/algorithm_test/inplace_merge.cpp b/test/algorithm_test/inplace_merge.cpp index f109257..d0cad73 100644 --- a/test/algorithm_test/inplace_merge.cpp +++ b/test/algorithm_test/inplace_merge.cpp @@ -35,6 +35,7 @@ namespace boost cont2.begin(), cont2.end()); std::vector test_target(reference_target); + std::vector test_target2(reference_target); std::inplace_merge(reference_target.begin(), reference_target.begin() + cont1.size(), @@ -47,6 +48,14 @@ namespace boost reference_target.begin(), reference_target.end(), test_target.begin(), test_target.end() ); + + boost::inplace_merge(boost::make_iterator_range(test_target2), + test_target2.begin() + cont1.size()); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target2.begin(), test_target2.end() + ); } template @@ -75,6 +84,7 @@ namespace boost cont2.begin(), cont2.end()); std::vector test_target(reference_target); + std::vector test_target2(reference_target); std::inplace_merge(reference_target.begin(), reference_target.begin() + cont1.size(), @@ -88,6 +98,15 @@ namespace boost reference_target.begin(), reference_target.end(), test_target.begin(), test_target.end() ); + + boost::inplace_merge(boost::make_iterator_range(test_target2), + test_target2.begin() + cont1.size(), + pred); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target2.begin(), test_target2.end() + ); } template diff --git a/test/algorithm_test/lexicographical_compare.cpp b/test/algorithm_test/lexicographical_compare.cpp index c57f390..f724bd1 100644 --- a/test/algorithm_test/lexicographical_compare.cpp +++ b/test/algorithm_test/lexicographical_compare.cpp @@ -28,13 +28,16 @@ namespace boost void test_lexicographical_compare_impl_nopred(ForwardRange1& rng1, ForwardRange2& rng2) { - bool reference = std::lexicographical_compare( + const bool reference = std::lexicographical_compare( boost::begin(rng1), boost::end(rng1), boost::begin(rng2), boost::end(rng2)); - bool test = boost::lexicographical_compare(rng1, rng2); + const bool test = boost::lexicographical_compare(rng1, rng2); BOOST_CHECK( reference == test ); + BOOST_CHECK( test == boost::lexicographical_compare(boost::make_iterator_range(rng1), rng2) ); + BOOST_CHECK( test == boost::lexicographical_compare(rng1, boost::make_iterator_range(rng2)) ); + BOOST_CHECK( test == boost::lexicographical_compare(boost::make_iterator_range(rng1), boost::make_iterator_range(rng2)) ); } template diff --git a/test/algorithm_test/lower_bound.cpp b/test/algorithm_test/lower_bound.cpp index ca622bc..e627708 100644 --- a/test/algorithm_test/lower_bound.cpp +++ b/test/algorithm_test/lower_bound.cpp @@ -33,7 +33,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::lower_bound(cont, 5); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::lower_bound(cont, 5); + BOOST_CHECK( result == boost::lower_bound(boost::make_iterator_range(cont), 5) ); + return result; } template @@ -43,7 +46,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy&, Container& cont) { - return boost::lower_bound(cont, 5); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::lower_bound(cont, 5); + BOOST_CHECK( result == boost::lower_bound(boost::make_iterator_range(cont), 5) ); + return result; } }; @@ -62,7 +68,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::lower_bound(cont, 5, m_pred); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::lower_bound(cont, 5, m_pred); + BOOST_CHECK( result == boost::lower_bound( + boost::make_iterator_range(cont), 5, m_pred) ); + return result; } template< range_return_value return_type > @@ -72,8 +82,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::lower_bound( - cont, 5, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::lower_bound(cont, 5, policy.pred()); + BOOST_CHECK( result == boost::lower_bound( + boost::make_iterator_range(cont), 5, policy.pred()) ); + return result; } }; diff --git a/test/algorithm_test/max_element.cpp b/test/algorithm_test/max_element.cpp index d4c70ca..c4c6cb9 100644 --- a/test/algorithm_test/max_element.cpp +++ b/test/algorithm_test/max_element.cpp @@ -33,7 +33,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::max_element(cont); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::max_element(cont); + BOOST_CHECK( result == boost::max_element( + boost::make_iterator_range(cont)) ); + return result; } template @@ -43,7 +47,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy&, Container& cont) { - return boost::max_element(cont); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::max_element(cont); + BOOST_CHECK( result == boost::max_element( + boost::make_iterator_range(cont)) ); + return result; } }; @@ -63,7 +71,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::max_element(cont, Pred()); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::max_element(cont, Pred()); + BOOST_CHECK( result == boost::max_element( + boost::make_iterator_range(cont), Pred()) ); + return result; } Pred pred() const { return Pred(); } @@ -75,7 +87,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::max_element(cont, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::max_element(cont, policy.pred()); + BOOST_CHECK( result == boost::max_element( + boost::make_iterator_range(cont), policy.pred()) ); + return result; } }; diff --git a/test/algorithm_test/merge.cpp b/test/algorithm_test/merge.cpp index aed7cd7..5038782 100644 --- a/test/algorithm_test/merge.cpp +++ b/test/algorithm_test/merge.cpp @@ -51,6 +51,46 @@ namespace boost reference_target.begin(), reference_target.end(), test_target.begin(), test_target.end() ); + + test_it = boost::merge(boost::make_iterator_range(cont1), + cont2, test_target.begin()); + + BOOST_CHECK_EQUAL( + std::distance(reference_target.begin(), reference_it), + std::distance(test_target.begin(), test_it) + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target.begin(), test_target.end() + ); + + test_it = boost::merge(cont1, boost::make_iterator_range(cont2), + test_target.begin()); + + BOOST_CHECK_EQUAL( + std::distance(reference_target.begin(), reference_it), + std::distance(test_target.begin(), test_it) + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target.begin(), test_target.end() + ); + + test_it = boost::merge(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_target.begin()); + + BOOST_CHECK_EQUAL( + std::distance(reference_target.begin(), reference_it), + std::distance(test_target.begin(), test_it) + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target.begin(), test_target.end() + ); } template @@ -95,6 +135,46 @@ namespace boost reference_target.begin(), reference_target.end(), test_target.begin(), test_target.end() ); + + test_it = boost::merge(boost::make_iterator_range(cont1), cont2, + test_target.begin(), pred); + + BOOST_CHECK_EQUAL( + std::distance(reference_target.begin(), reference_it), + std::distance(test_target.begin(), test_it) + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target.begin(), test_target.end() + ); + + test_it = boost::merge(cont1, boost::make_iterator_range(cont2), + test_target.begin(), pred); + + BOOST_CHECK_EQUAL( + std::distance(reference_target.begin(), reference_it), + std::distance(test_target.begin(), test_it) + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target.begin(), test_target.end() + ); + + test_it = boost::merge(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_target.begin(), pred); + + BOOST_CHECK_EQUAL( + std::distance(reference_target.begin(), reference_it), + std::distance(test_target.begin(), test_it) + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference_target.begin(), reference_target.end(), + test_target.begin(), test_target.end() + ); } template diff --git a/test/algorithm_test/min_element.cpp b/test/algorithm_test/min_element.cpp index c68a655..c8fceda 100644 --- a/test/algorithm_test/min_element.cpp +++ b/test/algorithm_test/min_element.cpp @@ -33,7 +33,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::min_element(cont); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::min_element(cont); + BOOST_CHECK( result == boost::min_element(boost::make_iterator_range(cont)) ); + return result; } template< range_return_value return_type > @@ -43,7 +46,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy&, Container& cont) { - return boost::min_element(cont); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::min_element(cont); + BOOST_CHECK( result == boost::min_element(boost::make_iterator_range(cont)) ); + return result; } }; @@ -63,7 +69,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::min_element(cont, Pred()); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::min_element(cont, Pred()); + BOOST_CHECK( result == boost::min_element( + boost::make_iterator_range(cont), Pred()) ); + return result; } Pred pred() const { return Pred(); } @@ -75,7 +85,11 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::min_element(cont, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::min_element(cont, policy.pred()); + BOOST_CHECK( result == boost::min_element( + boost::make_iterator_range(cont), policy.pred()) ); + return result; } }; diff --git a/test/algorithm_test/mismatch.cpp b/test/algorithm_test/mismatch.cpp index eb8f5e7..2336e59 100644 --- a/test/algorithm_test/mismatch.cpp +++ b/test/algorithm_test/mismatch.cpp @@ -23,6 +23,130 @@ namespace boost { namespace { + template< class Container1, class Container2 > + void eval_mismatch(Container1& cont1, + Container2& cont2, + BOOST_DEDUCED_TYPENAME range_iterator::type ref_it1, + BOOST_DEDUCED_TYPENAME range_iterator::type ref_it2 + ) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter1_t; + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter2_t; + typedef std::pair result_pair_t; + + result_pair_t result = boost::mismatch(cont1, cont2); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + cont2); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + + result = boost::mismatch(cont1, + boost::make_iterator_range(cont2)); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2)); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + } + + template< class Container1, class Container2, class Pred > + void eval_mismatch(Container1& cont1, + Container2& cont2, + Pred pred, + BOOST_DEDUCED_TYPENAME range_iterator::type ref_it1, + BOOST_DEDUCED_TYPENAME range_iterator::type ref_it2 + ) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter1_t; + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter2_t; + typedef std::pair result_pair_t; + + result_pair_t result = boost::mismatch(cont1, cont2, pred); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + cont2, pred); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + + result = boost::mismatch(cont1, + boost::make_iterator_range(cont2), pred); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + pred); + BOOST_CHECK( result.first == ref_it1 ); + BOOST_CHECK( result.second == ref_it2 ); + } + + template< class Container1, class Container2 > + void eval_mismatch(Container1& cont1, + Container2& cont2, + const int ref1, + const int ref2) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter1_t; + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter2_t; + typedef std::pair result_pair_t; + + result_pair_t result = boost::mismatch(cont1, cont2); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + + result = boost::mismatch(boost::make_iterator_range(cont1), cont2); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + + result = boost::mismatch(cont1, boost::make_iterator_range(cont2)); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2)); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + } + + template< class Container1, class Container2, class Pred > + void eval_mismatch(Container1& cont1, + Container2& cont2, + Pred pred, + const int ref1, + const int ref2) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter1_t; + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter2_t; + typedef std::pair result_pair_t; + + result_pair_t result = boost::mismatch(cont1, cont2, pred); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + cont2, pred); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + + result = boost::mismatch(cont1, boost::make_iterator_range(cont2), + pred); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + + result = boost::mismatch(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + pred); + BOOST_CHECK_EQUAL( ref1, *result.first ); + BOOST_CHECK_EQUAL( ref2, *result.second ); + } + template< class Container1, class Container2 > void test_mismatch_impl() { @@ -46,107 +170,42 @@ namespace boost typedef std::pair pair_mcit_t; typedef std::pair pair_ccit_t; - pair_mmit_t pair_mmit = boost::mismatch(cont1, cont2); - BOOST_CHECK( pair_mmit.first == cont1.end() ); - BOOST_CHECK( pair_mmit.second == cont2.end() ); - pair_mmit = boost::mismatch(cont1, cont2, std::equal_to()); - BOOST_CHECK( pair_mmit.first == cont1.end() ); - BOOST_CHECK( pair_mmit.second == cont2.end() ); - - pair_cmit_t pair_cmit = boost::mismatch(cref_cont1, cont2); - BOOST_CHECK( pair_cmit.first == cref_cont1.end() ); - BOOST_CHECK( pair_cmit.second == cont2.end() ); - pair_cmit = boost::mismatch(cref_cont1, cont2, std::equal_to()); - BOOST_CHECK( pair_cmit.first == cref_cont1.end() ); - BOOST_CHECK( pair_cmit.second == cont2.end() ); - - pair_mcit_t pair_mcit = boost::mismatch(cont1, cref_cont2); - BOOST_CHECK( pair_mcit.first == cont1.end() ); - BOOST_CHECK( pair_mcit.second == cref_cont2.end() ); - pair_mcit = boost::mismatch(cont1, cref_cont2, std::equal_to()); - BOOST_CHECK( pair_mcit.first == cont1.end() ); - BOOST_CHECK( pair_mcit.second == cref_cont2.end() ); - - pair_ccit_t pair_ccit = boost::mismatch(cref_cont1, cref_cont2); - BOOST_CHECK( pair_ccit.first == cref_cont1.end() ); - BOOST_CHECK( pair_ccit.second == cref_cont2.end() ); - pair_ccit = boost::mismatch(cref_cont1, cref_cont2, std::equal_to()); - BOOST_CHECK( pair_ccit.first == cref_cont1.end() ); - BOOST_CHECK( pair_ccit.second == cref_cont2.end() ); + eval_mismatch(cont1, cont2, cont1.end(), cont2.end()); + eval_mismatch(cont1, cont2, std::equal_to(), cont1.end(), cont2.end()); + eval_mismatch(cref_cont1, cont2, cref_cont1.end(), cont2.end()); + eval_mismatch(cref_cont1, cont2, std::equal_to(), cref_cont1.end(), cont2.end()); + eval_mismatch(cont1, cref_cont2, cont1.end(), cref_cont2.end()); + eval_mismatch(cont1, cref_cont2, std::equal_to(), cont1.end(), cref_cont2.end()); + eval_mismatch(cref_cont1, cref_cont2, cref_cont1.end(), cref_cont2.end()); + eval_mismatch(cref_cont1, cref_cont2, std::equal_to(), cref_cont1.end(), cref_cont2.end()); cont1 += 1,2,3,4; cont2 += 1,2,3,4; - pair_mmit = boost::mismatch(cont1, cont2); - BOOST_CHECK( pair_mmit.first == cont1.end() ); - BOOST_CHECK( pair_mmit.second == cont2.end() ); - pair_mmit = boost::mismatch(cont1, cont2, std::equal_to()); - BOOST_CHECK( pair_mmit.first == cont1.end() ); - BOOST_CHECK( pair_mmit.second == cont2.end() ); - - pair_cmit = boost::mismatch(cref_cont1, cont2); - BOOST_CHECK( pair_cmit.first == cref_cont1.end() ); - BOOST_CHECK( pair_cmit.second == cont2.end() ); - pair_cmit = boost::mismatch(cref_cont1, cont2, std::equal_to()); - BOOST_CHECK( pair_cmit.first == cref_cont1.end() ); - BOOST_CHECK( pair_cmit.second == cont2.end() ); - - pair_mcit = boost::mismatch(cont1, cref_cont2); - BOOST_CHECK( pair_mcit.first == cont1.end() ); - BOOST_CHECK( pair_mcit.second == cref_cont2.end() ); - pair_mcit = boost::mismatch(cont1, cref_cont2, std::equal_to()); - BOOST_CHECK( pair_mcit.first == cont1.end() ); - BOOST_CHECK( pair_mcit.second == cref_cont2.end() ); - - pair_ccit = boost::mismatch(cref_cont1, cref_cont2); - BOOST_CHECK( pair_ccit.first == cref_cont1.end() ); - BOOST_CHECK( pair_ccit.second == cref_cont2.end() ); - pair_ccit = boost::mismatch(cref_cont1, cref_cont2, std::equal_to()); - BOOST_CHECK( pair_ccit.first == cref_cont1.end() ); - BOOST_CHECK( pair_ccit.second == cref_cont2.end() ); + eval_mismatch(cont1, cont2, cont1.end(), cont2.end()); + eval_mismatch(cont1, cont2, std::equal_to(), cont1.end(), cont2.end()); + eval_mismatch(cref_cont1, cont2, cref_cont1.end(), cont2.end()); + eval_mismatch(cref_cont1, cont2, std::equal_to(), cref_cont1.end(), cont2.end()); + eval_mismatch(cont1, cref_cont2, cont1.end(), cref_cont2.end()); + eval_mismatch(cont1, cref_cont2, std::equal_to(), cont1.end(), cref_cont2.end()); + eval_mismatch(cref_cont1, cref_cont2, cref_cont1.end(), cref_cont2.end()); + eval_mismatch(cref_cont1, cref_cont2, std::equal_to(), cref_cont1.end(), cref_cont2.end()); cont1.clear(); cont2.clear(); cont1 += 1,2,3,4; cont2 += 1,2,5,4; - pair_mmit = boost::mismatch(cont1, cont2); - BOOST_CHECK( pair_mmit.first != cont1.end() && *pair_mmit.first == 3 ); - BOOST_CHECK( pair_mmit.second != cont2.end() && *pair_mmit.second == 5 ); - pair_mmit = boost::mismatch(cont1, cont2, std::equal_to()); - BOOST_CHECK( pair_mmit.first != cont1.end() && *pair_mmit.first == 3 ); - BOOST_CHECK( pair_mmit.second != cont2.end() && *pair_mmit.second == 5 ); - pair_mmit = boost::mismatch(cont1, cont2, std::not_equal_to()); - BOOST_CHECK( pair_mmit.first == cont1.begin() ); - BOOST_CHECK( pair_mmit.second == cont2.begin() ); - - pair_cmit = boost::mismatch(cref_cont1, cont2); - BOOST_CHECK( pair_cmit.first != cref_cont1.end() && *pair_cmit.first == 3 ); - BOOST_CHECK( pair_cmit.second != cont2.end() && *pair_cmit.second == 5 ); - pair_cmit = boost::mismatch(cref_cont1, cont2, std::equal_to()); - BOOST_CHECK( pair_cmit.first != cref_cont1.end() && *pair_cmit.first == 3 ); - BOOST_CHECK( pair_cmit.second != cont2.end() && *pair_cmit.second == 5 ); - pair_cmit = boost::mismatch(cref_cont1, cont2, std::not_equal_to()); - BOOST_CHECK( pair_cmit.first == cref_cont1.begin() ); - BOOST_CHECK( pair_cmit.second == cont2.begin() ); - - pair_mcit = boost::mismatch(cont1, cref_cont2); - BOOST_CHECK( pair_mcit.first != cont1.end() && *pair_mcit.first == 3 ); - BOOST_CHECK( pair_mcit.second != cref_cont2.end() && *pair_mcit.second == 5 ); - pair_mcit = boost::mismatch(cont1, cref_cont2, std::equal_to()); - BOOST_CHECK( pair_mcit.first != cont1.end() && *pair_mcit.first == 3 ); - BOOST_CHECK( pair_mcit.second != cref_cont2.end() && *pair_mcit.second == 5 ); - pair_mcit = boost::mismatch(cont1, cref_cont2, std::not_equal_to()); - BOOST_CHECK( pair_mcit.first == cont1.begin() ); - BOOST_CHECK( pair_mcit.second == cref_cont2.begin() ); - - pair_ccit = boost::mismatch(cref_cont1, cref_cont2); - BOOST_CHECK( pair_ccit.first != cref_cont1.end() && *pair_ccit.first == 3 ); - BOOST_CHECK( pair_ccit.second != cref_cont2.end() && *pair_ccit.second == 5 ); - pair_ccit = boost::mismatch(cref_cont1, cref_cont2, std::equal_to()); - BOOST_CHECK( pair_ccit.first != cref_cont1.end() && *pair_ccit.first == 3 ); - BOOST_CHECK( pair_ccit.second != cref_cont2.end() && *pair_ccit.second == 5 ); - pair_ccit = boost::mismatch(cref_cont1, cref_cont2, std::not_equal_to()); - BOOST_CHECK( pair_ccit.first == cref_cont1.begin() ); - BOOST_CHECK( pair_ccit.second == cref_cont2.begin() ); + eval_mismatch(cont1, cont2, 3, 5); + eval_mismatch(cont1, cont2, std::equal_to(), 3, 5); + eval_mismatch(cont1, cont2, std::not_equal_to(), cont1.begin(), cont2.begin()); + eval_mismatch(cref_cont1, cont2, 3, 5); + eval_mismatch(cref_cont1, cont2, std::equal_to(), 3, 5); + eval_mismatch(cref_cont1, cont2, std::not_equal_to(), cref_cont1.begin(), cont2.begin()); + eval_mismatch(cont1, cref_cont2, 3, 5); + eval_mismatch(cont1, cref_cont2, std::equal_to(), 3, 5); + eval_mismatch(cont1, cref_cont2, std::not_equal_to(), cont1.begin(), cref_cont2.begin()); + eval_mismatch(cref_cont1, cref_cont2, 3, 5); + eval_mismatch(cref_cont1, cref_cont2, std::equal_to(), 3, 5); + eval_mismatch(cref_cont1, cref_cont2, std::not_equal_to(), cref_cont1.begin(), cref_cont2.begin()); } void test_mismatch() diff --git a/test/algorithm_test/next_permutation.cpp b/test/algorithm_test/next_permutation.cpp index c2d782b..ee1c371 100644 --- a/test/algorithm_test/next_permutation.cpp +++ b/test/algorithm_test/next_permutation.cpp @@ -29,11 +29,19 @@ namespace boost const bool reference_ret = std::next_permutation(reference.begin(), reference.end()); - const bool test_ret - = boost::next_permutation(test); + const bool test_ret = boost::next_permutation(test); BOOST_CHECK( reference_ret == test_ret ); + BOOST_CHECK_EQUAL_COLLECTIONS( + reference.begin(), reference.end(), + test.begin(), test.end() + ); + + test = cont; + + BOOST_CHECK( test_ret == boost::next_permutation(boost::make_iterator_range(test)) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() @@ -56,6 +64,15 @@ namespace boost BOOST_CHECK( reference_ret == test_ret ); + BOOST_CHECK_EQUAL_COLLECTIONS( + reference.begin(), reference.end(), + test.begin(), test.end() + ); + + test = cont; + + BOOST_CHECK( test_ret == boost::next_permutation(boost::make_iterator_range(test), pred) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() diff --git a/test/algorithm_test/nth_element.cpp b/test/algorithm_test/nth_element.cpp index dac2a2f..df241e9 100644 --- a/test/algorithm_test/nth_element.cpp +++ b/test/algorithm_test/nth_element.cpp @@ -29,7 +29,21 @@ namespace boost template void test_nth_element(Container& cont, Iterator mid) { + const Container old_cont(cont); + boost::nth_element(cont, mid); + + // Test the same operation on the container, for the + // case where a temporary is passed as the first + // argument. + Container cont2(old_cont); + const std::size_t index = std::distance(cont.begin(), mid); + Iterator mid2(cont2.begin()); + std::advance(mid2, index); + boost::nth_element(boost::make_iterator_range(cont2), mid2); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); } template @@ -45,7 +59,19 @@ namespace boost template void test_nth_element(Container& cont, Iterator mid) { + const Container old_cont(cont); + boost::nth_element(cont, mid, BinaryPredicate()); + + Container cont2(old_cont); + const std::size_t index = std::distance(cont.begin(), mid); + Iterator mid2(cont2.begin()); + std::advance(mid2, index); + boost::nth_element(boost::make_iterator_range(cont2), mid2, + BinaryPredicate()); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); } template diff --git a/test/algorithm_test/partial_sort.cpp b/test/algorithm_test/partial_sort.cpp index 62ff64b..c13f7f1 100644 --- a/test/algorithm_test/partial_sort.cpp +++ b/test/algorithm_test/partial_sort.cpp @@ -31,7 +31,18 @@ namespace boost template void test_partial_sort(Container& cont, Iterator mid) { + const Container old_cont(cont); + boost::partial_sort(cont, mid); + + const std::size_t index = std::distance(cont.begin(), mid); + Container cont2(old_cont); + Iterator mid2(cont2.begin()); + std::advance(mid2, index); + boost::partial_sort(cont2, mid2); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); } template @@ -47,7 +58,18 @@ namespace boost template void test_partial_sort(Container& cont, Iterator mid) { + const Container old_cont(cont); + boost::partial_sort(cont, mid, BinaryPredicate()); + + const std::size_t index = std::distance(cont.begin(), mid); + Container cont2(old_cont); + Iterator mid2(cont2.begin()); + std::advance(mid2, index); + boost::partial_sort(cont2, mid2, BinaryPredicate()); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); } template diff --git a/test/algorithm_test/partition.cpp b/test/algorithm_test/partition.cpp index 3f0ce61..fe136e0 100644 --- a/test/algorithm_test/partition.cpp +++ b/test/algorithm_test/partition.cpp @@ -41,7 +41,21 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::partition(cont, UnaryPredicate()); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + + const Container old_cont(cont); + Container cont2(old_cont); + iter_t result = boost::partition(cont, UnaryPredicate()); + + iter_t temp_result = boost::partition(cont2, UnaryPredicate()); + cont2 = old_cont; + BOOST_CHECK( temp_result == boost::partition( + boost::make_iterator_range(cont2), UnaryPredicate()) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); + + return result; } UnaryPredicate pred() const { return UnaryPredicate(); } @@ -53,7 +67,22 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::partition(cont, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + + const Container old_cont(cont); + Container cont2(old_cont); + result_t result = boost::partition(cont, policy.pred()); + + result_t temp_result = boost::partition( + cont2, policy.pred()); + cont2 = old_cont; + BOOST_CHECK( temp_result == boost::partition( + boost::make_iterator_range(cont2), policy.pred()) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); + + return result; } }; diff --git a/test/algorithm_test/prev_permutation.cpp b/test/algorithm_test/prev_permutation.cpp index e1073c9..a4adc7b 100644 --- a/test/algorithm_test/prev_permutation.cpp +++ b/test/algorithm_test/prev_permutation.cpp @@ -25,12 +25,12 @@ namespace boost { Container reference(cont); Container test(cont); + Container test2(cont); const bool reference_ret = std::prev_permutation(reference.begin(), reference.end()); - const bool test_ret - = boost::prev_permutation(test); + const bool test_ret = boost::prev_permutation(test); BOOST_CHECK( reference_ret == test_ret ); @@ -38,6 +38,14 @@ namespace boost reference.begin(), reference.end(), test.begin(), test.end() ); + + BOOST_CHECK( test_ret == boost::prev_permutation( + boost::make_iterator_range(test2)) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference.begin(), reference.end(), + test2.begin(), test2.end() + ); } template @@ -46,13 +54,13 @@ namespace boost { Container reference(cont); Container test(cont); + Container test2(cont); const bool reference_ret = std::prev_permutation(reference.begin(), reference.end(), pred); - const bool test_ret - = boost::prev_permutation(test, pred); + const bool test_ret = boost::prev_permutation(test, pred); BOOST_CHECK( reference_ret == test_ret ); @@ -60,6 +68,14 @@ namespace boost reference.begin(), reference.end(), test.begin(), test.end() ); + + BOOST_CHECK( test_ret == boost::prev_permutation( + boost::make_iterator_range(test2), pred) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( + reference.begin(), reference.end(), + test2.begin(), test2.end() + ); } template diff --git a/test/algorithm_test/random_shuffle.cpp b/test/algorithm_test/random_shuffle.cpp index ba55f51..410749a 100644 --- a/test/algorithm_test/random_shuffle.cpp +++ b/test/algorithm_test/random_shuffle.cpp @@ -110,6 +110,14 @@ namespace boost { shuffled = true; } + + // Verify that the shuffle can be performed on a + // temporary range + Container test2(cont); + boost::random_shuffle(boost::make_iterator_range(test2)); + ok = test_shuffle_result(cont, test2); + if (!ok) + break; } } @@ -124,6 +132,17 @@ namespace boost { BOOST_CHECK( gen.invocation_count() > 0 ); } + + // Test that random shuffle works when + // passed a temporary range + RandomGenerator gen2; + Container cont2(old_cont); + boost::random_shuffle(boost::make_iterator_range(cont2), gen2); + test_shuffle_result(cont2, old_cont); + if (cont2.size() > 2) + { + BOOST_CHECK( gen2.invocation_count() > 0 ); + } } template diff --git a/test/algorithm_test/remove.cpp b/test/algorithm_test/remove.cpp index 46e6591..3e4ab16 100644 --- a/test/algorithm_test/remove.cpp +++ b/test/algorithm_test/remove.cpp @@ -43,7 +43,16 @@ namespace boost std::distance(reference.begin(), reference_it) ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - test.begin(), test.end() ); + test.begin(), test.end() ); + + Container test2(c); + iterator_t test_it2 = boost::remove(test2, to_remove); + + BOOST_CHECK_EQUAL( std::distance(test2.begin(), test_it2), + std::distance(reference.begin(), reference_it) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/remove_copy.cpp b/test/algorithm_test/remove_copy.cpp index 43d0ebe..4050ef4 100644 --- a/test/algorithm_test/remove_copy.cpp +++ b/test/algorithm_test/remove_copy.cpp @@ -50,6 +50,15 @@ namespace BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), test.begin(), test.end() ); + + std::vector test2; + test_append( + boost::remove_copy(boost::make_iterator_range(c), + std::back_inserter(test2), to_remove), + to_remove); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/remove_copy_if.cpp b/test/algorithm_test/remove_copy_if.cpp index 0418ddd..c269c2a 100644 --- a/test/algorithm_test/remove_copy_if.cpp +++ b/test/algorithm_test/remove_copy_if.cpp @@ -48,7 +48,17 @@ namespace ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - test.begin(), test.end() ); + test.begin(), test.end() ); + + std::vector test2; + test_append( + boost::remove_copy_if(boost::make_iterator_range(c), + std::back_inserter(test2), pred), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/remove_if.cpp b/test/algorithm_test/remove_if.cpp index 1e77e7b..58fc07f 100644 --- a/test/algorithm_test/remove_if.cpp +++ b/test/algorithm_test/remove_if.cpp @@ -43,7 +43,17 @@ namespace boost std::distance(reference.begin(), reference_it) ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - test.begin(), test.end() ); + test.begin(), test.end() ); + + Container test2(c); + iterator_t test_it2 = boost::remove_if( + boost::make_iterator_range(test2), pred); + + BOOST_CHECK_EQUAL( std::distance(test2.begin(), test_it2), + std::distance(reference.begin(), reference_it) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/replace.cpp b/test/algorithm_test/replace.cpp index 4a882dc..356024f 100644 --- a/test/algorithm_test/replace.cpp +++ b/test/algorithm_test/replace.cpp @@ -36,7 +36,14 @@ namespace boost boost::replace(target, what, with_what); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - target.begin(), target.end() ); + target.begin(), target.end() ); + + std::vector target2(cont.begin(), cont.end()); + boost::replace(boost::make_iterator_range(target2), what, + with_what); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target2.begin(), target2.end() ); } diff --git a/test/algorithm_test/replace_copy.cpp b/test/algorithm_test/replace_copy.cpp index a2ce612..6ae12e2 100644 --- a/test/algorithm_test/replace_copy.cpp +++ b/test/algorithm_test/replace_copy.cpp @@ -51,7 +51,17 @@ namespace to_replace); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - test.begin(), test.end() ); + test.begin(), test.end() ); + + std::vector test2; + test_append( + boost::replace_copy(boost::make_iterator_range(c), + std::back_inserter(test2), to_replace, + replace_with), + to_replace); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/replace_copy_if.cpp b/test/algorithm_test/replace_copy_if.cpp index 5a68fe4..6873547 100644 --- a/test/algorithm_test/replace_copy_if.cpp +++ b/test/algorithm_test/replace_copy_if.cpp @@ -49,7 +49,18 @@ namespace ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - test.begin(), test.end() ); + test.begin(), test.end() ); + + std::vector test2; + test_append( + boost::replace_copy_if(boost::make_iterator_range(c), + std::back_inserter(test2), pred, + replace_with), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template< class Container > diff --git a/test/algorithm_test/replace_if.cpp b/test/algorithm_test/replace_if.cpp index e1dd26f..12d7293 100644 --- a/test/algorithm_test/replace_if.cpp +++ b/test/algorithm_test/replace_if.cpp @@ -40,8 +40,14 @@ namespace boost boost::replace_if(target, boost::bind(pred, _1, what), with_what); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - target.begin(), target.end() ); - + target.begin(), target.end() ); + + std::vector target2(cont.begin(), cont.end()); + boost::replace_if(boost::make_iterator_range(target2), + boost::bind(pred, _1, what), with_what); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target2.begin(), target2.end() ); } template< class Container > diff --git a/test/algorithm_test/reverse.cpp b/test/algorithm_test/reverse.cpp index 611a464..3ad63cb 100644 --- a/test/algorithm_test/reverse.cpp +++ b/test/algorithm_test/reverse.cpp @@ -29,14 +29,16 @@ namespace boost { Container reference(cont); Container test(cont); + Container test2(cont); boost::reverse(test); std::reverse(reference.begin(), reference.end()); - - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + boost::reverse(boost::make_iterator_range(test2)); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template diff --git a/test/algorithm_test/reverse_copy.cpp b/test/algorithm_test/reverse_copy.cpp index 8a7d931..92ef485 100644 --- a/test/algorithm_test/reverse_copy.cpp +++ b/test/algorithm_test/reverse_copy.cpp @@ -45,10 +45,19 @@ namespace value_type() ); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + test.clear(); + + test_append( + boost::reverse_copy(boost::make_iterator_range(cont), + std::back_inserter(test)), + value_type() ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); } template diff --git a/test/algorithm_test/rotate.cpp b/test/algorithm_test/rotate.cpp index f8b394a..b6b7af2 100644 --- a/test/algorithm_test/rotate.cpp +++ b/test/algorithm_test/rotate.cpp @@ -42,10 +42,18 @@ namespace boost boost::rotate(test, test_where_it); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + test = cont; + test_where_it = test.begin(); + std::advance(test_where_it, + std::distance(cont.begin(), where_it)); + + boost::rotate(boost::make_iterator_range(test), test_where_it); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); } template diff --git a/test/algorithm_test/rotate_copy.cpp b/test/algorithm_test/rotate_copy.cpp index c403442..5615479 100644 --- a/test/algorithm_test/rotate_copy.cpp +++ b/test/algorithm_test/rotate_copy.cpp @@ -48,10 +48,19 @@ namespace value_type() ); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + test.clear(); + + test_append( + boost::rotate_copy(boost::make_iterator_range(cont), where_it, + std::back_inserter(test)), + value_type() ); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); } template diff --git a/test/algorithm_test/search.cpp b/test/algorithm_test/search.cpp index 460f70d..91f19bd 100644 --- a/test/algorithm_test/search.cpp +++ b/test/algorithm_test/search.cpp @@ -33,9 +33,25 @@ namespace boost const Container2& ccont2 = cont2; iterator1_t it = boost::search(cont1, cont2); + BOOST_CHECK( it == boost::search(boost::make_iterator_range(cont1), cont2) ); + BOOST_CHECK( it == boost::search(cont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( it == boost::search(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2)) ); iterator1_t it2 = boost::search(cont1, ccont2); + BOOST_CHECK( it2 == boost::search(boost::make_iterator_range(cont1), ccont2) ); + BOOST_CHECK( it2 == boost::search(cont1, boost::make_iterator_range(ccont2)) ); + BOOST_CHECK( it2 == boost::search(boost::make_iterator_range(cont1), + boost::make_iterator_range(ccont2)) ); const_iterator1_t cit = boost::search(ccont1, cont2); + BOOST_CHECK( cit == boost::search(boost::make_iterator_range(ccont1), cont2) ); + BOOST_CHECK( cit == boost::search(ccont1, boost::make_iterator_range(cont2)) ); + BOOST_CHECK( cit == boost::search(boost::make_iterator_range(ccont1), + boost::make_iterator_range(cont2)) ); const_iterator1_t cit2 = boost::search(ccont1, ccont2); + BOOST_CHECK( cit2 == boost::search(boost::make_iterator_range(ccont1), ccont2) ); + BOOST_CHECK( cit2 == boost::search(ccont1, boost::make_iterator_range(ccont2)) ); + BOOST_CHECK( cit2 == boost::search(boost::make_iterator_range(ccont1), + boost::make_iterator_range(ccont2)) ); BOOST_CHECK( it == std::search(cont1.begin(), cont1.end(), cont2.begin(), cont2.end()) ); BOOST_CHECK( it2 == std::search(cont1.begin(), cont1.end(), ccont2.begin(), ccont2.end()) ); diff --git a/test/algorithm_test/search_n.cpp b/test/algorithm_test/search_n.cpp index d419f9c..3b0aa91 100644 --- a/test/algorithm_test/search_n.cpp +++ b/test/algorithm_test/search_n.cpp @@ -32,14 +32,12 @@ namespace 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 == boost::search_n(boost::make_iterator_range(cont1), 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) ); + + const_iterator1_t cit = boost::search_n(ccont1, n, value); + BOOST_CHECK( cit == boost::search_n(boost::make_iterator_range(ccont1), 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) ); } } diff --git a/test/algorithm_test/set_difference.cpp b/test/algorithm_test/set_difference.cpp index 7fb0974..84dc62c 100644 --- a/test/algorithm_test/set_difference.cpp +++ b/test/algorithm_test/set_difference.cpp @@ -62,6 +62,28 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_difference( + boost::make_iterator_range(cont1), cont2, + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_difference( + cont1, boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_difference( + boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); } template @@ -100,6 +122,28 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_difference( + boost::make_iterator_range(cont1), cont2, + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_difference( + cont1, boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_difference( + boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); } template diff --git a/test/algorithm_test/set_intersection.cpp b/test/algorithm_test/set_intersection.cpp index 5e2ce1b..213bbdf 100644 --- a/test/algorithm_test/set_intersection.cpp +++ b/test/algorithm_test/set_intersection.cpp @@ -62,6 +62,28 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_intersection( + boost::make_iterator_range(cont1), cont2, + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_intersection( + cont1, boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_intersection( + boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); } template @@ -100,6 +122,28 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_intersection( + boost::make_iterator_range(cont1), cont2, + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_intersection( + cont1, boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_intersection( + boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); } template diff --git a/test/algorithm_test/set_symmetric_difference.cpp b/test/algorithm_test/set_symmetric_difference.cpp index 149532c..b792fd8 100644 --- a/test/algorithm_test/set_symmetric_difference.cpp +++ b/test/algorithm_test/set_symmetric_difference.cpp @@ -63,6 +63,28 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_symmetric_difference( + boost::make_iterator_range(cont1), cont2, + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_symmetric_difference( + cont1, boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_symmetric_difference( + boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); } template @@ -102,6 +124,28 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_symmetric_difference( + boost::make_iterator_range(cont1), cont2, + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_symmetric_difference( + cont1, boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_symmetric_difference( + boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); } template diff --git a/test/algorithm_test/set_union.cpp b/test/algorithm_test/set_union.cpp index f9450b3..7f9f10a 100644 --- a/test/algorithm_test/set_union.cpp +++ b/test/algorithm_test/set_union.cpp @@ -62,6 +62,26 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_union(boost::make_iterator_range(cont1), + cont2, test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_union(cont1, + boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_union(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin()); + + check_result(reference, reference_result, + test_cont, test_result); } template @@ -100,6 +120,26 @@ namespace boost check_result(reference, reference_result, test_cont, test_result); + + test_result = boost::set_union(boost::make_iterator_range(cont1), + cont2, test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_union(cont1, + boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); + + test_result = boost::set_union(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + test_cont.begin(), pred); + + check_result(reference, reference_result, + test_cont, test_result); } template diff --git a/test/algorithm_test/sort.cpp b/test/algorithm_test/sort.cpp index b1b26e7..c6611f7 100644 --- a/test/algorithm_test/sort.cpp +++ b/test/algorithm_test/sort.cpp @@ -33,10 +33,13 @@ namespace boost boost::sort(test); std::sort(reference.begin(), reference.end()); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + Container test2(cont); + boost::sort(boost::make_iterator_range(test2)); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template @@ -52,6 +55,11 @@ namespace boost reference.begin(), reference.end(), test.begin(), test.end() ); + + Container test2(cont); + boost::sort(boost::make_iterator_range(test2), pred); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test2.begin(), test2.end() ); } template diff --git a/test/algorithm_test/stable_partition.cpp b/test/algorithm_test/stable_partition.cpp index fad4bef..5f55b7d 100644 --- a/test/algorithm_test/stable_partition.cpp +++ b/test/algorithm_test/stable_partition.cpp @@ -41,7 +41,21 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::stable_partition(cont, UnaryPredicate()); + Container cont2(cont); + + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::stable_partition(cont, UnaryPredicate()); + + iter_t temp_result = boost::stable_partition( + boost::make_iterator_range(cont2), UnaryPredicate()); + + BOOST_CHECK_EQUAL( std::distance(cont.begin(), result), + std::distance(cont2.begin(), temp_result) ); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); + + return result; } UnaryPredicate pred() const { return UnaryPredicate(); } @@ -53,7 +67,17 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::stable_partition(cont, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + Container cont2(cont); + result_t result = boost::stable_partition(cont, policy.pred()); + + result_t result2 = boost::stable_partition( + boost::make_iterator_range(cont2), policy.pred()); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont2.begin(), cont2.end(), + cont.begin(), cont.end() ); + + return result; } }; diff --git a/test/algorithm_test/stable_sort.cpp b/test/algorithm_test/stable_sort.cpp index eb5518c..8372bd6 100644 --- a/test/algorithm_test/stable_sort.cpp +++ b/test/algorithm_test/stable_sort.cpp @@ -33,10 +33,13 @@ namespace boost boost::stable_sort(test); std::stable_sort(reference.begin(), reference.end()); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + test = cont; + boost::stable_sort(boost::make_iterator_range(test)); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); } template @@ -48,10 +51,13 @@ namespace boost boost::stable_sort(test, pred); std::stable_sort(reference.begin(), reference.end(), pred); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference.begin(), reference.end(), - test.begin(), test.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); + + test = cont; + boost::stable_sort(boost::make_iterator_range(test), pred); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + test.begin(), test.end() ); } template diff --git a/test/algorithm_test/swap_ranges.cpp b/test/algorithm_test/swap_ranges.cpp index b50431c..a96bfac 100644 --- a/test/algorithm_test/swap_ranges.cpp +++ b/test/algorithm_test/swap_ranges.cpp @@ -35,15 +35,36 @@ namespace Container2 test2(source2); boost::swap_ranges(test1, test2); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference1.begin(), reference1.end(), - test1.begin(), test1.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference1.begin(), reference1.end(), + test1.begin(), test1.end() ); - BOOST_CHECK_EQUAL_COLLECTIONS( - reference2.begin(), reference2.end(), - test2.begin(), test2.end() - ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference2.begin(), reference2.end(), + test2.begin(), test2.end() ); + + test1 = source1; + test2 = source2; + boost::swap_ranges(boost::make_iterator_range(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() ); + + test1 = source1; + test2 = source2; + boost::swap_ranges(test1, boost::make_iterator_range(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() ); + + test1 = source1; + test2 = source2; + boost::swap_ranges(boost::make_iterator_range(test1), + boost::make_iterator_range(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 diff --git a/test/algorithm_test/transform.cpp b/test/algorithm_test/transform.cpp index 7f016a2..3e37180 100644 --- a/test/algorithm_test/transform.cpp +++ b/test/algorithm_test/transform.cpp @@ -47,16 +47,23 @@ namespace boost BOOST_CHECK( test_it == target.end() ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - target.begin(), target.end() ); - + target.begin(), target.end() ); + + BOOST_CHECK( test_it == boost::transform(boost::make_iterator_range(cont), target.begin(), fn) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target.begin(), target.end() ); + target.clear(); target.resize(ccont.size()); test_it = boost::transform(ccont, target.begin(), fn); - + BOOST_CHECK( test_it == target.end() ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - target.begin(), target.end() ); + target.begin(), target.end() ); + BOOST_CHECK( test_it == boost::transform(boost::make_iterator_range(ccont), target.begin(), fn) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target.begin(), target.end() ); } template< class Container > @@ -97,10 +104,25 @@ namespace boost iterator_t test_it = boost::transform(cont1, cont2, target.begin(), fn); - + BOOST_CHECK( test_it == target.end() ); BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), - target.begin(), target.end() ); + target.begin(), target.end() ); + + BOOST_CHECK( test_it == boost::transform(boost::make_iterator_range(cont1), cont2, target.begin(), fn) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target.begin(), target.end() ); + + BOOST_CHECK( test_it == boost::transform(cont1, boost::make_iterator_range(cont2), target.begin(), fn) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target.begin(), target.end() ); + + BOOST_CHECK( test_it == boost::transform(boost::make_iterator_range(cont1), + boost::make_iterator_range(cont2), + target.begin(), fn) ); + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + target.begin(), target.end() ); + target.clear(); target.resize(ccont1.size()); diff --git a/test/algorithm_test/unique.cpp b/test/algorithm_test/unique.cpp index 2e2ebfa..49af0e3 100644 --- a/test/algorithm_test/unique.cpp +++ b/test/algorithm_test/unique.cpp @@ -47,7 +47,18 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy&, Container& cont) { - return boost::unique(cont); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + + Container cont2(cont); + + result_t result = boost::unique(cont); + + boost::unique(boost::make_iterator_range(cont2)); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); + + return result; } }; @@ -82,7 +93,18 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::unique(cont, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + + Container cont2(cont); + + result_t result = boost::unique(cont, policy.pred()); + + boost::unique(boost::make_iterator_range(cont2), policy.pred()); + + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), + cont2.begin(), cont2.end() ); + + return result; } }; diff --git a/test/algorithm_test/unique_copy.cpp b/test/algorithm_test/unique_copy.cpp index f3a3296..21f107a 100644 --- a/test/algorithm_test/unique_copy.cpp +++ b/test/algorithm_test/unique_copy.cpp @@ -49,6 +49,17 @@ namespace BOOST_CHECK_EQUAL_COLLECTIONS(reference.begin(), reference.end(), test.begin(), test.end()); + + test.clear(); + + test_append( + boost::unique_copy(boost::make_iterator_range(c), + std::back_inserter(test)), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS(reference.begin(), reference.end(), + test.begin(), test.end()); } template @@ -70,6 +81,17 @@ namespace BOOST_CHECK_EQUAL_COLLECTIONS(reference.begin(), reference.end(), test.begin(), test.end()); + + test.clear(); + + test_append( + boost::unique_copy(boost::make_iterator_range(c), + std::back_inserter(test), pred), + value_type() + ); + + BOOST_CHECK_EQUAL_COLLECTIONS(reference.begin(), reference.end(), + test.begin(), test.end()); } template diff --git a/test/algorithm_test/upper_bound.cpp b/test/algorithm_test/upper_bound.cpp index 2eb64cf..95e3965 100644 --- a/test/algorithm_test/upper_bound.cpp +++ b/test/algorithm_test/upper_bound.cpp @@ -32,7 +32,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::upper_bound(cont, 5); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::upper_bound(cont, 5); + BOOST_CHECK( result == boost::upper_bound(boost::make_iterator_range(cont), 5) ); + return result; } template @@ -42,7 +45,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy&, Container& cont) { - return boost::upper_bound(cont, 5); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + result_t result = boost::upper_bound(cont, 5); + BOOST_CHECK( result == boost::upper_bound(boost::make_iterator_range(cont), 5) ); + return result; } }; @@ -61,7 +67,10 @@ namespace boost BOOST_DEDUCED_TYPENAME range_iterator::type test_iter(Container& cont) { - return boost::upper_bound(cont, 5, BinaryPredicate()); + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + iter_t result = boost::upper_bound(cont, 5, BinaryPredicate()); + BOOST_CHECK( result == boost::upper_bound(boost::make_iterator_range(cont), 5, BinaryPredicate()) ); + return result; } template< range_return_value result_type> @@ -71,8 +80,14 @@ namespace boost BOOST_DEDUCED_TYPENAME range_return::type operator()(Policy& policy, Container& cont) { - return boost::upper_bound( - cont, 5, policy.pred()); + typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; + + result_t result = boost::upper_bound(cont, 5, policy.pred()); + + BOOST_CHECK( result == boost::upper_bound( + boost::make_iterator_range(cont), 5, policy.pred()) ); + + return result; } }; From 5bb66037d368ed7d989dca27b34b577ec4db49b7 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 12 Jul 2010 00:14:07 +0000 Subject: [PATCH 11/32] [boost][range] - Improved handling of temporary ranges in range algorithms. [SVN r63904] --- test/adaptor_test/uniqued.cpp | 110 ++++++++++++++++++++++++++ test/string.cpp | 58 ++++++++++++-- test/test_function/true_predicate.hpp | 29 +++++++ 3 files changed, 189 insertions(+), 8 deletions(-) create mode 100644 test/test_function/true_predicate.hpp diff --git a/test/adaptor_test/uniqued.cpp b/test/adaptor_test/uniqued.cpp index 9c96744..cfc3fb7 100644 --- a/test/adaptor_test/uniqued.cpp +++ b/test/adaptor_test/uniqued.cpp @@ -15,19 +15,129 @@ #include #include +#include #include #include #include #include +#include namespace boost { + namespace range3 + { + namespace concept + { + template + class PopFrontSubRange + { + public: + void constraints() + { + Range copied_range(*m_range); + BOOST_DEDUCED_TYPENAME range_value::type v = copied_range.front(); + copied_range.pop_front(); + } + private: + Range* m_range; + }; + + template + class PopBackSubRange + { + public: + void constraints() + { + Range copied_range(*m_range); + BOOST_DEDUCED_TYPENAME range_value::type v = copied_range.back(); + copied_range.pop_back(); + } + private: + Range* m_range; + }; + } // namespace concept + namespace adaptor + { + template + class adjacent_filter_adaptor + : private boost::sub_range + , private Pred + { + public: + typedef boost::sub_range range_t; + typedef Pred pred_t; + typedef typename range_t::value_type value_type; + using range_t::reference; + using range_t::const_reference; + using range_t::empty; + using range_t::front; + using range_t::back; + + adjacent_filter_adaptor(Range& rng, Pred pred) + : range_t(rng) + , pred_t(pred) + { + } + + void pop_front() + { + BOOST_ASSERT( !empty() ); + const value_type& old_front = front(); + range_t::pop_front(); + while (!empty() && !pred_t::operator()(front(), old_front)) + range_t::pop_front(); + } + + void pop_back() + { + BOOST_ASSERT( !empty() ); + const value_type& old_back = back(); + range_t::pop_back(); + while (!empty() && !pred_t::operator()(old_back, back())) + range_t::pop_back(); + } + }; + + template + class unique_adaptor + : public adjacent_filter_adaptor::type > > + { + typedef adjacent_filter_adaptor::type > > base_t; + public: + typedef std::not_equal_to< typename range_value::type > pred_t; + explicit unique_adaptor(Range& rng) : base_t(rng, pred_t()) {} + }; + } + } + namespace { + template< class Container > + void new_uniqued_adaptor_test(Container& c) + { + std::vector test_result1; + boost::range3::adaptor::unique_adaptor rng(c); + while (!rng.empty()) + { + test_result1.push_back(rng.front()); + rng.pop_front(); + } + + std::vector test_result2; + boost::push_back(test_result2, adaptors::unique(c)); + + BOOST_CHECK_EQUAL_COLLECTIONS( + test_result1.begin(), test_result1.end(), + test_result2.begin(), test_result2.end() + ); + } + template< class Container > void uniqued_test_impl( Container& c ) { + new_uniqued_adaptor_test(c); + using namespace boost::adaptors; std::vector< int > test_result1; diff --git a/test/string.cpp b/test/string.cpp index 127f70a..f73abb0 100644 --- a/test/string.cpp +++ b/test/string.cpp @@ -17,6 +17,7 @@ # pragma warn -8057 // unused argument argc/argv in Boost.Test #endif +#include #include #include #include @@ -29,6 +30,34 @@ #include #include +namespace +{ + template< class CharT, std::size_t Length > + class test_string + { + public: + typedef CharT value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef std::size_t size_type; + typedef value_type array_t[Length]; + typedef const value_type const_array_t[Length]; + + explicit test_string(const CharT literal_sz[]) + { + std::copy(literal_sz, literal_sz + Length, m_buffer.data()); + m_buffer[Length] = value_type(); + } + + const_pointer const_sz() const { return m_buffer.data(); } + pointer mutable_sz() { return m_buffer.data(); } + + private: + typedef boost::array buffer_t; + buffer_t m_buffer; + }; +} + template< class T > inline BOOST_DEDUCED_TYPENAME boost::range_iterator::type str_begin( T& r ) @@ -105,11 +134,15 @@ void check_char() { typedef char* char_iterator_t; typedef char char_array_t[10]; - const char* char_s = "a string"; - char my_string[] = "another string"; + + test_string a_string("a string"); + test_string another_string("another string"); + + const char* char_s = a_string.const_sz(); + char my_string[] = "another_string"; const char my_const_string[] = "another string"; - const unsigned my_string_length = 14; - char* char_s2 = "a string"; + const unsigned my_string_length = 14; + char* char_s2 = a_string.mutable_sz(); BOOST_STATIC_ASSERT(( is_same< range_value::type, detail::iterator_traits::value_type>::value )); @@ -181,10 +214,14 @@ void check_string() check_char(); #ifndef BOOST_NO_STD_WSTRING - typedef wchar_t* wchar_iterator_t; - const wchar_t* char_ws = L"a wide string"; + typedef wchar_t* wchar_iterator_t; + + test_string a_wide_string(L"a wide string"); + test_string another_wide_string(L"another wide string"); + + const wchar_t* char_ws = a_wide_string.const_sz(); wchar_t my_wstring[] = L"another wide string"; - wchar_t* char_ws2 = L"a wide string"; + wchar_t* char_ws2 = a_wide_string.mutable_sz(); BOOST_STATIC_ASSERT(( is_same< range_value::type, detail::iterator_traits::value_type>::value )); @@ -203,12 +240,17 @@ void check_string() BOOST_CHECK_EQUAL( sz, std::char_traits::length( char_ws ) ); wchar_t to_search = L'n'; - BOOST_CHECK( find( char_ws, to_search ) != str_end(char_ws) ); + BOOST_CHECK( find( char_ws, to_search ) != str_end(char_ws) ); + BOOST_CHECK( find( char_ws2, to_search ) != str_end(char_ws2) ); #if BOOST_WORKAROUND(_MSC_VER, BOOST_TESTED_AT(1300)) BOOST_CHECK( find( my_wstring, to_search ) != str_end(my_wstring) ); +#else + + boost::ignore_unused_variable_warning( my_wstring ); + #endif #endif diff --git a/test/test_function/true_predicate.hpp b/test/test_function/true_predicate.hpp new file mode 100644 index 0000000..87a0dca --- /dev/null +++ b/test/test_function/true_predicate.hpp @@ -0,0 +1,29 @@ +// 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/ +// +#ifndef BOOST_RANGE_TEST_TEST_FUNCTION_TRUE_PREDICATE_HPP_INCLUDED +#define BOOST_RANGE_TEST_TEST_FUNCTION_TRUE_PREDICATE_HPP_INCLUDED + +namespace boost +{ + namespace range_test_function + { + struct true_predicate + { + typedef bool result_type; + + bool operator()() const { return true; } + template bool operator()(Arg) const { return true; } + template bool operator()(Arg1,Arg2) const { return true; } + }; + } +} + +#endif // include guard From 40714ccc7e0e368f6dc8a85e5056d32a17816351 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 12 Jul 2010 21:52:28 +0000 Subject: [PATCH 12/32] [range] - fix erroneous change to uniqued test case. [SVN r63935] --- test/adaptor_test/uniqued.cpp | 110 ---------------------------------- 1 file changed, 110 deletions(-) diff --git a/test/adaptor_test/uniqued.cpp b/test/adaptor_test/uniqued.cpp index cfc3fb7..9c96744 100644 --- a/test/adaptor_test/uniqued.cpp +++ b/test/adaptor_test/uniqued.cpp @@ -15,129 +15,19 @@ #include #include -#include #include #include #include #include -#include namespace boost { - namespace range3 - { - namespace concept - { - template - class PopFrontSubRange - { - public: - void constraints() - { - Range copied_range(*m_range); - BOOST_DEDUCED_TYPENAME range_value::type v = copied_range.front(); - copied_range.pop_front(); - } - private: - Range* m_range; - }; - - template - class PopBackSubRange - { - public: - void constraints() - { - Range copied_range(*m_range); - BOOST_DEDUCED_TYPENAME range_value::type v = copied_range.back(); - copied_range.pop_back(); - } - private: - Range* m_range; - }; - } // namespace concept - namespace adaptor - { - template - class adjacent_filter_adaptor - : private boost::sub_range - , private Pred - { - public: - typedef boost::sub_range range_t; - typedef Pred pred_t; - typedef typename range_t::value_type value_type; - using range_t::reference; - using range_t::const_reference; - using range_t::empty; - using range_t::front; - using range_t::back; - - adjacent_filter_adaptor(Range& rng, Pred pred) - : range_t(rng) - , pred_t(pred) - { - } - - void pop_front() - { - BOOST_ASSERT( !empty() ); - const value_type& old_front = front(); - range_t::pop_front(); - while (!empty() && !pred_t::operator()(front(), old_front)) - range_t::pop_front(); - } - - void pop_back() - { - BOOST_ASSERT( !empty() ); - const value_type& old_back = back(); - range_t::pop_back(); - while (!empty() && !pred_t::operator()(old_back, back())) - range_t::pop_back(); - } - }; - - template - class unique_adaptor - : public adjacent_filter_adaptor::type > > - { - typedef adjacent_filter_adaptor::type > > base_t; - public: - typedef std::not_equal_to< typename range_value::type > pred_t; - explicit unique_adaptor(Range& rng) : base_t(rng, pred_t()) {} - }; - } - } - namespace { - template< class Container > - void new_uniqued_adaptor_test(Container& c) - { - std::vector test_result1; - boost::range3::adaptor::unique_adaptor rng(c); - while (!rng.empty()) - { - test_result1.push_back(rng.front()); - rng.pop_front(); - } - - std::vector test_result2; - boost::push_back(test_result2, adaptors::unique(c)); - - BOOST_CHECK_EQUAL_COLLECTIONS( - test_result1.begin(), test_result1.end(), - test_result2.begin(), test_result2.end() - ); - } - template< class Container > void uniqued_test_impl( Container& c ) { - new_uniqued_adaptor_test(c); - using namespace boost::adaptors; std::vector< int > test_result1; From 334bc2813620f800a32dd409542991fea0c0ff43 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 12 Jul 2010 22:02:46 +0000 Subject: [PATCH 13/32] avoid name clash with Boost.Algorithm by renaming replace_range to replaced_range [SVN r63936] --- include/boost/range/adaptor/replaced.hpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/boost/range/adaptor/replaced.hpp b/include/boost/range/adaptor/replaced.hpp index 3c40918..deeb8da 100644 --- a/include/boost/range/adaptor/replaced.hpp +++ b/include/boost/range/adaptor/replaced.hpp @@ -47,7 +47,7 @@ namespace boost }; template< class R > - class replace_range : + class replaced_range : public boost::iterator_range< boost::transform_iterator< replace_value< BOOST_DEDUCED_TYPENAME range_value::type >, @@ -64,7 +64,7 @@ namespace boost public: typedef BOOST_DEDUCED_TYPENAME range_value::type value_type; - replace_range( R& r, value_type from, value_type to ) + replaced_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) ) ) { } @@ -83,23 +83,23 @@ namespace boost }; template< class InputRng > - inline replace_range + inline replaced_range operator|( InputRng& r, const replace_holder::type>& f ) { - return replace_range(r, f.val1, f.val2); + return replaced_range(r, f.val1, f.val2); } template< class InputRng > - inline replace_range + inline replaced_range operator|( const InputRng& r, const replace_holder::type>& f ) { - return replace_range(r, f.val1, f.val2); + return replaced_range(r, f.val1, f.val2); } } // 'range_detail' - using range_detail::replace_range; + using range_detail::replaced_range; namespace adaptors { @@ -111,21 +111,21 @@ namespace boost } template - inline replace_range + inline replaced_range replace(InputRange& rng, BOOST_DEDUCED_TYPENAME range_value::type from, BOOST_DEDUCED_TYPENAME range_value::type to) { - return replace_range(rng, from, to); + return replaced_range(rng, from, to); } template - inline replace_range + inline replaced_range replace(const InputRange& rng, BOOST_DEDUCED_TYPENAME range_value::type from, BOOST_DEDUCED_TYPENAME range_value::type to) { - return replace_range(rng, from ,to); + return replaced_range(rng, from ,to); } } // 'adaptors' From 7c3b66d5201da2cbe5beb8c0c595ec96ea06c0b0 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Mon, 12 Jul 2010 22:45:30 +0000 Subject: [PATCH 14/32] [range] experimental commit using disable_if in an attempt to resolve the ambiguity warnings on some compilers. [SVN r63938] --- include/boost/range/algorithm/upper_bound.hpp | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/include/boost/range/algorithm/upper_bound.hpp b/include/boost/range/algorithm/upper_bound.hpp index 510127f..c8acbc6 100755 --- a/include/boost/range/algorithm/upper_bound.hpp +++ b/include/boost/range/algorithm/upper_bound.hpp @@ -27,7 +27,11 @@ namespace boost /// /// \pre ForwardRange is a model of the ForwardRangeConcept template< class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline +BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type upper_bound( ForwardRange& rng, Value val ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -36,7 +40,7 @@ upper_bound( ForwardRange& rng, Value val ) /// \overload template< class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +BOOST_DEDUCED_TYPENAME range_iterator::type upper_bound( const ForwardRange& rng, Value val ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -45,7 +49,10 @@ upper_bound( const ForwardRange& rng, Value val ) /// \overload template< class ForwardRange, class Value, class SortPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type upper_bound( ForwardRange& rng, Value val, SortPredicate pred ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -63,7 +70,10 @@ upper_bound( const ForwardRange& rng, Value val, SortPredicate pred ) /// \overload template< range_return_value re, class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type upper_bound( ForwardRange& rng, Value val ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -86,7 +96,10 @@ upper_bound( const ForwardRange& rng, Value val ) /// \overload template< range_return_value re, class ForwardRange, class Value, class SortPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type upper_bound( ForwardRange& rng, Value val, SortPredicate pred ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); From 183e449a31fa4a00a2e7c0539bc7ba0dbd94e39b Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Tue, 13 Jul 2010 20:31:40 +0000 Subject: [PATCH 15/32] [range] disambiguate const / non-const overloads for Intel compilers and older GCC. [SVN r63998] --- doc/history_ack.qbk | 9 +- doc/html/index.html | 18 +- doc/html/range/concepts.html | 12 +- .../range/concepts/bidirectional_range.html | 28 +-- doc/html/range/concepts/concept_checking.html | 38 ++-- doc/html/range/concepts/forward_range.html | 22 +- doc/html/range/concepts/overview.html | 20 +- .../range/concepts/random_access_range.html | 24 +- .../range/concepts/single_pass_range.html | 28 +-- doc/html/range/examples.html | 48 ++-- doc/html/range/faq.html | 109 +++------ doc/html/range/history_ack.html | 84 +++---- doc/html/range/introduction.html | 32 +-- doc/html/range/library_headers.html | 12 +- doc/html/range/library_headers/adaptors.html | 12 +- doc/html/range/library_headers/algorithm.html | 12 +- .../library_headers/algorithm_extensions.html | 12 +- doc/html/range/library_headers/general.html | 12 +- doc/html/range/mfc_atl.html | 16 +- doc/html/range/mfc_atl/atl_ranges.html | 12 +- doc/html/range/mfc_atl/const_ranges.html | 12 +- doc/html/range/mfc_atl/mfc_ranges.html | 12 +- doc/html/range/mfc_atl/references.html | 28 ++- doc/html/range/mfc_atl/requirements.html | 20 +- doc/html/range/portability.html | 52 ++--- doc/html/range/reference.html | 12 +- doc/html/range/reference/adaptors.html | 12 +- .../adaptors/general_requirements.html | 66 +++--- .../reference/adaptors/introduction.html | 46 ++-- .../range/reference/adaptors/reference.html | 12 +- .../adaptors/reference/adjacent_filtered.html | 49 +++-- .../reference/adaptors/reference/copied.html | 48 ++-- .../adaptors/reference/filtered.html | 50 ++--- .../reference/adaptors/reference/indexed.html | 40 ++-- .../adaptors/reference/indirected.html | 43 ++-- .../adaptors/reference/map_keys.html | 41 ++-- .../adaptors/reference/map_values.html | 41 ++-- .../adaptors/reference/replaced.html | 64 +++--- .../adaptors/reference/replaced_if.html | 59 ++--- .../adaptors/reference/reversed.html | 32 +-- .../reference/adaptors/reference/sliced.html | 44 ++-- .../reference/adaptors/reference/strided.html | 42 ++-- .../adaptors/reference/tokenized.html | 79 +++---- .../adaptors/reference/transformed.html | 49 +++-- .../reference/adaptors/reference/uniqued.html | 40 ++-- doc/html/range/reference/algorithms.html | 12 +- doc/html/range/reference/algorithms/heap.html | 12 +- .../reference/algorithms/heap/make_heap.html | 80 +++---- .../reference/algorithms/heap/pop_heap.html | 90 ++++---- .../reference/algorithms/heap/push_heap.html | 90 ++++---- .../reference/algorithms/heap/sort_heap.html | 82 +++---- .../range/reference/algorithms/mutating.html | 12 +- .../reference/algorithms/mutating/copy.html | 60 ++--- .../algorithms/mutating/copy_backward.html | 60 ++--- .../reference/algorithms/mutating/fill.html | 48 ++-- .../reference/algorithms/mutating/fill_n.html | 48 ++-- .../algorithms/mutating/generate.html | 64 +++--- .../algorithms/mutating/inplace_merge.html | 104 ++++----- .../reference/algorithms/mutating/merge.html | 206 +++++++++--------- .../algorithms/mutating/nth_element.html | 80 +++---- .../algorithms/mutating/partial_sort.html | 80 +++---- .../algorithms/mutating/partition.html | 44 ++-- .../algorithms/mutating/random_shuffle.html | 62 +++--- .../reference/algorithms/mutating/remove.html | 48 ++-- .../algorithms/mutating/remove_copy.html | 48 ++-- .../algorithms/mutating/remove_copy_if.html | 40 ++-- .../algorithms/mutating/remove_if.html | 48 ++-- .../algorithms/mutating/replace.html | 58 ++--- .../algorithms/mutating/replace_copy.html | 54 ++--- .../algorithms/mutating/replace_copy_if.html | 60 ++--- .../algorithms/mutating/replace_if.html | 62 +++--- .../algorithms/mutating/reverse.html | 36 +-- .../algorithms/mutating/reverse_copy.html | 42 ++-- .../reference/algorithms/mutating/rotate.html | 44 ++-- .../algorithms/mutating/rotate_copy.html | 50 ++--- .../reference/algorithms/mutating/sort.html | 80 +++---- .../algorithms/mutating/stable_partition.html | 40 ++-- .../algorithms/mutating/stable_sort.html | 80 +++---- .../algorithms/mutating/swap_ranges.html | 50 ++--- .../algorithms/mutating/transform.html | 140 ++++++------ .../reference/algorithms/mutating/unique.html | 68 +++--- .../algorithms/mutating/unique_copy.html | 84 +++---- doc/html/range/reference/algorithms/new.html | 12 +- .../reference/algorithms/new/copy_n.html | 42 ++-- .../range/reference/algorithms/new/erase.html | 28 +-- .../reference/algorithms/new/for_each.html | 60 ++--- .../reference/algorithms/new/insert.html | 44 ++-- .../range/reference/algorithms/new/iota.html | 37 ++-- .../reference/algorithms/new/is_sorted.html | 44 ++-- .../reference/algorithms/new/overwrite.html | 58 ++--- .../reference/algorithms/new/push_back.html | 44 ++-- .../reference/algorithms/new/push_front.html | 44 ++-- .../algorithms/new/remove_erase.html | 28 +-- .../algorithms/new/remove_erase_if.html | 34 +-- .../reference/algorithms/non_mutating.html | 12 +- .../non_mutating/adjacent_find.html | 60 ++--- .../non_mutating/binary_search.html | 82 +++---- .../algorithms/non_mutating/count.html | 48 ++-- .../algorithms/non_mutating/count_if.html | 48 ++-- .../algorithms/non_mutating/equal.html | 96 ++++---- .../algorithms/non_mutating/equal_range.html | 82 +++---- .../algorithms/non_mutating/find.html | 46 ++-- .../algorithms/non_mutating/find_end.html | 94 ++++---- .../non_mutating/find_first_of.html | 86 ++++---- .../algorithms/non_mutating/find_if.html | 44 ++-- .../algorithms/non_mutating/for_each.html | 50 ++--- .../non_mutating/lexicographical_compare.html | 104 ++++----- .../algorithms/non_mutating/lower_bound.html | 82 +++---- .../algorithms/non_mutating/max_element.html | 58 ++--- .../algorithms/non_mutating/min_element.html | 58 ++--- .../algorithms/non_mutating/mismatch.html | 98 ++++----- .../algorithms/non_mutating/search.html | 96 ++++---- .../algorithms/non_mutating/search_n.html | 84 +++---- .../algorithms/non_mutating/upper_bound.html | 82 +++---- .../range/reference/algorithms/numeric.html | 12 +- .../algorithms/numeric/accumulate.html | 96 ++++---- .../numeric/adjacent_difference.html | 110 +++++----- .../algorithms/numeric/inner_product.html | 138 ++++++------ .../algorithms/numeric/partial_sum.html | 98 ++++----- .../reference/algorithms/permutation.html | 12 +- .../permutation/next_permutation.html | 80 +++---- .../permutation/prev_permutation.html | 80 +++---- .../range_algorithm_introduction.html | 28 +-- doc/html/range/reference/algorithms/set.html | 12 +- .../reference/algorithms/set/includes.html | 126 +++++------ .../algorithms/set/set_difference.html | 138 ++++++------ .../algorithms/set/set_intersection.html | 138 ++++++------ .../set/set_symmetric_difference.html | 138 ++++++------ .../reference/algorithms/set/set_union.html | 138 ++++++------ .../reference/concept_implementation.html | 12 +- .../concept_implementation/semantics.html | 14 +- .../semantics/functions.html | 12 +- .../semantics/metafunctions.html | 12 +- .../concept_implementation/synopsis.html | 12 +- doc/html/range/reference/extending.html | 12 +- .../range/reference/extending/method_1.html | 12 +- .../range/reference/extending/method_2.html | 12 +- .../range/reference/extending/method_3.html | 12 +- .../extending/method_3/method_3_1.html | 28 +-- .../extending/method_3/method_3_2.html | 30 +-- doc/html/range/reference/overview.html | 24 +- doc/html/range/reference/ranges.html | 12 +- .../reference/ranges/counting_range.html | 28 +-- doc/html/range/reference/ranges/irange.html | 35 +-- .../range/reference/ranges/istream_range.html | 18 +- doc/html/range/reference/utilities.html | 24 +- .../reference/utilities/iterator_range.html | 113 +++------- doc/html/range/reference/utilities/join.html | 16 +- .../range/reference/utilities/sub_range.html | 14 +- doc/html/range/style_guide.html | 66 +++--- doc/html/range/upgrade.html | 12 +- doc/html/range/upgrade/upgrade_from_1_34.html | 56 ++--- doc/html/range/upgrade/upgrade_from_1_42.html | 38 ++-- include/boost/range/algorithm/find.hpp | 10 +- include/boost/range/algorithm/find_end.hpp | 20 +- .../boost/range/algorithm/find_first_of.hpp | 20 +- include/boost/range/algorithm/find_if.hpp | 10 +- include/boost/range/algorithm/lower_bound.hpp | 20 +- 158 files changed, 3962 insertions(+), 3890 deletions(-) diff --git a/doc/history_ack.qbk b/doc/history_ack.qbk index 545b3ab..73ce9e8 100644 --- a/doc/history_ack.qbk +++ b/doc/history_ack.qbk @@ -26,11 +26,18 @@ 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. +Prior to Boost.RangeEx there had been a number of Range library implementations, +these include library implementations by Eric Niebler, Adobe, +Shunsuke Sogame etc. Eric Niebler contributed the Range Adaptor idea which is +arguably the single biggest innovation in this library. Inevitably a great deal +of commonality evolved in each of these libraries, but a considerable amount +of effort was expended to learn from all of the divergent techniques. + 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 +* Eric Niebler: early implementation, and review feedback * Joel de Guzman: review * Mathias Gaunard: review * David Abrahams: implementation advice diff --git a/doc/html/index.html b/doc/html/index.html index c6eaa25..8426ec8 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -2,8 +2,8 @@ Chapter 1. Range 2.0 - - + + @@ -11,14 +11,14 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More


    -
    Next
    -
    +
    Next
    +

    Chapter 1. Range 2.0

    @@ -29,8 +29,8 @@ Neil Groves
    -
    -

    +

    +

    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)

    @@ -142,10 +142,10 @@

    - +

    Last revised: April 28, 2010 at 19:23:17 GMT

    Last revised: July 13, 2010 at 18:40:56 GMT


    -
    Next
    +
    Next
    diff --git a/doc/html/range/concepts.html b/doc/html/range/concepts.html index c384122..b071de6 100644 --- a/doc/html/range/concepts.html +++ b/doc/html/range/concepts.html @@ -2,8 +2,8 @@ Range Concepts - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -45,7 +45,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 5bf3493..fdd9787 100644 --- a/doc/html/range/concepts/bidirectional_range.html +++ b/doc/html/range/concepts/bidirectional_range.html @@ -2,8 +2,8 @@ Bidirectional Range - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -294,7 +294,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/concepts/concept_checking.html b/doc/html/range/concepts/concept_checking.html index 9155507..18cabf4 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -2,8 +2,8 @@ Concept Checking - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -62,24 +62,24 @@

    - + See also

    @@ -102,7 +102,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/concepts/forward_range.html b/doc/html/range/concepts/forward_range.html index e9777dc..6d59f7b 100644 --- a/doc/html/range/concepts/forward_range.html +++ b/doc/html/range/concepts/forward_range.html @@ -2,8 +2,8 @@ Forward Range - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -154,7 +154,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/concepts/overview.html b/doc/html/range/concepts/overview.html index 7cd19e8..0fa9643 100644 --- a/doc/html/range/concepts/overview.html +++ b/doc/html/range/concepts/overview.html @@ -2,8 +2,8 @@ Overview - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -41,11 +41,11 @@

    • - own the elements that can be accessed through it, -
    • + own the elements that can be accessed through it, +
    • - have copy semantics, -
    • + have copy semantics, +

    Because of the second requirement, a Range object must be passed by (const @@ -73,7 +73,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index c54a961..ba2437f 100644 --- a/doc/html/range/concepts/random_access_range.html +++ b/doc/html/range/concepts/random_access_range.html @@ -2,8 +2,8 @@ Random Access Range - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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
    @@ -181,7 +181,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/concepts/single_pass_range.html b/doc/html/range/concepts/single_pass_range.html index eeca3f7..f44ebd1 100644 --- a/doc/html/range/concepts/single_pass_range.html +++ b/doc/html/range/concepts/single_pass_range.html @@ -2,8 +2,8 @@ Single Pass Range - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -344,7 +344,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/examples.html b/doc/html/range/examples.html index 4be5b97..14aad79 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -2,8 +2,8 @@ Examples - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -31,19 +31,31 @@

    @@ -56,7 +68,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/faq.html b/doc/html/range/faq.html index cb21529..6a689f1 100644 --- a/doc/html/range/faq.html +++ b/doc/html/range/faq.html @@ -2,8 +2,8 @@ FAQ - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    FAQ

    @@ -31,84 +31,47 @@ 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. -

    -

    -

    -
    +

    + In general it is not possible nor desirable to find a corresponding const_iterator. When it is possible to + come up with one, the client might choose to construct a std::pair<const_iterator,const_iterator> object. +

    +

    + Note that an iterator_range is somewhat more + convenient than a pair and + that a sub_range does propagate const-ness. +

    2. Why is there not supplied more types or more functions?

    -
    -

    -

    -

    - The library has been kept small because its current interface will serve - most purposes. If and when a genuine need arises for more functionality, - it can be implemented. -

    -

    -

    -
    +

    + The library has been kept small because its current interface will serve + most purposes. If and when a genuine need arises for more functionality, + it can be implemented. +

    3. How should I implement generic algorithms for ranges?

    -
    -

    -

    -

    - One should always start with a generic algorithm that takes two iterators - (or more) as input. Then use Boost.Range to build handier versions on top - of the iterator based algorithm. Please notice that once the range version - of the algorithm is done, it makes sense not to expose the iterator version - in the public interface. -

    -

    -

    -
    +

    + One should always start with a generic algorithm that takes two iterators + (or more) as input. Then use Boost.Range to build handier versions on top + of the iterator based algorithm. Please notice that once the range version + of the algorithm is done, it makes sense not to expose the iterator version + in the public interface. +

    4. Why is there no Incrementable Range concept?

    -
    -

    -

    -

    - Even though we speak of incrementable iterators, it would not make much - sense for ranges; for example, we cannot determine the size and emptiness - of a range since we cannot even compare its iterators. -

    -

    -

    -
    -
    -

    -

    -

    - Note also that incrementable iterators are derived from output iterators - and so there exist no output range. -

    -

    -

    -
    +

    + 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. +

    @@ -120,7 +83,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/history_ack.html b/doc/html/range/history_ack.html index 7376fd8..e884812 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -2,8 +2,8 @@ History and Acknowledgement - - + + @@ -12,21 +12,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHome +PrevUpHome
    -
    +

    - + Version 1 - before Boost 1.43

    @@ -60,26 +60,26 @@

    • - Pavol Droba for help with documentation and implementation -
    • + Pavol Droba for help with documentation and implementation +
    • - Pavel Vozenilek for help with porting the library -
    • + Pavel Vozenilek for help with porting the library +
    • - Jonathan Turkanis and John Torjo for help with documentation -
    • + Jonathan Turkanis and John Torjo for help with documentation +
    • - Hartmut Kaiser for being review manager -
    • + 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.

    - + Version 2 - Boost 1.43 and beyond

    @@ -91,41 +91,49 @@ There were an enormous number of very significant contributors through all stages of this library.

    +

    + Prior to Boost.RangeEx there had been a number of Range library implementations, + these include library implementations by Eric Niebler, Adobe, Shunsuke Sogame + etc. Eric Niebler contributed the Range Adaptor idea which is arguably the + single biggest innovation in this library. Inevitably a great deal of commonality + evolved in each of these libraries, but a considerable amount of effort was + expended to learn from all of the divergent techniques. +

    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 -
    • + Thorsten Ottosen: review management, design advice, documentation feedback +
    • - Eric Niebler: feedback -
    • + Eric Niebler: early implementation, and review feedback +
    • - Joel de Guzman: review -
    • + Joel de Guzman: review +
    • - Mathias Gaunard: review -
    • + Mathias Gaunard: review +
    • - David Abrahams: implementation advice -
    • + David Abrahams: implementation advice +
    • - Robert Jones: defect reports, usage feedback -
    • + Robert Jones: defect reports, usage feedback +
    • - Sean Parent: contributed experience from the Adobe range library -
    • + Sean Parent: contributed experience from the Adobe range library +
    • - Arno Schoedl: implementations, and review -
    • + Arno Schoedl: implementations, and review +
    • - Rogier van Dalen: review -
    • + Rogier van Dalen: review +
    • - Vincente Botet: review, documentation feedback -
    • + Vincente Botet: review, documentation feedback +

    Regardless of how I write this section it will never truly fairly capture the @@ -142,7 +150,7 @@


    -PrevUpHome +PrevUpHome
    diff --git a/doc/html/range/introduction.html b/doc/html/range/introduction.html index 425f7c0..7d24ba6 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -2,8 +2,8 @@ Introduction - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -59,18 +59,18 @@

    • - simpler implementation and specification of generic range algorithms -
    • + simpler implementation and specification of generic range algorithms +
    • - more flexible, compact and maintainable client code -
    • + more flexible, compact and maintainable client code +
    • - safe use of built-in arrays (for legacy code; why else would you use built-in - arrays?) -
    • + safe use of built-in arrays (for legacy code; why else would you use built-in + arrays?) +

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    @@ -123,7 +123,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/library_headers.html b/doc/html/range/library_headers.html index 0e06413..93a048f 100644 --- a/doc/html/range/library_headers.html +++ b/doc/html/range/library_headers.html @@ -2,8 +2,8 @@ Library Headers - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/library_headers/adaptors.html b/doc/html/range/library_headers/adaptors.html index f8810a4..d6948ea 100644 --- a/doc/html/range/library_headers/adaptors.html +++ b/doc/html/range/library_headers/adaptors.html @@ -2,8 +2,8 @@ Adaptors - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -226,7 +226,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/library_headers/algorithm.html b/doc/html/range/library_headers/algorithm.html index 6beb47e..cab83e7 100644 --- a/doc/html/range/library_headers/algorithm.html +++ b/doc/html/range/library_headers/algorithm.html @@ -2,8 +2,8 @@ Algorithm - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -677,7 +677,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/library_headers/algorithm_extensions.html b/doc/html/range/library_headers/algorithm_extensions.html index f3dd061..7a4db8f 100644 --- a/doc/html/range/library_headers/algorithm_extensions.html +++ b/doc/html/range/library_headers/algorithm_extensions.html @@ -2,8 +2,8 @@ Algorithm Extensions - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Algorithm Extensions @@ -166,7 +166,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/library_headers/general.html b/doc/html/range/library_headers/general.html index 558fe74..5996f99 100644 --- a/doc/html/range/library_headers/general.html +++ b/doc/html/range/library_headers/general.html @@ -2,8 +2,8 @@ General - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -545,7 +545,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 7f2827c..31acfd5 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -2,8 +2,8 @@ MFC/ATL (courtesy of Shunsuke Sogame) - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Introduction

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

    - + Overview

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/mfc_atl/atl_ranges.html b/doc/html/range/mfc_atl/atl_ranges.html index 65ee355..6c96f33 100644 --- a/doc/html/range/mfc_atl/atl_ranges.html +++ b/doc/html/range/mfc_atl/atl_ranges.html @@ -2,8 +2,8 @@ ATL Ranges - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -368,7 +368,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/mfc_atl/const_ranges.html b/doc/html/range/mfc_atl/const_ranges.html index 2e047f6..cf41223 100644 --- a/doc/html/range/mfc_atl/const_ranges.html +++ b/doc/html/range/mfc_atl/const_ranges.html @@ -2,8 +2,8 @@ const Ranges - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -119,7 +119,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/mfc_atl/mfc_ranges.html b/doc/html/range/mfc_atl/mfc_ranges.html index af0c6e9..57655a2 100644 --- a/doc/html/range/mfc_atl/mfc_ranges.html +++ b/doc/html/range/mfc_atl/mfc_ranges.html @@ -2,8 +2,8 @@ MFC Ranges - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -474,7 +474,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/mfc_atl/references.html b/doc/html/range/mfc_atl/references.html index 124a538..1d0a7a4 100644 --- a/doc/html/range/mfc_atl/references.html +++ b/doc/html/range/mfc_atl/references.html @@ -2,8 +2,8 @@ References - - + + @@ -13,25 +13,31 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    + @@ -44,7 +50,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/mfc_atl/requirements.html b/doc/html/range/mfc_atl/requirements.html index 131433f..8c0a80a 100644 --- a/doc/html/range/mfc_atl/requirements.html +++ b/doc/html/range/mfc_atl/requirements.html @@ -2,8 +2,8 @@ Requirements - - + + @@ -13,26 +13,26 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    • - Boost C++ Libraries Version 1.34.0 or later (no compilation required) -
    • + Boost C++ Libraries Version 1.34.0 or later (no compilation required) +
    • - Visual C++ 7.1 or later (for MFC and ATL) -
    • + Visual C++ 7.1 or later (for MFC and ATL) +
    @@ -45,7 +45,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index 45d3a07..e2afd81 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -2,8 +2,8 @@ Portability - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -47,32 +47,32 @@

    1. - do not use built-in arrays, -
    2. + do not use built-in arrays, +
    3. - do not pass rvalues to begin(), - end() - and iterator_range Range constructors - and assignment operators, -
    4. + do not pass rvalues to begin(), + end() + and iterator_range Range constructors + and assignment operators, +
    5. - use const_begin() - and const_end() - whenever your code by intention is read-only; this will also solve most rvalue - problems, -
    6. + use const_begin() + and const_end() + whenever your code by intention is read-only; this will also solve most + rvalue problems, +
    7. - do not rely on ADL: -
        + do not rely on ADL: +
        • - if you overload functions, include that header before the headers in - this library, -
        • + if you overload functions, include that header before the headers + in this library, +
        • - put all overloads in namespace boost. -
        • + put all overloads in namespace boost. +
        - +
    @@ -85,7 +85,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index cbff24d..9b31bb4 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -2,8 +2,8 @@ Reference - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -89,7 +89,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors.html b/doc/html/range/reference/adaptors.html index b649558..59564f9 100644 --- a/doc/html/range/reference/adaptors.html +++ b/doc/html/range/reference/adaptors.html @@ -2,8 +2,8 @@ Range Adaptors - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/general_requirements.html b/doc/html/range/reference/adaptors/general_requirements.html index 63abc37..83d19c0 100644 --- a/doc/html/range/reference/adaptors/general_requirements.html +++ b/doc/html/range/reference/adaptors/general_requirements.html @@ -2,8 +2,8 @@ General Requirements - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    General Requirements @@ -33,40 +33,40 @@

    • -fwdRng is an expression - of a type R that models - ForwardRange -
    • + fwdRng is an expression + of a type R that models + ForwardRange +
    • -biRng is an expression - of a type R that models - BidirectionalRange -
    • + biRng is an expression + of a type R that models + BidirectionalRange +
    • -rndRng is an expression - of a type R that models - RandomAccessRange -
    • + rndRng is an expression + of a type R that models + RandomAccessRange +
    • -pred is an expression - of a type that models UnaryPredicate -
    • + pred is an expression + of a type that models UnaryPredicate +
    • -bi_pred is an expression - of a type that models BinaryPredicate -
    • + bi_pred is an expression + of a type that models BinaryPredicate +
    • -fun is an expression - of a type that models UnaryFunction -
    • + 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 -
    • + 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 -
    • + n,m are integer expressions convertible + to range_difference<R>::type +

    Also note that boost::range_value<R>::type must be implicitly convertible to @@ -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 3272a3c..73bccb8 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -2,8 +2,8 @@ Introduction and motivation - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Introduction and motivation @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

    - + Composition of Adaptors
    @@ -132,8 +132,14 @@ to algorithms. For example, consider these Range algorithms:

      -
    • boost::copy( rng, out )
    • -
    • boost::count( rng, pred )
    • +
    • + boost::copy( rng, out ) +
    • +
    • + boost::count( + rng, + pred ) +

    What should we do if we only want to copy an element a @@ -142,13 +148,17 @@ The naive answer would be to use these algorithms:

      -
    • boost::copy_if( - rng, - pred, - out )
    • -
    • boost::count_if( - rng, - pred )
    • +
    • + boost::copy_if( + rng, + pred, + out ) +
    • +
    • + boost::count_if( + rng, + pred ) +

    These algorithms are only defined to maintain a one to one relationship @@ -159,7 +169,7 @@ is the design solution to this problem.

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

    - + Range Adaptor alternative to count_if algorithm
    @@ -268,7 +278,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference.html b/doc/html/range/reference/adaptors/reference.html index a76fbcb..b026090 100644 --- a/doc/html/range/reference/adaptors/reference.html +++ b/doc/html/range/reference/adaptors/reference.html @@ -2,8 +2,8 @@ Reference - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -57,7 +57,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 c6d4404..31128ea 100644 --- a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html @@ -2,8 +2,8 @@ adjacent_filtered - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    adjacent_filtered @@ -77,29 +77,30 @@
    • -Precondition: The value_type - of the range is convertible to both argument types of 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. -
    • + 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. -
    • + Throws: Whatever the copy constructor + of bi_pred might + throw. +
    • -Range Category:Single - Pass Range -
    • + Range Category: Single + Pass Range +
    • -Returned Range Category: The minimum - of the range category of rng - and Forward Range -
    • + Returned Range Category: The minimum + of the range category of rng + and Forward Range +
    -
    +
    adjacent_filtered example @@ -151,7 +152,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/copied.html b/doc/html/range/reference/adaptors/reference/copied.html index 24b72f1..b690eba 100644 --- a/doc/html/range/reference/adaptors/reference/copied.html +++ b/doc/html/range/reference/adaptors/reference/copied.html @@ -2,8 +2,8 @@ copied - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -78,28 +78,28 @@
    • -Precondition:0 - <= n - && n - <= m - && m - < distance(rng) -
    • + Precondition: 0 + <= n + && n + <= m + && m + < distance(rng) +
    • -Returns: A new iterator_range - that holds the sliced range [n,m) - of the original range. -
    • + Returns: A new iterator_range + that holds the sliced range [n,m) + of the original range. +
    • -Range Category:Random - Access Range -
    • + Range Category: Random + Access Range +
    • -Returned Range Category:Random - Access Range -
    • + Returned Range Category: Random + Access Range +
    -
    +
    copied example @@ -150,7 +150,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/filtered.html b/doc/html/range/reference/adaptors/reference/filtered.html index 6ce9f3c..1d21ce0 100644 --- a/doc/html/range/reference/adaptors/reference/filtered.html +++ b/doc/html/range/reference/adaptors/reference/filtered.html @@ -2,8 +2,8 @@ filtered - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -76,30 +76,30 @@
    • -Precondition: The value_type - of the range is convertible to the argument type of 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. -
    • + Postcondition: For all adjacent + elements [x] in the returned range, pred(x) + is true. +
    • -Throws: Whatever the copy constructor - of pred might throw. -
    • + Throws: Whatever the copy constructor + of pred might throw. +
    • -Range Category:Forward - Range -
    • + Range Category: Forward + Range +
    • -Returned Range Category: The minimum - of the range category of rng - and Bidirectional - Range -
    • + Returned Range Category: The minimum + of the range category of rng + and Bidirectional + Range +
    -
    +
    filtered example @@ -153,7 +153,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/indexed.html b/doc/html/range/reference/adaptors/reference/indexed.html index 3ef95df..45bcbef 100644 --- a/doc/html/range/reference/adaptors/reference/indexed.html +++ b/doc/html/range/reference/adaptors/reference/indexed.html @@ -2,8 +2,8 @@ indexed - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -75,23 +75,23 @@
    • -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. -
    • + 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:Single - Pass Range -
    • + Range Category: Single + Pass Range +
    • -Returned Range Category: The range - category of rng -
    • + Returned Range Category: The range + category of rng +
    -
    +
    indexed example @@ -184,7 +184,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/indirected.html b/doc/html/range/reference/adaptors/reference/indirected.html index 7dc0558..7360891 100644 --- a/doc/html/range/reference/adaptors/reference/indirected.html +++ b/doc/html/range/reference/adaptors/reference/indirected.html @@ -2,8 +2,8 @@ indirected - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -75,24 +75,27 @@
    • -Precondition: The value_type - of the range defines unary operator*() -
    • + 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. -
    • + 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:Single - Pass Range -
    • + Range Category: Single + Pass Range +
    • -Returned Range Category: The range - category of rng -
    • + Returned Range Category: The range + category of rng +
    -
    +
    indirected example @@ -144,7 +147,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/map_keys.html b/doc/html/range/reference/adaptors/reference/map_keys.html index 6c69774..3b8e621 100644 --- a/doc/html/range/reference/adaptors/reference/map_keys.html +++ b/doc/html/range/reference/adaptors/reference/map_keys.html @@ -2,8 +2,8 @@ map_keys - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -75,23 +75,26 @@
    • -Precondition: The value_type - of the range is an instantiation of std::pair. -
    • + 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. -
    • + 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:Single - Pass Range -
    • + Range Category: Single + Pass Range +
    • -Returned Range Category: The range - category of rng. -
    • + Returned Range Category: The range + category of rng. +
    -
    +
    map_keys example @@ -144,7 +147,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/map_values.html b/doc/html/range/reference/adaptors/reference/map_values.html index 6a906b2..c55f9ae 100644 --- a/doc/html/range/reference/adaptors/reference/map_values.html +++ b/doc/html/range/reference/adaptors/reference/map_values.html @@ -2,8 +2,8 @@ map_values - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -75,23 +75,26 @@
    • -Precondition: The value_type - of the range is an instantiation of std::pair. -
    • + 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. -
    • + 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:Single - Pass Range -
    • + Range Category: Single + Pass Range +
    • -Returned Range Category: The range - category of rng. -
    • + Returned Range Category: The range + category of rng. +
    -
    +
    map_values example @@ -144,7 +147,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/adaptors/reference/replaced.html b/doc/html/range/reference/adaptors/reference/replaced.html index 3bcfff4..da45959 100644 --- a/doc/html/range/reference/adaptors/reference/replaced.html +++ b/doc/html/range/reference/adaptors/reference/replaced.html @@ -2,8 +2,8 @@ replaced - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -78,37 +78,41 @@
    • -Precondition:
        + Precondition: +
        • -new_value is convertible - to the value_type - of the range. -
        • + new_value is + convertible to the value_type + of the range. +
        • -old_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. -
      • + 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:Forward - Range -
      • + Range Category: Forward + Range +
      • -Returned Range Category: The range - category of rng. -
      • + Returned Range Category: The range + category of rng. +
      -
      +
      replaced example @@ -159,7 +163,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/range/reference/adaptors/reference/replaced_if.html b/doc/html/range/reference/adaptors/reference/replaced_if.html index dbd181e..b3b77e3 100644 --- a/doc/html/range/reference/adaptors/reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/reference/replaced_if.html @@ -2,8 +2,8 @@ replaced_if - - + + @@ -13,16 +13,16 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      -
      +
      replaced_if @@ -79,36 +79,37 @@
      • -Precondition:
          + Precondition: +
          • - The range value_type - is convertible to the argument type of pred. -
          • + The range value_type + is convertible to the argument type of pred. +
          • -new_value is convertible - to the value_type - of the range. -
          • + 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. -
        • + 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:Forward - Range -
        • + Range Category: Forward + Range +
        • -Returned Range Category: The range - category of rng. -
        • + Returned Range Category: The range + category of rng. +
        -
        +
        replaced_if example @@ -164,7 +165,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/adaptors/reference/reversed.html b/doc/html/range/reference/adaptors/reference/reversed.html index f8d2f26..2b192f9 100644 --- a/doc/html/range/reference/adaptors/reference/reversed.html +++ b/doc/html/range/reference/adaptors/reference/reversed.html @@ -2,8 +2,8 @@ reversed - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -75,19 +75,19 @@
        • -Returns: A range whose iterators behave - as if they were the original iterators wrapped in reverse_iterator. -
        • + Returns: A range whose iterators + behave as if they were the original iterators wrapped in reverse_iterator. +
        • -Range Category:Bidirectional - Range -
        • + Range Category: Bidirectional + Range +
        • -Returned Range Category: The range - category of rng. -
        • + Returned Range Category: The range + category of rng. +
        -
        +
        reversed example @@ -138,7 +138,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/adaptors/reference/sliced.html b/doc/html/range/reference/adaptors/reference/sliced.html index 757aaaf..c0dfed0 100644 --- a/doc/html/range/reference/adaptors/reference/sliced.html +++ b/doc/html/range/reference/adaptors/reference/sliced.html @@ -2,8 +2,8 @@ sliced - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -78,26 +78,26 @@
        -
        +
        sliced example @@ -148,7 +148,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/adaptors/reference/strided.html b/doc/html/range/reference/adaptors/reference/strided.html index b641325..2cbb302 100644 --- a/doc/html/range/reference/adaptors/reference/strided.html +++ b/doc/html/range/reference/adaptors/reference/strided.html @@ -2,8 +2,8 @@ strided - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -76,25 +76,25 @@
        • -Precondition:0 - <= n - && n - < distance(rng) -
        • + Precondition: 0 + <= n + && n + < distance(rng) +
        • -Returns: A new range based on rng where traversal is performed - in steps of n. -
        • + Returns: A new range based on rng where traversal is performed + in steps of n. +
        • -Range Category:Random - Access Range -
        • + Range Category: Random + Access Range +
        • -Returned Range Category:Random - Access Range -
        • + Returned Range Category: Random + Access Range +
        -
        +
        strided example @@ -145,7 +145,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/adaptors/reference/tokenized.html b/doc/html/range/reference/adaptors/reference/tokenized.html index 32f57e6..66e5cd7 100644 --- a/doc/html/range/reference/adaptors/reference/tokenized.html +++ b/doc/html/range/reference/adaptors/reference/tokenized.html @@ -2,8 +2,8 @@ tokenized - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -88,47 +88,50 @@
        • -Precondition:
            + 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. -
            • + 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. -
            • + i has the type + int. +
            • - the value_type - of rndRng is int. -
            • + the value_type + of rndRng is + int. +
            • -flags has the type - regex_constants::syntax_option_type. -
            • + 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. -
          • + 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. -
          • + Throws: Whatever constructing and + copying equivalent regex_token_iterators + might throw. +
          • -Range Category:Random - Access Range -
          • + Range Category: Random + Access Range +
          • -Returned Range Category:Random - Access Range -
          • + Returned Range Category: Random + Access Range +
        @@ -141,7 +144,7 @@

        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/adaptors/reference/transformed.html b/doc/html/range/reference/adaptors/reference/transformed.html index 43b8758..9631986 100644 --- a/doc/html/range/reference/adaptors/reference/transformed.html +++ b/doc/html/range/reference/adaptors/reference/transformed.html @@ -2,8 +2,8 @@ transformed - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        transformed @@ -77,28 +77,31 @@
        • -Precondition: The value_type - of the range is convertible to the argument type of 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. -
        • + 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. -
        • + Throws: Whatever the copy-constructor + of fun might throw. +
        • -Range Category:Single - Pass Range -
        • + Range Category: Single + Pass Range +
        • -Returned Range Category: The range - category of rng. -
        • + Returned Range Category: The range + category of rng. +
        -
        +
        transformed example @@ -155,7 +158,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/adaptors/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html index 65fdc6e..6ab4c59 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -2,8 +2,8 @@ uniqued - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -75,24 +75,24 @@
        • -Precondition: The value_type - of the range is comparable with operator==(). -
        • + 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. -
        • + Postcondition: For all adjacent + elements [x,y] in the returned range, x==y is false. +
        • -Range Category:Forward - Range -
        • + Range Category: Forward + Range +
        • -Returned Range Category: The minimum - of the range concept of rng - and Forward Range. -
        • + Returned Range Category: The minimum + of the range concept of rng + and Forward Range. +
        -
        +
        uniqued example @@ -141,7 +141,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index a8b27ff..0bc9f39 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -2,8 +2,8 @@ Range Algorithm - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -50,7 +50,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/heap.html b/doc/html/range/reference/algorithms/heap.html index c06c707..045ea7b 100644 --- a/doc/html/range/reference/algorithms/heap.html +++ b/doc/html/range/reference/algorithms/heap.html @@ -2,8 +2,8 @@ Heap algorithms - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -43,7 +43,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index 2cffa4f..ec8c914 100644 --- a/doc/html/range/reference/algorithms/heap/make_heap.html +++ b/doc/html/range/reference/algorithms/heap/make_heap.html @@ -2,8 +2,8 @@ make_heap - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -75,50 +75,50 @@

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
        • + 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. -
        • + 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 a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -Compare is a model - of the StrictWeakOrderingConcept. -
        • + Compare is a model + of the StrictWeakOrderingConcept. +
        • -RandomAccessRange's - value type is convertible to both of Compare's - argument types. -
        • + RandomAccessRange's + value type is convertible to both of Compare's + argument types. +
        - + Complexity

        @@ -137,7 +137,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/heap/pop_heap.html b/doc/html/range/reference/algorithms/heap/pop_heap.html index ec7f440..f54fa6d 100644 --- a/doc/html/range/reference/algorithms/heap/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap/pop_heap.html @@ -2,8 +2,8 @@ pop_heap - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -77,60 +77,62 @@

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
        • + 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. -
        • + 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 a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -Compare is a model - of the StrictWeakOrderingConcept. -
        • + Compare is a model + of the StrictWeakOrderingConcept. +
        • -RandomAccessRange's - value type is convertible to both of Compare's - argument types. -
        • + RandomAccessRange's + value type is convertible to both of Compare's + argument types. +
        - + Precondition:
          -
        • !empty(rng)
        • -rng is a heap. -
        • + !empty(rng) + +
        • + rng is a heap. +
        - + Complexity

        @@ -149,7 +151,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index 2c59f90..04bd5de 100644 --- a/doc/html/range/reference/algorithms/heap/push_heap.html +++ b/doc/html/range/reference/algorithms/heap/push_heap.html @@ -2,8 +2,8 @@ push_heap - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -77,60 +77,62 @@

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
        • + 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. -
        • + 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 a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -Compare is a model - of the StrictWeakOrderingConcept. -
        • + Compare is a model + of the StrictWeakOrderingConcept. +
        • -RandomAccessRange's - value type is convertible to both of Compare's - argument types. -
        • + RandomAccessRange's + value type is convertible to both of Compare's + argument types. +
        - + Precondition:
          -
        • !empty(rng)
        • -[begin(rng), prior(end(rng))) is a heap. -
        • + !empty(rng) + +
        • + [begin(rng), prior(end(rng))) is a heap. +
        - + Complexity

        @@ -147,7 +149,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 32eaee6..ee226c1 100644 --- a/doc/html/range/reference/algorithms/heap/sort_heap.html +++ b/doc/html/range/reference/algorithms/heap/sort_heap.html @@ -2,8 +2,8 @@ sort_heap - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -76,57 +76,57 @@

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
        • + 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. -
        • + 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 a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -Compare is a model - of the StrictWeakOrderingConcept. -
        • + Compare is a model + of the StrictWeakOrderingConcept. +
        • -RandomAccessRange's - value type is convertible to both of Compare's - argument types. -
        • + RandomAccessRange's + value type is convertible to both of Compare's + argument types. +
        - + Precondition:

        rng is a heap.

        - + Complexity

        @@ -146,7 +146,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating.html b/doc/html/range/reference/algorithms/mutating.html index 1990363..7a7d945 100644 --- a/doc/html/range/reference/algorithms/mutating.html +++ b/doc/html/range/reference/algorithms/mutating.html @@ -2,8 +2,8 @@ Mutating algorithms - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -85,7 +85,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/copy.html b/doc/html/range/reference/algorithms/mutating/copy.html index 8968afa..73bfab7 100644 --- a/doc/html/range/reference/algorithms/mutating/copy.html +++ b/doc/html/range/reference/algorithms/mutating/copy.html @@ -2,8 +2,8 @@ copy - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

        @@ -39,7 +39,7 @@

        - + Description

        @@ -50,49 +50,49 @@ distance(source_rng)

        - + Definition

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

        - + Requirements
        • -SinglePassRange is - a model of the Single - Pass Range Concept. -
        • + SinglePassRange is + a model of the Single + Pass Range Concept. +
        • -OutputIterator is a - model of the OutputIteratorConcept. -
        • + OutputIterator is + a model of the OutputIteratorConcept. +
        • - The value_type of - Single Pass Range - Concept is convertible to a type in OutputIterator's - set of value types. -
        • + The value_type of + Single Pass Range + Concept 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 is not an + iterator within the source_rng. +
        • -[out_it, out_it - + distance(source_rng)) is a valid range. -
        • + [out_it, out_it + + distance(source_rng)) is a valid range. +
        - + Complexity

        @@ -109,7 +109,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index 3cc1743..e48d5d0 100644 --- a/doc/html/range/reference/algorithms/mutating/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -2,8 +2,8 @@ copy_backward - - + + @@ -13,22 +13,22 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

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

        - + Description

        @@ -60,49 +60,49 @@ 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 Bidirectional - Range Concept. -
        • + BidirectionalRange + is a model of Bidirectional + Range Concept. +
        • -OutputIterator is a - model of the OutputIteratorConcept. -
        • + OutputIterator is + a model of the OutputIteratorConcept. +
        • - The value_type of - Bidirectional Range - Concept is convertible to a type in OutputIterator's - set of value types. -
        • + The value_type of + Bidirectional + Range Concept 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 is not an + iterator within the source_rng. +
        • -[out_it, out_it - + distance(source_rng)) is a valid range. -
        • + [out_it, out_it + + distance(source_rng)) is a valid range. +
        - + Complexity

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


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index b2dfe94..157647f 100644 --- a/doc/html/range/reference/algorithms/mutating/fill.html +++ b/doc/html/range/reference/algorithms/mutating/fill.html @@ -2,8 +2,8 @@ fill - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

        @@ -39,7 +39,7 @@

        - + Description

        @@ -48,37 +48,37 @@ in the range rng.

        - + Definition

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

        - + Requirements
        • -ForwardRange is a model - of the Forward Range - Concept. -
        • + ForwardRange is a + model of the Forward + Range Concept. +
        • -ForwardRange is mutable. -
        • + ForwardRange is mutable. +
        • -Value is a model of - the AssignableConcept. -
        • + Value is a model + of the AssignableConcept. +
        • -Value is convertible - to ForwardRange's value - type. -
        • + Value is convertible + to ForwardRange's + value type. +
        - + Complexity

        @@ -95,7 +95,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index 560f14f..ab0e3ae 100644 --- a/doc/html/range/reference/algorithms/mutating/fill_n.html +++ b/doc/html/range/reference/algorithms/mutating/fill_n.html @@ -2,8 +2,8 @@ fill_n - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

        @@ -39,7 +39,7 @@

        - + Description

        @@ -47,37 +47,37 @@ 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 a + model of the Forward + Range Concept. +
        • -ForwardRange is mutable. -
        • + ForwardRange is mutable. +
        • -Value is a model of - the AssignableConcept. -
        • + Value is a model + of the AssignableConcept. +
        • -Value is convertible - to ForwardRange's value - type. -
        • + Value is convertible + to ForwardRange's + value type. +
        - + Complexity

        @@ -95,7 +95,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 7868f31..dbebc72 100644 --- a/doc/html/range/reference/algorithms/mutating/generate.html +++ b/doc/html/range/reference/algorithms/mutating/generate.html @@ -2,8 +2,8 @@ generate - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

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

        - + Description

        @@ -52,52 +52,52 @@ Returns the resultant range.

        - + Definition

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

        - + Requirements
        • -ForwardRange is a model - of the Forward Range - Concept. -
        • + ForwardRange is a + model of the Forward + Range Concept. +
        • -ForwardRange is mutable. -
        • + ForwardRange is mutable. +
        • -Generator is a model - of the GeneratorConcept. -
        • + Generator is a model + of the GeneratorConcept. +
        • - The value_type of - SinglePassRange is - convertible to a type in OutputIterator's - set of value types. -
        • + 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 rng. -
        • + out_it is not an + iterator within rng. +
        • -[out_it, out_it - + distance(rng)) is a valid range. -
        • + [out_it, out_it + + distance(rng)) is a valid range. +
        - + Complexity

        @@ -114,7 +114,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index bd52738..61ca01e 100644 --- a/doc/html/range/reference/algorithms/mutating/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -2,8 +2,8 @@ inplace_merge - - + + @@ -13,22 +13,22 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -87,23 +87,23 @@

        • -BidirectionalRange - is a model of the Bidirectional - Range Concept. -
        • + BidirectionalRange + is a model of the Bidirectional + Range Concept. +
        • -BidirectionalRange - is mutable. -
        • + BidirectionalRange + is mutable. +
        • -range_value<BidirectionalRange>::type is a model of LessThanComparableConcept -
        • + range_value<BidirectionalRange>::type is a model of LessThanComparableConcept +
        • - The ordering on objects of range_type<BidirectionalRange>::type - is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
        • + The ordering on objects of range_type<BidirectionalRange>::type + is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

        For the predicate version: * BidirectionalRange is a model of the @@ -116,55 +116,55 @@ argument types.

        - + Precondition:
        - + For the non-predicate version:
        • -middle is in the range - rng. -
        • + middle is in the + range rng. +
        • -[begin(rng), middle) is in ascending order. That is for - each pair of adjacent elements [x,y], - y < - x is false. -
        • + [begin(rng), middle) is in ascending order. That is for + each pair of adjacent elements [x,y], + y < + x is false. +
        • -[middle, end(rng)) is in ascending order. That is for - each pair of adjacent elements [x,y], - y < - x is false. -
        • + [middle, end(rng)) is in ascending order. That is + for each pair of adjacent elements [x,y], + y < + x is false. +
        - + For the predicate version:
        • -middle is in the range - rng. -
        • + middle is in the + range rng. +
        • -[begin(rng), middle) is in ascending order. That is for - each pair of adjacent elements [x,y], - pred(y,x) == false. -
        • + [begin(rng), middle) is in ascending order. That is for + each pair of adjacent elements [x,y], + pred(y,x) == false. +
        • -[middle, end(rng)) is in ascending order. That is for - each pair of adjacent elements [x,y], - pred(y,x) == false. -
        • + [middle, end(rng)) is in ascending order. That is + for each pair of adjacent elements [x,y], + pred(y,x) == false. +
        - + Complexity

        @@ -181,7 +181,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html index 6649d4e..833a616 100644 --- a/doc/html/range/reference/algorithms/mutating/merge.html +++ b/doc/html/range/reference/algorithms/mutating/merge.html @@ -2,8 +2,8 @@ merge - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -90,137 +90,147 @@

        • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
        • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
        • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
        • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
        • -range_value<SinglePassRange1>::type is the same as range_value<SinglePassRange2>::type. -
        • + range_value<SinglePassRange1>::type is the same as range_value<SinglePassRange2>::type. +
        • -range_value<SinglePassRange1>::type is a model of the LessThanComparableConcept. -
        • + range_value<SinglePassRange1>::type is a model of the LessThanComparableConcept. +
        • - The ordering on objects of range_value<SinglePassRange1>::type - is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
        • + The ordering on objects of range_value<SinglePassRange1>::type + is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
        • -range_value<SinglePassRange1>::type is convertible to a type in - OutputIterator's set - of value types. -
        • + range_value<SinglePassRange1>::type is convertible to a type in + OutputIterator's + set of value types. +

        For the predicate version:

        • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
        • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
        • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
        • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
        • -range_value<SinglePassRange1>::type is the same as range_value<SinglePassRange2>::type. -
        • + range_value<SinglePassRange1>::type is the same as range_value<SinglePassRange2>::type. +
        • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
        • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
        • -SinglePassRange1's - value type is convertible to both BinaryPredicate's - argument types. -
        • + SinglePassRange1's + value type is convertible to both BinaryPredicate's + argument types. +
        • -range_value<SinglePassRange1>::type is convertible to a type in - OutputIterator's set - of value types. -
        • + range_value<SinglePassRange1>::type is convertible to a type in + OutputIterator's + set of value types. +
        - + Precondition:
        - + For the non-predicate version:
        • - The elements of rng1 - are in ascending order. That is, for each adjacent element pair [x,y] of rng1, - y < - x == - false. -
        • + The elements of rng1 + are in ascending order. That is, for each adjacent element pair + [x,y] of rng1, + y < + x == + false. +
        • - The elements of rng2 - are in ascending order. That is, for each adjacent element pair [x,y] of rng2, - y < - x == - false. -
        • + The elements of rng2 + are in ascending order. That is, for each adjacent element pair + [x,y] of rng2, + y < + x == + false. +
        • - The ranges rng1 and - [out, out + distance(rng1) + distance(rng2)) - do not overlap. -
        • + The ranges rng1 and + [out, out + + distance(rng1) + distance(rng2)) + do not overlap. +
        • - The ranges rng2 and - [out, out + distance(rng1) + distance(rng2)) - do not overlap. -
        • + The ranges rng2 and + [out, out + + distance(rng1) + distance(rng2)) + do not overlap. +
        • -[out, out + distance(rng1) + distance(rng2)) - is a valid range. -
        • + [out, out + + distance(rng1) + distance(rng2)) + is a valid range. +
        - + For the predicate version:
        • - The elements of rng1 - are in ascending order. That is, for each adjacent element pair [x,y], of rng1, - pred(y, x) == false. -
        • + The elements of rng1 + are in ascending order. That is, for each adjacent element pair + [x,y], of rng1, + pred(y, x) == false. +
        • - The elements of rng2 - are in ascending order. That is, for each adjacent element pair [x,y], of rng2, - pred(y, x) == false. -
        • + The elements of rng2 + are in ascending order. That is, for each adjacent element pair + [x,y], of rng2, + pred(y, x) == false. +
        • - The ranges rng1 and - [out, out + distance(rng1) + distance(rng2)) - do not overlap. -
        • + The ranges rng1 and + [out, out + + distance(rng1) + distance(rng2)) + do not overlap. +
        • - The ranges rng2 and - [out, out + distance(rng1) + distance(rng2)) - do not overlap. -
        • + The ranges rng2 and + [out, out + + distance(rng1) + distance(rng2)) + do not overlap. +
        • -[out, out + distance(rng1) + distance(rng2)) - is a valid range. -
        • + [out, out + + distance(rng1) + distance(rng2)) + is a valid range. +
        - + Complexity

        @@ -240,7 +250,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/nth_element.html b/doc/html/range/reference/algorithms/mutating/nth_element.html index a844b1c..97949e5 100644 --- a/doc/html/range/reference/algorithms/mutating/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -2,8 +2,8 @@ nth_element - - + + @@ -13,22 +13,22 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -85,50 +85,50 @@

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
        • + RandomAccessRange's + value type is a model of the LessThanComparableConcept. +
        • - The ordering relation on RandomAccessRange's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
        • + The ordering relation on RandomAccessRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

        For the predicate version:

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
        • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
        • -RandomAccessRange's - value type is convertible to both of BinaryPredicate's - argument types. -
        • + RandomAccessRange's + value type is convertible to both of BinaryPredicate's + argument types. +
        - + Complexity

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


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/partial_sort.html b/doc/html/range/reference/algorithms/mutating/partial_sort.html index 62c2ec0..1e4c3f2 100644 --- a/doc/html/range/reference/algorithms/mutating/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -2,8 +2,8 @@ partial_sort - - + + @@ -13,22 +13,22 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + 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

        @@ -90,50 +90,50 @@

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
        • + RandomAccessRange's + value type is a model of the LessThanComparableConcept. +
        • - The ordering relation on RandomAccessRange's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
        • + The ordering relation on RandomAccessRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

        For the predicate version:

        • -RandomAccessRange is - a model of the Random - Access Range Concept. -
        • + RandomAccessRange + is a model of the Random + Access Range Concept. +
        • -RandomAccessRange is - mutable. -
        • + RandomAccessRange + is mutable. +
        • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
        • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
        • -RandomAccessRange's - value type is convertible to both of BinaryPredicate's - argument types. -
        • + RandomAccessRange's + value type is convertible to both of BinaryPredicate's + argument types. +
        - + Complexity

        @@ -150,7 +150,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html index 4798ea1..03c8887 100644 --- a/doc/html/range/reference/algorithms/mutating/partition.html +++ b/doc/html/range/reference/algorithms/mutating/partition.html @@ -2,8 +2,8 @@ partition - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

        @@ -66,7 +66,7 @@

        - + Description

        @@ -80,34 +80,34 @@ corresponds to the middle iterator.

        - + Definition

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

        - + Requirements
        • -ForwardRange is a model - of the Forward Range - Concept. -
        • + ForwardRange is a + model of the Forward + Range Concept. +
        • -UnaryPredicate is a - model of the PredicateConcept. -
        • + UnaryPredicate is + a model of the PredicateConcept. +
        • -ForwardRange's value - type is convertible to UnaryPredicate's - argument type. -
        • + ForwardRange's value + type is convertible to UnaryPredicate's + argument type. +
        - + Complexity

        @@ -126,7 +126,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index 45aa69e..7337562 100644 --- a/doc/html/range/reference/algorithms/mutating/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -2,8 +2,8 @@ random_shuffle - - + + @@ -13,22 +13,22 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        - + Prototype

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

        - + Description

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

        - + Definition

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

        - + Requirements

        For the version without a Generator:

        + RandomAccessRange + is a model of the Random + Access Range Concept. +

      For the version with a Generator:

      • -RandomAccessRange is - a model of the Random - Access Range Concept. -
      • + RandomAccessRange + is a model of the Random + Access Range Concept. +
      • -Generator is a model - of the RandomNumberGeneratorConcept. -
      • + Generator is a model + of the RandomNumberGeneratorConcept. +
      • -RandomAccessRange's - distance type is convertible to Generator's - argument type. -
      • + RandomAccessRange's + distance type is convertible to Generator's + argument type. +
      - + Precondition:
      • -distance(rng) - is less than gen's - maximum value. -
      + distance(rng) + is less than gen's + maximum value. +
    - + Complexity

    @@ -126,7 +126,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index df9ee6c..b89373e 100644 --- a/doc/html/range/reference/algorithms/mutating/remove.html +++ b/doc/html/range/reference/algorithms/mutating/remove.html @@ -2,8 +2,8 @@ remove - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -83,37 +83,37 @@ are dereferenceable, but the elements are unspecified.

    - + Definition

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

    - + Requirements
    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -Value is a model of - the EqualityComparableConcept. -
    • + Value is a model + of the EqualityComparableConcept. +
    • - Objects of type Value - can be compared for equality with objects of ForwardRange's - value type. -
    • + Objects of type Value + can be compared for equality with objects of ForwardRange's + value type. +
    - + Complexity

    @@ -132,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 index 4948098..5cfbb05 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -2,8 +2,8 @@ remove_copy - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -54,37 +54,37 @@ 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 a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -Value is a model of - the EqualityComparableConcept. -
    • + Value is a model + of the EqualityComparableConcept. +
    • - Objects of type Value - can be compared for equality with objects of ForwardRange's - value type. -
    • + Objects of type Value + can be compared for equality with objects of ForwardRange's + value type. +
    - + Complexity

    @@ -103,7 +103,7 @@


    -PrevUpHomeNext +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 index 98fd5d3..2bba221 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -2,8 +2,8 @@ remove_copy_if - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -55,32 +55,32 @@ 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 a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -UnaryPred is a model - of the UnaryPredicateConcept. -
    • + UnaryPred is a model + of the UnaryPredicateConcept. +
    - + Complexity

    @@ -98,7 +98,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 2973846..2bfcf89 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_if.html @@ -2,8 +2,8 @@ remove_if - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -66,7 +66,7 @@

    - + Description

    @@ -82,37 +82,37 @@ are unspecified.

    - + Definition

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

    - + Requirements
    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -UnaryPredicate is a - model of the PredicateConcept. -
    • + UnaryPredicate is + a model of the PredicateConcept. +
    • -ForwardRange's value - type is convertible to UnaryPredicate's - argument type. -
    • + ForwardRange's value + type is convertible to UnaryPredicate's + argument type. +
    - + Complexity

    @@ -131,7 +131,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index 695424f..8905444 100644 --- a/doc/html/range/reference/algorithms/mutating/replace.html +++ b/doc/html/range/reference/algorithms/mutating/replace.html @@ -2,8 +2,8 @@ replace - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -57,43 +57,43 @@ Return a reference to rng.

    - + Definition

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

    - + Requirements
    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -Value is convertible - to ForwardRange's value - type. -
    • + Value is convertible + to ForwardRange's + value type. +
    • -Value is a model of - the AssignableConcept. -
    • + Value is a model + of the AssignableConcept. +
    • -Value is a model of - the EqualityComparableConcept, - and may be compared for equality with objects of ForwardRange's - value type. -
    • + Value is a model + of the EqualityComparableConcept, + and may be compared for equality with objects of ForwardRange's + value type. +
    - + Complexity

    @@ -112,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 index 80dfc2d..cb6170e 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -2,8 +2,8 @@ replace_copy - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -54,41 +54,41 @@ 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 a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -Value is convertible - to ForwardRange's value - type. -
    • + Value is convertible + to ForwardRange's + value type. +
    • -Value is a model of - the AssignableConcept. -
    • + Value is a model + of the AssignableConcept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    - + Complexity

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


    -PrevUpHomeNext +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 index 5d8c9b7..3576862 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -2,8 +2,8 @@ replace_copy_if - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -52,45 +52,45 @@ : 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 a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -Value is convertible - to ForwardRange's value - type. -
    • + Value is convertible + to ForwardRange's + value type. +
    • -Value is a model of - the AssignableConcept. -
    • + Value is a model + of the AssignableConcept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -UnaryPredicate is a - model of the UnaryPredicateConcept. -
    • + UnaryPredicate is + a model of the UnaryPredicateConcept. +
    - + Complexity

    @@ -108,7 +108,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index d3d32f1..34500c7 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -2,8 +2,8 @@ replace_if - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -UnaryPredicate is a - model of the PredicateConcept -
    • + UnaryPredicate is + a model of the PredicateConcept +
    • -ForwardRange's value - type is convertible to UnaryPredicate's - argument type. -
    • + ForwardRange's value + type is convertible to UnaryPredicate's + argument type. +
    • -Value is convertible - to ForwardRange's value - type. -
    • + Value is convertible + to ForwardRange's + value type. +
    • -Value is a model of - the AssignableConcept. -
    • + Value is a model + of the AssignableConcept. +
    - + Complexity

    @@ -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 index 3c77a43..b61b6ad 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse.html +++ b/doc/html/range/reference/algorithms/mutating/reverse.html @@ -2,8 +2,8 @@ reverse - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -50,29 +50,29 @@ 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 a model of the Bidirectional + Range Concept. +
    • -BidirectionalRange - is mutable. -
    • + BidirectionalRange + is mutable. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index f039c9a..0f17aa3 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse_copy.html +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -2,8 +2,8 @@ reverse_copy - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -50,33 +50,33 @@ 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 a model of the Bidirectional + Range Concept. +
    • -BidirectionalRange - is mutable. -
    • + BidirectionalRange + is mutable. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    - + Complexity

    @@ -95,7 +95,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index c5bcb16..cc02c6d 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate.html +++ b/doc/html/range/reference/algorithms/mutating/rotate.html @@ -2,8 +2,8 @@ rotate - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    - + Precondition:
    • -[begin(rng), middle) is a valid range. -
    • + [begin(rng), middle) is a valid range. +
    • -[middle, end(rng)) is a valid range. -
    • + [middle, end(rng)) is a valid range. +
    - + Complexity

    @@ -103,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 index dc159d7..0513dff 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate_copy.html +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -2,8 +2,8 @@ rotate_copy - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -52,44 +52,44 @@ 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 a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    - + Precondition:
    • -[begin(rng), middle) is a valid range. -
    • + [begin(rng), middle) is a valid range. +
    • -[middle, end(rng)) is a valid range. -
    • + [middle, end(rng)) is a valid range. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index 543f388..b13f968 100644 --- a/doc/html/range/reference/algorithms/mutating/sort.html +++ b/doc/html/range/reference/algorithms/mutating/sort.html @@ -2,8 +2,8 @@ sort - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -86,50 +86,50 @@

    • -RandomAccessRange is - a model of the Random - Access Range Concept. -
    • + RandomAccessRange + is a model of the Random + Access Range Concept. +
    • -RandomAccessRange is - mutable. -
    • + RandomAccessRange + is mutable. +
    • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
    • + RandomAccessRange's + value type is a model of the LessThanComparableConcept. +
    • - The ordering relation on RandomAccessRange's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering relation on RandomAccessRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For versions of sort with a predicate

    • -RandomAccessRange is - a model of the Random - Access Range Concept. -
    • + RandomAccessRange + is a model of the Random + Access Range Concept. +
    • -RandomAccessRange is - mutable. -
    • + RandomAccessRange + is mutable. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -RandomAccessRange's - value type is convertible to both of BinaryPredicate's - argument types. -
    • + RandomAccessRange's + value type is convertible to both of BinaryPredicate's + argument types. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/stable_partition.html b/doc/html/range/reference/algorithms/mutating/stable_partition.html index 1bd0ef4..7926ec7 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -2,8 +2,8 @@ stable_partition - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -UnaryPredicate is a - model of the PredicateConcept. -
    • + UnaryPredicate is + a model of the PredicateConcept. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index afce5c9..651476d 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -2,8 +2,8 @@ stable_sort - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -87,50 +87,50 @@

    • -RandomAccessRange is - a model of the Random - Access Range Concept. -
    • + RandomAccessRange + is a model of the Random + Access Range Concept. +
    • -RandomAccessRange is - mutable. -
    • + RandomAccessRange + is mutable. +
    • -RandomAccessRange's - value type is a model of the LessThanComparableConcept. -
    • + RandomAccessRange's + value type is a model of the LessThanComparableConcept. +
    • - The ordering relation on RandomAccessRange's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering relation on RandomAccessRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For versions of stable_sort with a predicate:

    • -RandomAccessRange is - a model of the Random - Access Range Concept. -
    • + RandomAccessRange + is a model of the Random + Access Range Concept. +
    • -RandomAccessRange is - mutable. -
    • + RandomAccessRange + is mutable. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -RandomAccessRange's - value type is convertible to both of BinaryPredicate's - argument types. -
    • + RandomAccessRange's + value type is convertible to both of BinaryPredicate's + argument types. +
    - + Complexity

    @@ -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 index 43e30b5..70466d5 100644 --- a/doc/html/range/reference/algorithms/mutating/swap_ranges.html +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -2,8 +2,8 @@ swap_ranges - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -50,38 +50,38 @@ 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 a model of the Single + Pass Range Concept. +
    • -SinglePassRange1 is - mutable. -
    • + SinglePassRange1 + is mutable. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - mutable. -
    • + SinglePassRange2 + is mutable. +
    - + Complexity

    @@ -98,7 +98,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index 7325f42..9f6c8ff 100644 --- a/doc/html/range/reference/algorithms/mutating/transform.html +++ b/doc/html/range/reference/algorithms/mutating/transform.html @@ -2,8 +2,8 @@ transform - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -107,69 +107,69 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -UnaryOperation is a - model of the UnaryFunctionConcept. -
    • + UnaryOperation is + a model of the UnaryFunctionConcept. +
    • -SinglePassRange1's - value type must be convertible to UnaryFunction's - argument type. -
    • + SinglePassRange1's + value type must be convertible to UnaryFunction's + argument type. +
    • -UnaryFunction's result - type must be convertible to a type in OutputIterator's - set of value types. -
    • + UnaryFunction's result + type must be convertible to a type in OutputIterator's + set of value types. +

    For the binary versions of transform:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -BinaryOperation is - a model of the BinaryFunctionConcept. -
    • + BinaryOperation is + a model of the BinaryFunctionConcept. +
    • -SinglePassRange1's - value type must be convertible to BinaryFunction's - first argument type. -
    • + SinglePassRange1's + value type must be convertible to BinaryFunction's + first argument type. +
    • -SinglePassRange2's - value type must be convertible to BinaryFunction's - second argument type. -
    • + SinglePassRange2's + value type must be convertible to BinaryFunction's + second argument type. +
    • -BinaryOperation's result - type must be convertible to a type in OutputIterator's - set of value types. -
    • + BinaryOperation's + result type must be convertible to a type in OutputIterator's + set of value types. +
    - + Precondition:

    @@ -177,31 +177,33 @@

    • -out is not an iterator - within the range [begin(rng1) + 1, end(rng1)). -
    • + out is not an iterator + within the range [begin(rng1) + 1, end(rng1)). +
    • -[out, out + distance(rng1)) is a valid range. -
    • + [out, out + + distance(rng1)) is a valid range. +

    For the binary version of transform:

    • -out is not an iterator - within the range [begin(rng1) + 1, end(rng1)). -
    • + out is not an iterator + within the range [begin(rng1) + 1, end(rng1)). +
    • -out is not an iterator - within the range [begin(rng2) + 1, end(rng2)). -
    • + out is not an iterator + within the range [begin(rng2) + 1, end(rng2)). +
    • -[out, out + min(distance(rng1), distance(rng2))) is a valid range. -
    • + [out, out + + min(distance(rng1), distance(rng2))) is a valid range. +
    - + Complexity

    @@ -219,7 +221,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 8f77088..1f31285 100644 --- a/doc/html/range/reference/algorithms/mutating/unique.html +++ b/doc/html/range/reference/algorithms/mutating/unique.html @@ -2,8 +2,8 @@ unique - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -68,7 +68,7 @@

    - + Description

    @@ -86,14 +86,14 @@ type.

    - + Definition

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

    - + Requirements

    @@ -101,43 +101,43 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -ForwardRange's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange's value + type is a model of the EqualityComparableConcept. +

    For the predicate versions of unique:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange is mutable. -
    • + ForwardRange is mutable. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange's value - type is convertible to BinaryPredicate's - first argument type and to BinaryPredicate's - second argument type. -
    • + ForwardRange's value + type is convertible to BinaryPredicate's + first argument type and to BinaryPredicate's + second argument type. +
    - + Complexity

    @@ -157,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 index 85ad5a1..7d6c564 100644 --- a/doc/html/range/reference/algorithms/mutating/unique_copy.html +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -2,8 +2,8 @@ unique_copy - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -71,53 +71,53 @@

    • -SinglePassRange is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange is + a model of the Single + Pass Range Concept. +
    • -SinglePassRange is - mutable. -
    • + SinglePassRange is + mutable. +
    • -SinglePassRange's value - type is a model of the EqualityComparableConcept. -
    • + SinglePassRange's + value type is a model of the EqualityComparableConcept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + 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 + a model of the Single + Pass Range Concept. +
    • -SinglePassRange is - mutable. -
    • + SinglePassRange is + mutable. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + 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. -
    • + 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. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    - + Complexity

    @@ -137,7 +137,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new.html b/doc/html/range/reference/algorithms/new.html index d07ac11..2fc36d9 100644 --- a/doc/html/range/reference/algorithms/new.html +++ b/doc/html/range/reference/algorithms/new.html @@ -2,8 +2,8 @@ New algorithms - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -51,7 +51,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/copy_n.html b/doc/html/range/reference/algorithms/new/copy_n.html index 6a32d1c..7aa2e72 100644 --- a/doc/html/range/reference/algorithms/new/copy_n.html +++ b/doc/html/range/reference/algorithms/new/copy_n.html @@ -2,8 +2,8 @@ copy_n - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -53,33 +53,33 @@ 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. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -Size is a model of - the Integer Concept. -
    4. + Size is a model of + the Integer Concept. +
    5. -OutputIterator is a - model of the OutputIteratorConcept. -
    6. + OutputIterator is + a model of the OutputIteratorConcept. +
    - + Complexity

    @@ -97,7 +97,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/erase.html b/doc/html/range/reference/algorithms/new/erase.html index ac672ce..cf269ac 100644 --- a/doc/html/range/reference/algorithms/new/erase.html +++ b/doc/html/range/reference/algorithms/new/erase.html @@ -2,8 +2,8 @@ erase - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -58,22 +58,22 @@ 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. -Container supports - erase of an iterator range. -
    + Container supports + erase of an iterator range. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/for_each.html b/doc/html/range/reference/algorithms/new/for_each.html index f21aab0..3895da8 100644 --- a/doc/html/range/reference/algorithms/new/for_each.html +++ b/doc/html/range/reference/algorithms/new/for_each.html @@ -2,8 +2,8 @@ for_each - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -72,7 +72,7 @@

    - + Description

    @@ -88,44 +88,44 @@ 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
    1. -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    3. -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    4. + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    5. -BinaryFunction is a - model of the BinaryFunctionConcept. -
    6. + BinaryFunction is + a model of the BinaryFunctionConcept. +
    7. -SinglePassRange1's - value type is convertible to BinaryFunction's - first argument type. -
    8. + SinglePassRange1's + value type is convertible to BinaryFunction's + first argument type. +
    9. -SinglepassRange2's - value type is convertible to BinaryFunction's - second argument type. -
    10. + SinglepassRange2's + value type is convertible to BinaryFunction's + second argument type. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/insert.html b/doc/html/range/reference/algorithms/new/insert.html index f781319..11f7881 100644 --- a/doc/html/range/reference/algorithms/new/insert.html +++ b/doc/html/range/reference/algorithms/new/insert.html @@ -2,8 +2,8 @@ insert - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -54,34 +54,34 @@ target.

    - + Definition

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

    - + Requirements
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -Container supports - insert at a specified position. -
    4. + Container supports + insert at a specified position. +
    5. -SinglePassRange's value - type is convertible to Container's - value type. -
    6. + SinglePassRange's + value type is convertible to Container's + value type. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/iota.html b/doc/html/range/reference/algorithms/new/iota.html index e068eb1..0409a44 100644 --- a/doc/html/range/reference/algorithms/new/iota.html +++ b/doc/html/range/reference/algorithms/new/iota.html @@ -2,8 +2,8 @@ iota - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -50,29 +50,30 @@ + boost::distance(boost::begin(rng), it)

    - + Definition

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

    - + Requirements
    1. -ForwardRange is a model - of the Forward Range - Concept. -
    2. + ForwardRange is a + model of the Forward + Range Concept. +
    3. -Value is a model of - the Incrementable Concept. -
    4. + Value is a model + of the Incrementable + Concept. +
    - + Complexity

    @@ -89,7 +90,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 index 522248e..02ac6d5 100644 --- a/doc/html/range/reference/algorithms/new/is_sorted.html +++ b/doc/html/range/reference/algorithms/new/is_sorted.html @@ -2,8 +2,8 @@ is_sorted - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -58,34 +58,34 @@ 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. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -BinaryPredicate is - a model of the BinaryPredicate - Concept. -
    4. + BinaryPredicate is + a model of the BinaryPredicate + Concept. +
    5. - The value type of SinglePassRange - is convertible to both argument types of BinaryPredicate. -
    6. + The value type of SinglePassRange + is convertible to both argument types of BinaryPredicate. +
    - + Complexity

    @@ -102,7 +102,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/overwrite.html b/doc/html/range/reference/algorithms/new/overwrite.html index 81d3bf6..8cc81a3 100644 --- a/doc/html/range/reference/algorithms/new/overwrite.html +++ b/doc/html/range/reference/algorithms/new/overwrite.html @@ -2,8 +2,8 @@ overwrite - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -52,41 +52,43 @@ into the range to.

    - + Definition

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

    - + Requirements
    1. -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    3. -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    4. + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    5. -SinglePassRange2 is - mutable. -
    6. -
    7. distance(SinglePassRange1) - <= distance(SinglePassRange2)
    8. + SinglePassRange2 + is mutable. +
    9. -SinglePassRange1's - value type is convertible to SinglePassRange2's - value type. -
    10. + distance(SinglePassRange1) + <= distance(SinglePassRange2) + +
    11. + SinglePassRange1's + value type is convertible to SinglePassRange2's + value type. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/push_back.html b/doc/html/range/reference/algorithms/new/push_back.html index f9287a5..c369cec 100644 --- a/doc/html/range/reference/algorithms/new/push_back.html +++ b/doc/html/range/reference/algorithms/new/push_back.html @@ -2,8 +2,8 @@ push_back - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -52,34 +52,34 @@ to the back of the container target.

    - + Definition

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

    - + Requirements
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -Container supports - insert at end(). -
    4. + Container supports + insert at end(). +
    5. -SinglePassRange's value - type is convertible to Container's - value type. -
    6. + SinglePassRange's + value type is convertible to Container's + value type. +
    - + Complexity

    @@ -97,7 +97,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/push_front.html b/doc/html/range/reference/algorithms/new/push_front.html index c0f4312..c4461cb 100644 --- a/doc/html/range/reference/algorithms/new/push_front.html +++ b/doc/html/range/reference/algorithms/new/push_front.html @@ -2,8 +2,8 @@ push_front - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -52,34 +52,34 @@ to the front of the container target.

    - + Definition

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

    - + Requirements
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -Container supports - insert at begin(). -
    4. + Container supports + insert at begin(). +
    5. -SinglePassRange's value - type is convertible to Container's - value type. -
    6. + SinglePassRange's + value type is convertible to Container's + value type. +
    - + Complexity

    @@ -97,7 +97,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/new/remove_erase.html b/doc/html/range/reference/algorithms/new/remove_erase.html index 94886a6..c1357c9 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase.html +++ b/doc/html/range/reference/algorithms/new/remove_erase.html @@ -2,8 +2,8 @@ remove_erase - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -50,22 +50,22 @@ algorithm which merely rearranges elements.

    - + Definition

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

    - + Requirements
    1. -Container supports - erase of an iterator range. -
    + Container supports + erase of an iterator range. +
    - + Complexity

    @@ -82,7 +82,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 024c4b3..616cb3a 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -2,8 +2,8 @@ remove_erase_if - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -52,28 +52,28 @@ algorithm which merely rearranges elements.

    - + Definition

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

    - + Requirements
    1. -Container supports - erase of an iterator range. -
    2. + Container supports + erase of an iterator range. +
    3. -Pred is a model of - the Predicate Concept. -
    4. + Pred is a model of + the Predicate Concept. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating.html b/doc/html/range/reference/algorithms/non_mutating.html index f25a857..ef22f2d 100644 --- a/doc/html/range/reference/algorithms/non_mutating.html +++ b/doc/html/range/reference/algorithms/non_mutating.html @@ -2,8 +2,8 @@ Non-mutating algorithms - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Non-mutating algorithms @@ -75,7 +75,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    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 41a16a1..3fe8854 100644 --- a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -2,8 +2,8 @@ adjacent_find - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -113,37 +113,37 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange's value + type is a model of the EqualityComparableConcept. +

    For the predicate versions of adjacent_find:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange's value - type is convertible to BinaryPredicate's - first argument type and to BinaryPredicate's - second argument type. -
    • + ForwardRange's value + type is convertible to BinaryPredicate's + first argument type and to BinaryPredicate's + second argument type. +
    - + Complexity

    @@ -162,7 +162,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 b44a77f..ec72416 100644 --- a/doc/html/range/reference/algorithms/non_mutating/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -2,8 +2,8 @@ binary_search - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -68,50 +68,50 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -Value is a model of - the LessThanComparableConcept. -
    • + Value is a model + of the LessThanComparableConcept. +
    • - The ordering of objects of type Value - is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type Value + is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +

    For the predicate versions of binary_search:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +
    • -ForwardRange's value - type is convertible to BinaryPredicate's - argument type. -
    • + ForwardRange's value + type is convertible to BinaryPredicate's + argument type. +
    - + Precondition:

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

    - + Complexity

    @@ -151,7 +151,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/count.html b/doc/html/range/reference/algorithms/non_mutating/count.html index 8c23e6a..d4bc82f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count.html +++ b/doc/html/range/reference/algorithms/non_mutating/count.html @@ -2,8 +2,8 @@ count - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -54,37 +54,37 @@ is true.

    - + Definition

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

    - + Requirements
    • -SinglePassRange is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange is + a model of the Single + Pass Range Concept. +
    • -Value is a model of - the EqualityComparableConcept. -
    • + Value is a model + of the EqualityComparableConcept. +
    • -SinglePassRange's value - type is a model of the EqualityComparableConcept. -
    • + SinglePassRange's + value type is a model of the EqualityComparableConcept. +
    • - An object of SinglePassRange's - value type can be compared for equality with an object of type Value. -
    • + An object of SinglePassRange's + value type can be compared for equality with an object of type Value. +
    - + Complexity

    @@ -101,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 index 3708ff7..dd40eb3 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -2,8 +2,8 @@ count_if - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -51,37 +51,37 @@ 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. -
    • + SinglePassRange is + a model of the Single + Pass Range Concept. +
    • -UnaryPredicate is a - model of the UnaryPredicateConcept. -
    • + UnaryPredicate is + a model of the UnaryPredicateConcept. +
    • -SinglePassRange's value - type is a model of the EqualityComparableConcept. -
    • + SinglePassRange's + value type is a model of the EqualityComparableConcept. +
    • - The value type of SinglePassRange - is convertible to the argument type of UnaryPredicate. -
    • + The value type of SinglePassRange + is convertible to the argument type of UnaryPredicate. +
    - + Complexity

    @@ -98,7 +98,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index 8909fbd..9eada88 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal.html @@ -2,8 +2,8 @@ equal - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -85,60 +85,60 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange1's - value type is a model of the EqualityComparableConcept. -
    • + SinglePassRange1's + value type is a model of the EqualityComparableConcept. +
    • -SinglePassRange2's - value type is a model of the EqualityComparableConcept. -
    • + SinglePassRange2's + value type is a model of the EqualityComparableConcept. +
    • -SinglePassRange1's - value type can be compared for equality with SinglePassRange2's - value type. -
    • + SinglePassRange1's + value type can be compared for equality with SinglePassRange2's + value type. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument type. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument type. +
    - + Complexity

    @@ -156,7 +156,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 247e97a..a4ecd23 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -2,8 +2,8 @@ equal_range - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -100,50 +100,50 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -Value is a model of - the LessThanComparableConcept. -
    • + Value is a model + of the LessThanComparableConcept. +
    • - The ordering of objects of type Value - is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type Value + is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +

    For the predicate versions:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -SortPredicate is a - model of the StrictWeakOrderingConcept. -
    • + SortPredicate is + a model of the StrictWeakOrderingConcept. +
    • -ForwardRange's value - type is the same as Value. -
    • + ForwardRange's value + type is the same as Value. +
    • -ForwardRange's value - type is convertible to both of SortPredicate's - argument types. -
    • + ForwardRange's value + type is convertible to both of SortPredicate's + argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -173,7 +173,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/find.html b/doc/html/range/reference/algorithms/non_mutating/find.html index f67262b..b30680d 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find.html +++ b/doc/html/range/reference/algorithms/non_mutating/find.html @@ -2,8 +2,8 @@ find - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -59,35 +59,35 @@ same manner as the returned iterator described above.

    - + Definition

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

    - + Requirements
    • -SinglePassRange is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange is + a model of the Single + Pass Range Concept. +
    • -Value is a model of - the EqualityComparableConcept. -
    • + Value is a model + of the EqualityComparableConcept. +
    • - The operator== - is defined for type Value - to be compared with the SinglePassRange's - value type. -
    • + The operator== + is defined for type Value + to be compared with the SinglePassRange's + value type. +
    - + Complexity

    @@ -104,7 +104,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 07b117b..15261d1 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -2,8 +2,8 @@ find_end - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -96,59 +96,59 @@

    • -ForwardRange1 is a - model of the Forward Range - Concept. -
    • + ForwardRange1 is + a model of the Forward + Range Concept. +
    • -ForwardRange2 is a - model of the Forward Range - Concept. -
    • + ForwardRange2 is + a model of the Forward + Range Concept. +
    • -ForwardRange1's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange1's value + type is a model of the EqualityComparableConcept. +
    • -ForwardRange2's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange2's value + type is a model of the EqualityComparableConcept. +
    • - Objects of ForwardRange1's - value type can be compared for equality with objects of ForwardRange2's value type. -
    • + Objects of ForwardRange1's + value type can be compared for equality with objects of ForwardRange2's value type. +

    For the predicate versions:

    • -ForwardRange1 is a - model of the Forward Range - Concept. -
    • + ForwardRange1 is + a model of the Forward + Range Concept. +
    • -ForwardRange2 is a - model of the Forward Range - Concept. -
    • + ForwardRange2 is + a model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange1's value - type is convertible to BinaryPredicate's - first argument type. -
    • + ForwardRange1's value + type is convertible to BinaryPredicate's + first argument type. +
    • -ForwardRange2's value - type is convertible to BinaryPredicate's - second argument type. -
    • + ForwardRange2's value + type is convertible to BinaryPredicate's + second argument type. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    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 aed4750..7257ae7 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 @@ -2,8 +2,8 @@ find_first_of - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -101,53 +101,53 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -ForwardRange2 is a - model of the Forward Range - Concept. -
    • + ForwardRange2 is + a model of the Forward + Range Concept. +
    • -SinglePassRange1's - value type is a model of the EqualityComparableConcept, - and can be compared for equality with ForwardRange2's - value type. -
    • + SinglePassRange1's + value type is a model of the EqualityComparableConcept, + and can be compared for equality with ForwardRange2's + value type. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -ForwardRange2 is a - model of the Forward Range - Concept. -
    • + ForwardRange2 is + a model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -ForwardRange2's value - type is convertible to BinaryPredicate's - second argument type. -
    • + ForwardRange2's value + type is convertible to BinaryPredicate's + second argument type. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    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 72637c9..373244e 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -2,8 +2,8 @@ find_if - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -64,33 +64,33 @@ 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
    • -SinglePassRange is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange is + a model of the Single + Pass Range Concept. +
    • -UnaryPredicate is a - model of the PredicateConcept. -
    • + UnaryPredicate is + a model of the PredicateConcept. +
    • - The value type of SinglePassRange - is convertible to the argument type of UnaryPredicate. -
    • + The value type of SinglePassRange + is convertible to the argument type of UnaryPredicate. +
    - + Precondition:

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

    - + Complexity

    @@ -115,7 +115,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 55d70df..26eb2ad 100644 --- a/doc/html/range/reference/algorithms/non_mutating/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -2,8 +2,8 @@ for_each - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    • -SinglePassRange is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange is + a model of the Single + Pass Range Concept. +
    • -UnaryFunction is a - model of the UnaryFunctionConcept. -
    • + UnaryFunction is + a model of the UnaryFunctionConcept. +
    • -UnaryFunction does - not apply any non-constant operation through its argument. -
    • + UnaryFunction does + not apply any non-constant operation through its argument. +
    • -SinglePassRange's value - type is convertible to UnaryFunction's - argument type. -
    • + SinglePassRange's + value type is convertible to UnaryFunction's + argument type. +
    - + Complexity

    @@ -107,7 +107,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 f88b6ad..39cf94c 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -2,8 +2,8 @@ lexicographical_compare - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -88,64 +88,64 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange1's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange1's + value type is a model of the LessThanComparableConcept. +
    • -SinglePassRange2's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange2's + value type is a model of the LessThanComparableConcept. +
    • - Let x be an object - of SinglePassRange1's - value type. Let y be - an obect of SinglePassRange2's - value type. x < - y must be valid. y < - x must be valid. -
    • + Let x be an object + of SinglePassRange1's + value type. Let y + be an obect of SinglePassRange2's + value type. x < + y must be valid. y < + x must be valid. +

    For the predicate versions of lexicographical_compare:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument type. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument type. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    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 6c66a8e..722a850 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -2,8 +2,8 @@ lower_bound - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -87,50 +87,50 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -Value is a model of - the LessThanComparableConcept. -
    • + Value is a model + of the LessThanComparableConcept. +
    • - The ordering of objects of type Value - is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type Value + is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +

    For the predicate versions:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +
    • -ForwardRange's value - type is convertible to both of BinaryPredicate's - argument types. -
    • + ForwardRange's value + type is convertible to both of BinaryPredicate's + argument types. +
    - + Precondition:

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

    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    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 c547ba1..2f93781 100644 --- a/doc/html/range/reference/algorithms/non_mutating/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -2,8 +2,8 @@ max_element - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -113,36 +113,36 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange's value - type is a model of the LessThanComparableConcept. -
    • + ForwardRange's value + type is a model of the LessThanComparableConcept. +

    For the predicate versions:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange's value - type is convertible to both of BinaryPredicate's - argument types. -
    • + ForwardRange's value + type is convertible to both of BinaryPredicate's + argument types. +
    - + Complexity

    @@ -160,7 +160,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 d5c1a14..60790d8 100644 --- a/doc/html/range/reference/algorithms/non_mutating/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -2,8 +2,8 @@ min_element - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -113,36 +113,36 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange's value - type is a model of the LessThanComparableConcept. -
    • + ForwardRange's value + type is a model of the LessThanComparableConcept. +

    For the predicate versions:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange's value - type is convertible to both of BinaryPredicate's - argument types. -
    • + ForwardRange's value + type is convertible to both of BinaryPredicate's + argument types. +
    - + Complexity

    @@ -160,7 +160,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/mismatch.html b/doc/html/range/reference/algorithms/non_mutating/mismatch.html index bf1411d..a8fea19 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -2,8 +2,8 @@ mismatch - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -133,67 +133,67 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange1's - value type is a model of the EqualityComparableConcept. -
    • + SinglePassRange1's + value type is a model of the EqualityComparableConcept. +
    • -SinglePassRange2's - value type is a model of the EqualityComparableConcept. -
    • + SinglePassRange2's + value type is a model of the EqualityComparableConcept. +
    • -SinglePassRange1s value - type can be compared for equality with SinglePassRange2's - value type. -
    • + SinglePassRange1s + value type can be compared for equality with SinglePassRange2's + value type. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument type. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument type. +
    - + Precondition:

    distance(rng2) >= distance(rng1)

    - + Complexity

    @@ -210,7 +210,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/non_mutating/search.html b/doc/html/range/reference/algorithms/non_mutating/search.html index dc9f4cc..e7b9394 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -2,8 +2,8 @@ search - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -130,60 +130,60 @@

    • -ForwardRange1 is a - model of the Forward Range - Concept. -
    • + ForwardRange1 is + a model of the Forward + Range Concept. +
    • -ForwardRange2 is a - model of the Forward Range - Concept. -
    • + ForwardRange2 is + a model of the Forward + Range Concept. +
    • -ForwardRange1's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange1's value + type is a model of the EqualityComparableConcept. +
    • -ForwardRange2's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange2's value + type is a model of the EqualityComparableConcept. +
    • -ForwardRange1s value - type can be compared for equality with ForwardRange2's - value type. -
    • + ForwardRange1s value + type can be compared for equality with ForwardRange2's + value type. +

    For the predicate versions:

    • -ForwardRange1 is a - model of the Forward Range - Concept. -
    • + ForwardRange1 is + a model of the Forward + Range Concept. +
    • -ForwardRange2 is a - model of the Forward Range - Concept. -
    • + ForwardRange2 is + a model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange1's value - type is convertible to BinaryPredicate's - first argument type. -
    • + ForwardRange1's value + type is convertible to BinaryPredicate's + first argument type. +
    • -ForwardRange2's value - type is convertible to BinaryPredicate's - second argument type. -
    • + ForwardRange2's value + type is convertible to BinaryPredicate's + second argument type. +
    - + Complexity

    @@ -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 index e02cae1..78d4679 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search_n.html +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -2,8 +2,8 @@ search_n - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -79,53 +79,53 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -ForwardRange's value - type is a model of the EqualityComparableConcept. -
    • + ForwardRange's value + type is a model of the EqualityComparableConcept. +
    • -ForwardRanges value - type can be compared for equality with Value. -
    • + ForwardRanges value + type can be compared for equality with Value. +
    • -Integer is a model - of the IntegerConcept. -
    • + Integer is a model + of the IntegerConcept. +

    For the predicate versions:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the BinaryPredicateConcept. -
    • + BinaryPredicate is + a model of the BinaryPredicateConcept. +
    • -ForwardRange's value - type is convertible to BinaryPredicate's - first argument type. -
    • + ForwardRange's value + type is convertible to BinaryPredicate's + first argument type. +
    • -Value is convertible - to BinaryPredicate's - second argument type. -
    • + Value is convertible + to BinaryPredicate's + second argument type. +
    • -Integer is a model - of the IntegerConcept. -
    • + Integer is a model + of the IntegerConcept. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    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 7560152..2692fb0 100644 --- a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -2,8 +2,8 @@ upper_bound - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -86,50 +86,50 @@

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -Value is a model of - the LessThanComparableConcept. -
    • + Value is a model + of the LessThanComparableConcept. +
    • - The ordering of objects of type Value - is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type Value + is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +

    For the predicate versions:

    • -ForwardRange is a model - of the Forward Range - Concept. -
    • + ForwardRange is a + model of the Forward + Range Concept. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -ForwardRange's value - type is the same type as Value. -
    • + ForwardRange's value + type is the same type as Value. +
    • -ForwardRange's value - type is convertible to both of BinaryPredicate's - argument types. -
    • + ForwardRange's value + type is convertible to both of BinaryPredicate's + argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -167,7 +167,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/numeric.html b/doc/html/range/reference/algorithms/numeric.html index 90818fa..99b3631 100644 --- a/doc/html/range/reference/algorithms/numeric.html +++ b/doc/html/range/reference/algorithms/numeric.html @@ -2,8 +2,8 @@ Numeric algorithms - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -46,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/numeric/accumulate.html b/doc/html/range/reference/algorithms/numeric/accumulate.html index 4081a11..1c15714 100644 --- a/doc/html/range/reference/algorithms/numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/numeric/accumulate.html @@ -2,8 +2,8 @@ accumulate - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

    @@ -52,7 +52,7 @@

    - + Description

    @@ -63,77 +63,77 @@ 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
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -Value is a model of - the AssignableConcept. -
    4. + Value is a model + of the AssignableConcept. +
    5. - An operator+ - is defined for a left-hand operand of type Value - and a right-hand operance of the SinglePassRange - value type. -
    6. + An operator+ + is defined for a left-hand operand of type Value + and a right-hand operance of the SinglePassRange + value type. +
    7. - The return type of the above operator is convertible to Value. -
    8. + The return type of the above operator is convertible to Value. +
    - + For the second version
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -Value is a model of - the AssignableConcept. -
    4. + Value is a model + of the AssignableConcept. +
    5. -BinaryOperation is - a model of the BinaryFunctionConcept. -
    6. + BinaryOperation is + a model of the BinaryFunctionConcept. +
    7. -Value is convertible - to BinaryOperation's - first argument type. -
    8. + Value is convertible + to BinaryOperation's + first argument type. +
    9. -SinglePassRange's value - type is convertible to BinaryOperation's - second argument type. -
    10. + SinglePassRange's + value type is convertible to BinaryOperation's + second argument type. +
    11. - The return type of BinaryOperation - is convertible to Value. -
    12. + The return type of BinaryOperation + is convertible to Value. +
    - + Complexity

    @@ -150,7 +150,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html index d6f0d27..e39fd10 100644 --- a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -2,8 +2,8 @@ adjacent_difference - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -OutputIterator is a - model of the OutputIteratorConcept. -
    4. + OutputIterator is + a model of the OutputIteratorConcept. +
    5. - If x and y are objects of SinglePassRange's - value type, then x - y - is defined. -
    6. + If x and y are objects of SinglePassRange's value type, then + x - + y is defined. +
    7. - The value type of SinglePassRange - is convertible to a type in OutputIterator's - set of value types. -
    8. + The value type of SinglePassRange + is convertible to a type in OutputIterator's + set of value types. +
    9. - The return type of x - y - is convertible to a type in OutputIterator's - set of value types. -
    10. + The return type of x - y + is convertible to a type in OutputIterator's + set of value types. +
    - + For the second version
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -OutputIterator is a - model of the OutputIteratorConcept. -
    4. + OutputIterator is + a model of the OutputIteratorConcept. +
    5. -BinaryOperation is - a model of the BinaryFunctionConcept. -
    6. + BinaryOperation is + a model of the BinaryFunctionConcept. +
    7. - The value type of SinglePassRange - is convertible to BinaryOperation's - first and second argument types. -
    8. + The value type of SinglePassRange + is convertible to BinaryOperation's + first and second argument types. +
    9. - The value type of SinglePassRange - is convertible to a type in OutputIterator's - set of value types. -
    10. + The value type of SinglePassRange + is convertible to a type in OutputIterator's + set of value types. +
    11. - The result type of BinaryOperation - is convertible to a type in OutputIterator's - set of value types. -
    12. + The result type of BinaryOperation + is convertible to a type in OutputIterator's + set of value types. +
    - + Precondition:

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

    - + Complexity

    @@ -173,7 +173,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/numeric/inner_product.html b/doc/html/range/reference/algorithms/numeric/inner_product.html index 0146bf4..40cbb6c 100644 --- a/doc/html/range/reference/algorithms/numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -2,8 +2,8 @@ inner_product - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    1. -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    3. -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    4. + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    5. -Value is a model of - the AssignableConcept. -
    6. + Value is a model + of the AssignableConcept. +
    7. - If x is an object of - type Value, y is an object of SinglePassRange1's - value type, and z is - an object of SinglePassRange2's - value type, then x + y * z - is defined. -
    8. + If x is an object + of type Value, y is an object of SinglePassRange1's value type, + and z is an object + of SinglePassRange2's + value type, then x + y * z + is defined. +
    9. - The result type of the expression x - + y - * z - is convertible to Value. -
    10. + The result type of the expression x + + y + * z + is convertible to Value. +
    - + For the second version
    1. -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    3. -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    4. + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    5. -Value is a model of - the AssignableConcept. -
    6. + Value is a model + of the AssignableConcept. +
    7. -BinaryOperation1 is - a model of the BinaryFunctionConcept. -
    8. + BinaryOperation1 + is a model of the BinaryFunctionConcept. +
    9. -BinaryOperation2 is - a model of the BinaryFunctionConcept. -
    10. + BinaryOperation2 + is a model of the BinaryFunctionConcept. +
    11. - The value type of SinglePassRange1 - is convertible to the first argument type of BinaryOperation2. -
    12. + The value type of SinglePassRange1 + is convertible to the first argument type of BinaryOperation2. +
    13. - The value type of SinglePassRange2 - is convertible to the second argument type of BinaryOperation2. -
    14. + The value type of SinglePassRange2 + is convertible to the second argument type of BinaryOperation2. +
    15. -Value is convertible - to the value type of BinaryOperation1. -
    16. + Value is convertible + to the value type of BinaryOperation1. +
    17. - The return type of BinaryOperation2 - is convertible to the second argument type of BinaryOperation1. -
    18. + The return type of BinaryOperation2 + is convertible to the second argument type of BinaryOperation1. +
    19. - The return type of BinaryOperation1 - is convertible to Value. -
    20. + The return type of BinaryOperation1 + is convertible to Value. +
    - + Precondition:

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

    - + Complexity

    @@ -186,7 +186,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/numeric/partial_sum.html b/doc/html/range/reference/algorithms/numeric/partial_sum.html index 3a96abc..0eb6cf3 100644 --- a/doc/html/range/reference/algorithms/numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -2,8 +2,8 @@ partial_sum - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -58,77 +58,77 @@ 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
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -OutputIterator is a - model of the OutputIteratorConcept. -
    4. + OutputIterator is + a model of the OutputIteratorConcept. +
    5. - If x and y are objects of SinglePassRange's - value type, then x + y - is defined. -
    6. + If x and y are objects of SinglePassRange's value type, then + x + + y is defined. +
    7. - The return type of x + y - is convertible to the value type of SinglePassRange. -
    8. + The return type of x + y + is convertible to the value type of SinglePassRange. +
    9. - The value type of SinglePassRange - is convertible to a type in OutputIterator's - set of value types. -
    10. + The value type of SinglePassRange + is convertible to a type in OutputIterator's + set of value types. +
    - + For the second version
    1. -SinglePassRange is - a model of the Single - Pass Range Concept. -
    2. + SinglePassRange is + a model of the Single + Pass Range Concept. +
    3. -OutputIterator is a - model of the OutputIteratorConcept. -
    4. + OutputIterator is + a model of the OutputIteratorConcept. +
    5. -BinaryOperation is - a model of the BinaryFunctionConcept. -
    6. + BinaryOperation is + a model of the BinaryFunctionConcept. +
    7. - The result type of BinaryOperation - is convertible to the value type of SinglePassRange. -
    8. + The result type of BinaryOperation + is convertible to the value type of SinglePassRange. +
    9. - The value type of SinglePassRange - is convertible to a type in OutputIterator's - set of value types. -
    10. + The value type of SinglePassRange + is convertible to a type in OutputIterator's + set of value types. +
    - + Precondition:

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

    - + Complexity

    @@ -155,7 +155,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/permutation.html b/doc/html/range/reference/algorithms/permutation.html index c859468..cf2da0e 100644 --- a/doc/html/range/reference/algorithms/permutation.html +++ b/doc/html/range/reference/algorithms/permutation.html @@ -2,8 +2,8 @@ Permutation algorithms - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Permutation algorithms @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/permutation/next_permutation.html b/doc/html/range/reference/algorithms/permutation/next_permutation.html index 5a429e5..f3dd33f 100644 --- a/doc/html/range/reference/algorithms/permutation/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -2,8 +2,8 @@ next_permutation - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -82,50 +82,50 @@

    • -BidirectionalRange - is a model of the Bidirectional - Range Concept. -
    • + BidirectionalRange + is a model of the Bidirectional + Range Concept. +
    • -BidirectionalRange - is mutable. -
    • + BidirectionalRange + is mutable. +
    • -BidirectionalRange's - value type is a model of the LessThanComparableConcept. -
    • + BidirectionalRange's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type BidirectionalRange's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type BidirectionalRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -BidirectionalRange - is a model of the Bidirectional - Range Concept. -
    • + BidirectionalRange + is a model of the Bidirectional + Range Concept. +
    • -BidirectionalRange - is mutable. -
    • + BidirectionalRange + is mutable. +
    • -Compare is a model - of the StrictWeakOrderingConcept. -
    • + Compare is a model + of the StrictWeakOrderingConcept. +
    • -BidirectionalRange's - value type is convertible to both of Compare's - argument types. -
    • + BidirectionalRange's + value type is convertible to both of Compare's + argument types. +
    - + Complexity

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


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/permutation/prev_permutation.html b/doc/html/range/reference/algorithms/permutation/prev_permutation.html index a841cb7..81ae7d6 100644 --- a/doc/html/range/reference/algorithms/permutation/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -2,8 +2,8 @@ prev_permutation - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -82,50 +82,50 @@

    • -BidirectionalRange - is a model of the Bidirectional - Range Concept. -
    • + BidirectionalRange + is a model of the Bidirectional + Range Concept. +
    • -BidirectionalRange - is mutable. -
    • + BidirectionalRange + is mutable. +
    • -BidirectionalRange's - value type is a model of the LessThanComparableConcept. -
    • + BidirectionalRange's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type BidirectionalRange's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type BidirectionalRange's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -BidirectionalRange - is a model of the Bidirectional - Range Concept. -
    • + BidirectionalRange + is a model of the Bidirectional + Range Concept. +
    • -BidirectionalRange - is mutable. -
    • + BidirectionalRange + is mutable. +
    • -Compare is a model - of the StrictWeakOrderingConcept. -
    • + Compare is a model + of the StrictWeakOrderingConcept. +
    • -BidirectionalRange's - value type is convertible to both of Compare's - argument types. -
    • + BidirectionalRange's + value type is convertible to both of Compare's + argument types. +
    - + Complexity

    @@ -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 index 20e6bad..36667b3 100644 --- a/doc/html/range/reference/algorithms/range_algorithm_introduction.html +++ b/doc/html/range/reference/algorithms/range_algorithm_introduction.html @@ -2,8 +2,8 @@ Introduction and motivation - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Introduction and motivation @@ -189,15 +189,15 @@

    1. - it allows for seamless functional-style - programming where you do not need to use named - local variables to store intermediate results -
    2. + it allows for seamless functional-style + programming where you do not need to use named + local variables to store intermediate results +
    3. - it is very safe - because the algorithm can verify out-of-bounds conditions and handle - tricky conditions that lead to empty ranges -
    4. + it is very safe + because the algorithm can verify out-of-bounds conditions and handle + tricky conditions that lead to empty ranges +

    For example, consider how easy we may erase the duplicates in a sorted @@ -251,7 +251,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set.html b/doc/html/range/reference/algorithms/set.html index 7de08c4..2e0ae8b 100644 --- a/doc/html/range/reference/algorithms/set.html +++ b/doc/html/range/reference/algorithms/set.html @@ -2,8 +2,8 @@ Set algorithms - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -46,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index 15f655f..56c698d 100644 --- a/doc/html/range/reference/algorithms/set/includes.html +++ b/doc/html/range/reference/algorithms/set/includes.html @@ -2,8 +2,8 @@ includes - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -74,77 +74,77 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -SinglePassRange1's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange1's + value type is a model of the LessThanComparableConcept. +
    • -SinglePassRange2's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange2's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type SinglePassRange1's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange1's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • - The ordering of objects of type SinglePassRange2's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange2's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument types. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -180,7 +180,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set/set_difference.html b/doc/html/range/reference/algorithms/set/set_difference.html index ecfcc65..84166b8 100644 --- a/doc/html/range/reference/algorithms/set/set_difference.html +++ b/doc/html/range/reference/algorithms/set/set_difference.html @@ -2,8 +2,8 @@ set_difference - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -85,85 +85,85 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -SinglePassRange1's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange1's + value type is a model of the LessThanComparableConcept. +
    • -SinglePassRange2's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange2's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type SinglePassRange1's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange1's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • - The ordering of objects of type SinglePassRange2's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange2's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument types. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -199,7 +199,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set/set_intersection.html b/doc/html/range/reference/algorithms/set/set_intersection.html index fba3e22..6beecae 100644 --- a/doc/html/range/reference/algorithms/set/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -2,8 +2,8 @@ set_intersection - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -86,85 +86,85 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -SinglePassRange1's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange1's + value type is a model of the LessThanComparableConcept. +
    • -SinglePassRange2's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange2's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type SinglePassRange1's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange1's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • - The ordering of objects of type SinglePassRange2's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange2's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument types. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -200,7 +200,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    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 5490888..d7b1c14 100644 --- a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -2,8 +2,8 @@ set_symmetric_difference - - + + @@ -13,22 +13,22 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -90,85 +90,85 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -SinglePassRange1's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange1's + value type is a model of the LessThanComparableConcept. +
    • -SinglePassRange2's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange2's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type SinglePassRange1's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange1's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • - The ordering of objects of type SinglePassRange2's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange2's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument types. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -204,7 +204,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/algorithms/set/set_union.html b/doc/html/range/reference/algorithms/set/set_union.html index 94f3cd0..bbd0e98 100644 --- a/doc/html/range/reference/algorithms/set/set_union.html +++ b/doc/html/range/reference/algorithms/set/set_union.html @@ -2,8 +2,8 @@ set_union - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + 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

    @@ -84,85 +84,85 @@

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -SinglePassRange1's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange1's + value type is a model of the LessThanComparableConcept. +
    • -SinglePassRange2's - value type is a model of the LessThanComparableConcept. -
    • + SinglePassRange2's + value type is a model of the LessThanComparableConcept. +
    • - The ordering of objects of type SinglePassRange1's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange1's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +
    • - The ordering of objects of type SinglePassRange2's - value type is a strict weak ordering, - as defined in the LessThanComparableConcept - requirements. -
    • + The ordering of objects of type SinglePassRange2's + value type is a strict weak ordering, + as defined in the LessThanComparableConcept + requirements. +

    For the predicate versions:

    • -SinglePassRange1 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange1 + is a model of the Single + Pass Range Concept. +
    • -SinglePassRange2 is - a model of the Single - Pass Range Concept. -
    • + SinglePassRange2 + is a model of the Single + Pass Range Concept. +
    • -OutputIterator is a - model of the OutputIteratorConcept. -
    • + OutputIterator is + a model of the OutputIteratorConcept. +
    • -SinglePassRange1 and - SinglePassRange2 have - the same value type. -
    • + SinglePassRange1 + and SinglePassRange2 + have the same value type. +
    • -BinaryPredicate is - a model of the StrictWeakOrderingConcept. -
    • + BinaryPredicate is + a model of the StrictWeakOrderingConcept. +
    • -SinglePassRange1's - value type is convertible to BinaryPredicate's - first argument type. -
    • + SinglePassRange1's + value type is convertible to BinaryPredicate's + first argument type. +
    • -SinglePassRange2's - value type is convertible to BinaryPredicate's - second argument types. -
    • + SinglePassRange2's + value type is convertible to BinaryPredicate's + second argument types. +
    - + Precondition:

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

    - + Complexity

    @@ -198,7 +198,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/concept_implementation.html b/doc/html/range/reference/concept_implementation.html index 0d150f3..f2c4792 100644 --- a/doc/html/range/reference/concept_implementation.html +++ b/doc/html/range/reference/concept_implementation.html @@ -2,8 +2,8 @@ Range concept implementation - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Range concept implementation @@ -42,7 +42,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/concept_implementation/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 15c6e46..9593b74 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -2,8 +2,8 @@ Semantics - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -31,7 +31,7 @@
    Functions
    - + notation
    @@ -157,7 +157,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/concept_implementation/semantics/functions.html b/doc/html/range/reference/concept_implementation/semantics/functions.html index 0c0ef81..895d32d 100644 --- a/doc/html/range/reference/concept_implementation/semantics/functions.html +++ b/doc/html/range/reference/concept_implementation/semantics/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -402,7 +402,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/concept_implementation/semantics/metafunctions.html b/doc/html/range/reference/concept_implementation/semantics/metafunctions.html index 779a3b7..1a03534 100644 --- a/doc/html/range/reference/concept_implementation/semantics/metafunctions.html +++ b/doc/html/range/reference/concept_implementation/semantics/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -230,7 +230,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/concept_implementation/synopsis.html b/doc/html/range/reference/concept_implementation/synopsis.html index 9dffad1..9fdbc91 100644 --- a/doc/html/range/reference/concept_implementation/synopsis.html +++ b/doc/html/range/reference/concept_implementation/synopsis.html @@ -2,8 +2,8 @@ Synopsis - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -179,7 +179,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index a9d7524..8ca7be8 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -2,8 +2,8 @@ Extending the library - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -45,7 +45,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/extending/method_1.html b/doc/html/range/reference/extending/method_1.html index 632687b..910d2de 100644 --- a/doc/html/range/reference/extending/method_1.html +++ b/doc/html/range/reference/extending/method_1.html @@ -2,8 +2,8 @@ Method 1: provide member functions and nested types - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Method 1: provide member functions and nested types @@ -155,7 +155,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/extending/method_2.html b/doc/html/range/reference/extending/method_2.html index f4f3524..3828c8b 100644 --- a/doc/html/range/reference/extending/method_2.html +++ b/doc/html/range/reference/extending/method_2.html @@ -2,8 +2,8 @@ Method 2: provide free-standing functions and specialize metafunctions - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Method 2: provide free-standing functions and specialize metafunctions @@ -261,7 +261,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/extending/method_3.html b/doc/html/range/reference/extending/method_3.html index f841237..2ec9d4d 100644 --- a/doc/html/range/reference/extending/method_3.html +++ b/doc/html/range/reference/extending/method_3.html @@ -2,8 +2,8 @@ Method 3: provide range adaptor implementations - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +

    Method 3: provide range adaptor implementations @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    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..3c038e6 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 @@ -2,8 +2,8 @@ Method 3.1: Implement a Range Adaptor without arguments - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    Method 3.1: Implement a Range Adaptor without arguments @@ -33,7 +33,7 @@

    1. - Provide a range for your return type, for example: + Provide a range for your return type, for example:
      #include <boost/range/iterator_range.hpp>
       #include <boost/iterator/reverse_iterator.hpp>
       
      @@ -57,17 +57,19 @@
           { }
       };
       
      -
    2. +
    3. - Provide a tag to uniquely identify your adaptor in the operator| - function overload set + Provide a tag to uniquely identify your adaptor in the operator| + function overload set
      namespace detail {
           struct reverse_forwarder {};
       }
       
      -
    4. +
    5. - Implement operator|
      template< class BidirectionalRng >
      +                Implement operator|
      +                
      +
      template< class BidirectionalRng >
       inline reverse_range<BidirectionalRng>
       operator|( BidirectionalRng& r, detail::reverse_forwarder )
       {
      @@ -81,7 +83,7 @@
       	return reverse_range<const BidirectionalRng>( r );
       }
       
      -
    6. +
    @@ -94,7 +96,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 2a0be9d..1f2102d 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 @@ -2,8 +2,8 @@ Method 3.2: Implement a Range Adaptor with arguments - - + + @@ -13,23 +13,23 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    1. - Provide a range for your return type, for example: + Provide a range for your return type, for example:
      #include <boost/range/adaptor/argument_fwd.hpp>
       #include <boost/range/iterator_range.hpp>
       #include <boost/iterator/transform_iterator.hpp>
      @@ -77,11 +77,11 @@
            }
        };
       
      -
    2. +
    3. - Implement a holder class to hold the arguments required to construct - the RangeAdaptor. -
    4. + Implement a holder class to hold the arguments required to construct + the RangeAdaptor. +

    The holder combines multiple parameters into one that can be passed as @@ -104,8 +104,8 @@

    1. - Define an instance of the holder with the name of the adaptor -
    + Define an instance of the holder with the name of the adaptor +

    @@ -115,8 +115,8 @@

    1. - Define operator| -
    + Define operator| +

    @@ -149,7 +149,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/overview.html b/doc/html/range/reference/overview.html index 9738793..0005ece 100644 --- a/doc/html/range/reference/overview.html +++ b/doc/html/range/reference/overview.html @@ -2,8 +2,8 @@ Overview - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -31,12 +31,14 @@

    • - standard-like containers -
    • -
    • std::pair<iterator,iterator>
    • + standard-like containers +
    • - built-in arrays -
    • + std::pair<iterator,iterator> + +
    • + built-in arrays +

    Even though the behavior of the primary templates are exactly such that standard @@ -62,7 +64,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index d1d6017..6f8c5af 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -2,8 +2,8 @@ Provided Ranges - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -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 53da5b8..76be953 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -2,8 +2,8 @@ counting_range - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

    Defined in header file boost/range/counting_range.hpp

    - + Requirements
    1. -Incrementable is a model - of the Incrementable - Concept. -
    + Incrementable is a + model of the Incrementable + Concept. +
    @@ -84,7 +84,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/ranges/irange.html b/doc/html/range/reference/ranges/irange.html index 1a7c730..1ada3ba 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -2,8 +2,8 @@ irange - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

    @@ -58,28 +58,29 @@ 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. + Integer is a model + of the Integer Concept. +
    3. -StepSize is a model of - the SignedInteger Concept. -
    4. + StepSize is a model + of the SignedInteger + Concept. +
    - + Complexity

    @@ -97,7 +98,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index f017f57..449fa5d 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -2,8 +2,8 @@ istream_range - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    - + Prototype

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

    - + Description

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

    - + Definition

    @@ -66,7 +66,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/utilities.html b/doc/html/range/reference/utilities.html index f2f39b2..45e60d3 100644 --- a/doc/html/range/reference/utilities.html +++ b/doc/html/range/reference/utilities.html @@ -2,8 +2,8 @@ Utilities - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -41,14 +41,14 @@

    • - Class iterator_range -
    • + Class iterator_range +
    • - Class sub_range -
    • + Class sub_range +
    • - Function join -
    • + Function join +

    The iterator_range class @@ -77,7 +77,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index ade0bc0..512fbd6 100644 --- a/doc/html/range/reference/utilities/iterator_range.html +++ b/doc/html/range/reference/utilities/iterator_range.html @@ -2,8 +2,8 @@ Class iterator_range - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -48,7 +48,7 @@ type.

    - + Synopsis

    @@ -188,39 +188,26 @@ iterators from the same container.

    - + Details member functions

    operator unspecified_bool_type() const;

    -
    -

    -

    -

    - Returns !empty(); -

    -

    -

    -
    +

    + Returns !empty(); +

    bool equal( iterator_range& r ) const;

    -
    -

    -

    -

    - Returns begin() - == r.begin() && - end() - == r.end(); -

    -

    -

    -
    +

    + Returns begin() == r.begin() && + end() + == r.end(); +

    - + Details functions
    @@ -229,45 +216,27 @@ l, const ForwardRange2& r );

    -
    -

    -

    -

    - Returns size(l) != size(r) ? false : std::equal( - begin(l), end(l), begin(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 ); -

    -

    -

    -
    +

    + Returns !( l == r ); +

    bool operator<( const ForwardRange1& l, const ForwardRange2& r );

    -
    -

    -

    -

    - Returns std::lexicographical_compare( - begin(l), end(l), begin(r), end(r) ); -

    -

    -

    -
    +

    + Returns std::lexicographical_compare( + begin(l), end(l), begin(r), end(r) ); +

    @@ -277,15 +246,9 @@

    -
    -

    -

    -

    - Effects: -

    -

    -

    -
    +

    + Effects: +

    @@ -301,16 +264,10 @@ Sequence copy_range( const ForwardRange& r );

    -
    -

    -

    -

    - Returns Sequence( - begin(r), end(r) ); -

    -

    -

    -
    +

    + Returns Sequence( + begin(r), end(r) ); +

    @@ -322,7 +279,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index d3c70ab..a0706c9 100644 --- a/doc/html/range/reference/utilities/join.html +++ b/doc/html/range/reference/utilities/join.html @@ -2,8 +2,8 @@ Function join - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -39,7 +39,7 @@ check if the end of a range has been reached internally during traversal.

    - + Synposis

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

    - + Example

    @@ -83,7 +83,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/reference/utilities/sub_range.html b/doc/html/range/reference/utilities/sub_range.html index 5fab009..0eb2588 100644 --- a/doc/html/range/reference/utilities/sub_range.html +++ b/doc/html/range/reference/utilities/sub_range.html @@ -2,8 +2,8 @@ Class sub_range - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -35,7 +35,7 @@ is.

    - + Synopsis

    @@ -117,7 +117,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index c9f3e34..c5e6877 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -2,8 +2,8 @@ Terminology and style guidelines - - + + @@ -13,16 +13,16 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    -
    +
    @@ -39,31 +39,41 @@

    • -Value access category: -
        + Value access category: +
        • - Readable Range -
        • + Readable Range +
        • - Writeable Range -
        • + Writeable Range +
        • - Swappable Range -
        • + Swappable Range +
        • - Lvalue Range -
        • + Lvalue Range +
        - +
      • -Traversal category: -

        Notice how we have used the categories from the new @@ -77,11 +87,11 @@

        • - Random Access Readable Writeable Range -
        • + Random Access Readable Writeable Range +
        • - Forward Lvalue Range -
        • + Forward Lvalue Range +

        By convention, we should always specify the traversal @@ -135,7 +145,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/upgrade.html b/doc/html/range/upgrade.html index ad53c37..2e6a068 100644 --- a/doc/html/range/upgrade.html +++ b/doc/html/range/upgrade.html @@ -2,8 +2,8 @@ Upgrade version of Boost.Range - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +
        @@ -43,7 +43,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/upgrade/upgrade_from_1_34.html b/doc/html/range/upgrade/upgrade_from_1_34.html index 1275e9c..bc22cb6 100644 --- a/doc/html/range/upgrade/upgrade_from_1_34.html +++ b/doc/html/range/upgrade/upgrade_from_1_34.html @@ -2,8 +2,8 @@ Upgrade from version 1.34 - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +

        Upgrade from version 1.34 @@ -32,32 +32,34 @@

        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(). -
        2. + 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(). +
        3. -size now requires a Random - Access Range. The old behavior is provided as distance(). -
        4. + size now requires a Random + Access Range. The old behavior is provided as distance(). +
        5. -range_size<T>::type has been completely removed in favor - of range_difference<T>::type -
        6. + range_size<T>::type has been completely removed in + favor of range_difference<T>::type +
        7. -boost_range_begin() - and boost_range_end() - have been renamed range_begin() and range_end() respectively. -
        8. + boost_range_begin() + and boost_range_end() + have been renamed range_begin() and range_end() respectively. +
        9. -range_result_iterator<T>::type and range_reverse_result_iterator<T>::type - have been renamed range_iterator<T>::type - and range_reverse_iterator<T>::type. -
        10. + range_result_iterator<T>::type + and range_reverse_result_iterator<T>::type + have been renamed range_iterator<T>::type + and range_reverse_iterator<T>::type. +
        11. - The procedure that makes a custom type work with the library has been greatly - simplified. See Extending the - library for UDTs for details. -
        12. + The procedure that makes a custom type work with the library has been + greatly simplified. See Extending + the library for UDTs for details. +

        @@ -70,7 +72,7 @@

        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/range/upgrade/upgrade_from_1_42.html b/doc/html/range/upgrade/upgrade_from_1_42.html index 3fbc2d2..3174dc1 100644 --- a/doc/html/range/upgrade/upgrade_from_1_42.html +++ b/doc/html/range/upgrade/upgrade_from_1_42.html @@ -2,8 +2,8 @@ Upgrade from version 1.42 - - + + @@ -13,16 +13,16 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        -
        +

        Upgrade from version 1.42 @@ -31,22 +31,26 @@ New features:

        Removed:

        1. -iterator_range no longer - has a is_singular member - function. The singularity restrictions have been removed from the iterator_range class since this added - restrictions to ranges of iterators whose default constructors were not - singular. Previously the is_singular - member function always returned false - in release build configurations, hence it is not anticipated that this - interface change will produce difficulty in upgrading. -
        + iterator_range no longer + has a is_singular member + function. The singularity restrictions have been removed from the iterator_range class since this added + restrictions to ranges of iterators whose default constructors were not + singular. Previously the is_singular + member function always returned false + in release build configurations, hence it is not anticipated that this + interface change will produce difficulty in upgrading. +

    @@ -58,7 +62,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/include/boost/range/algorithm/find.hpp b/include/boost/range/algorithm/find.hpp index cb40919..72c5cf1 100755 --- a/include/boost/range/algorithm/find.hpp +++ b/include/boost/range/algorithm/find.hpp @@ -27,7 +27,10 @@ namespace boost /// /// \pre SinglePassRange is a model of the SinglePassRangeConcept template< class SinglePassRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type find( SinglePassRange& rng, const Value& val ) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); @@ -47,7 +50,10 @@ find( const SinglePassRange& rng, const Value& val ) /// \overload template< range_return_value re, class SinglePassRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type find( SinglePassRange& rng, const Value& val ) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); diff --git a/include/boost/range/algorithm/find_end.hpp b/include/boost/range/algorithm/find_end.hpp index cd09525..757e999 100755 --- a/include/boost/range/algorithm/find_end.hpp +++ b/include/boost/range/algorithm/find_end.hpp @@ -29,7 +29,10 @@ namespace boost /// \pre ForwardRange2 is a model of the ForwardRangeConcept /// \pre BinaryPredicate is a model of the BinaryPredicateConcept template< class ForwardRange1, class ForwardRange2 > -inline BOOST_DEDUCED_TYPENAME range_iterator< ForwardRange1 >::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator< ForwardRange1 >::type +>::type find_end(ForwardRange1 & rng1, const ForwardRange2& rng2) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -53,7 +56,10 @@ find_end(const ForwardRange1 & rng1, const ForwardRange2& rng2) /// \overload template< class ForwardRange1, class ForwardRange2, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type find_end(ForwardRange1 & rng1, const ForwardRange2& rng2, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -77,7 +83,10 @@ find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate p /// \overload template< range_return_value re, class ForwardRange1, class ForwardRange2 > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -106,7 +115,10 @@ find_end(const ForwardRange1& rng1, const ForwardRange2& rng2) /// \overload template< range_return_value re, class ForwardRange1, class ForwardRange2, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); diff --git a/include/boost/range/algorithm/find_first_of.hpp b/include/boost/range/algorithm/find_first_of.hpp index 37e58eb..4cb5989 100755 --- a/include/boost/range/algorithm/find_first_of.hpp +++ b/include/boost/range/algorithm/find_first_of.hpp @@ -29,7 +29,10 @@ namespace boost /// \pre ForwardRange2 is a model of the ForwardRangeConcept /// \pre BinaryPredicate is a model of the BinaryPredicateConcept template< class SinglePassRange1, class ForwardRange2 > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); @@ -53,7 +56,10 @@ find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2) /// \overload template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2, BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); @@ -78,7 +84,10 @@ find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPre // range return overloads /// \overload template< range_return_value re, class SinglePassRange1, class ForwardRange2 > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); @@ -107,7 +116,10 @@ find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2) /// \overload template< range_return_value re, class SinglePassRange1, class ForwardRange2, class BinaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type find_first_of(SinglePassRange1 & rng1, const ForwardRange2& rng2, BinaryPredicate pred) { diff --git a/include/boost/range/algorithm/find_if.hpp b/include/boost/range/algorithm/find_if.hpp index ba86c62..2d1926d 100755 --- a/include/boost/range/algorithm/find_if.hpp +++ b/include/boost/range/algorithm/find_if.hpp @@ -28,7 +28,10 @@ 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 range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type find_if( SinglePassRange& rng, UnaryPredicate pred ) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); @@ -48,7 +51,10 @@ find_if( const SinglePassRange& rng, UnaryPredicate pred ) /// \overload template< range_return_value re, class SinglePassRange, class UnaryPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type find_if( SinglePassRange& rng, UnaryPredicate pred ) { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); diff --git a/include/boost/range/algorithm/lower_bound.hpp b/include/boost/range/algorithm/lower_bound.hpp index 402e3c7..cb5e639 100755 --- a/include/boost/range/algorithm/lower_bound.hpp +++ b/include/boost/range/algorithm/lower_bound.hpp @@ -27,7 +27,10 @@ namespace boost /// /// \pre ForwardRange is a model of the ForwardRangeConcept template< class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type lower_bound( ForwardRange& rng, Value val ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -45,7 +48,10 @@ lower_bound( const ForwardRange& rng, Value val ) /// \overload template< class ForwardRange, class Value, class SortPredicate > -inline BOOST_DEDUCED_TYPENAME range_iterator::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_iterator::type +>::type lower_bound( ForwardRange& rng, Value val, SortPredicate pred ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -63,7 +69,10 @@ lower_bound( const ForwardRange& rng, Value val, SortPredicate pred ) /// \overload template< range_return_value re, class ForwardRange, class Value > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type lower_bound( ForwardRange& rng, Value val ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); @@ -85,7 +94,10 @@ lower_bound( const ForwardRange& rng, Value val ) /// \overload template< range_return_value re, class ForwardRange, class Value, class SortPredicate > -inline BOOST_DEDUCED_TYPENAME range_return::type +inline BOOST_DEDUCED_TYPENAME disable_if< + is_const, + BOOST_DEDUCED_TYPENAME range_return::type +>::type lower_bound( ForwardRange& rng, Value val, SortPredicate pred ) { BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept )); From 109bf204846b7ec6a72e7821d15a1a391202c0e6 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Tue, 13 Jul 2010 22:28:37 +0000 Subject: [PATCH 16/32] [range] - corrected defected test for the partition algorithm. [SVN r64001] --- test/algorithm_test/partition.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/test/algorithm_test/partition.cpp b/test/algorithm_test/partition.cpp index fe136e0..b91f244 100644 --- a/test/algorithm_test/partition.cpp +++ b/test/algorithm_test/partition.cpp @@ -42,19 +42,19 @@ namespace boost test_iter(Container& cont) { typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; - + const Container old_cont(cont); Container cont2(old_cont); iter_t result = boost::partition(cont, UnaryPredicate()); - + iter_t temp_result = boost::partition(cont2, UnaryPredicate()); cont2 = old_cont; BOOST_CHECK( temp_result == boost::partition( boost::make_iterator_range(cont2), UnaryPredicate()) ); - + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), cont2.begin(), cont2.end() ); - + return result; } @@ -68,20 +68,19 @@ namespace boost operator()(Policy& policy, Container& cont) { typedef BOOST_DEDUCED_TYPENAME range_return::type result_t; - + const Container old_cont(cont); Container cont2(old_cont); result_t result = boost::partition(cont, policy.pred()); - - result_t temp_result = boost::partition( - cont2, policy.pred()); - cont2 = old_cont; - BOOST_CHECK( temp_result == boost::partition( - boost::make_iterator_range(cont2), policy.pred()) ); - + + // Test that operation a temporary created by using + // make_iterator_range. + boost::partition( + boost::make_iterator_range(cont2), policy.pred()); + BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), cont2.begin(), cont2.end() ); - + return result; } }; From a06f11589f1838e20b68c66af64afeee082574a6 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Sat, 17 Jul 2010 12:25:57 +0000 Subject: [PATCH 17/32] Removed invalid comparison of invalidated iterators in the Boost.Range partition test case. [SVN r64088] --- test/algorithm_test/partition.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/algorithm_test/partition.cpp b/test/algorithm_test/partition.cpp index b91f244..0160dae 100644 --- a/test/algorithm_test/partition.cpp +++ b/test/algorithm_test/partition.cpp @@ -47,10 +47,10 @@ namespace boost Container cont2(old_cont); iter_t result = boost::partition(cont, UnaryPredicate()); - iter_t temp_result = boost::partition(cont2, UnaryPredicate()); + boost::partition(cont2, UnaryPredicate()); cont2 = old_cont; - BOOST_CHECK( temp_result == boost::partition( - boost::make_iterator_range(cont2), UnaryPredicate()) ); + boost::partition( + boost::make_iterator_range(cont2), UnaryPredicate()); BOOST_CHECK_EQUAL_COLLECTIONS( cont.begin(), cont.end(), cont2.begin(), cont2.end() ); From 22c4ab4a0604e17e168e3c48ba4d9dd0de8121c2 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Sat, 17 Jul 2010 19:44:31 +0000 Subject: [PATCH 18/32] Boost.Range fixes for Tickets: 4131, 4136, 4398, 4388. Plus updated history in the documentation. [SVN r64111] --- doc/html/index.html | 4 +- .../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/history_ack.html | 4 +- doc/html/range/introduction.html | 6 +- doc/html/range/mfc_atl.html | 4 +- .../reference/adaptors/introduction.html | 6 +- .../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 ++-- .../concept_implementation/semantics.html | 2 +- .../reference/ranges/counting_range.html | 8 +-- doc/html/range/reference/ranges/irange.html | 10 ++-- .../range/reference/ranges/istream_range.html | 6 +- .../reference/utilities/iterator_range.html | 6 +- doc/html/range/reference/utilities/join.html | 4 +- .../range/reference/utilities/sub_range.html | 2 +- include/boost/range.hpp | 4 +- include/boost/range/adaptor/map.hpp | 56 +++++++++---------- include/boost/range/detail/join_iterator.hpp | 6 +- include/boost/range/numeric.hpp | 47 ++++++++-------- test/adaptor_test/map.cpp | 44 +++++++++++++++ 97 files changed, 575 insertions(+), 526 deletions(-) mode change 100755 => 100644 include/boost/range.hpp diff --git a/doc/html/index.html b/doc/html/index.html index 8426ec8..90355b6 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)

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

    - +

    Last revised: July 13, 2010 at 18:40:56 GMT

    Last revised: July 17, 2010 at 19:34:42 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index fdd9787..a8decd6 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 18cabf4..ca397ff 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 6d59f7b..1910a37 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 ba2437f..05cbdc0 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 f44ebd1..a2372ac 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/history_ack.html b/doc/html/range/history_ack.html index e884812..66191b9 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/introduction.html b/doc/html/range/introduction.html index 7d24ba6..5ea6f50 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 31acfd5..72221f9 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/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 73bccb8..bdf55ce 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

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

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

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index ec8c914..ce7157e 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 f54fa6d..b00c3ac 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:
      @@ -132,7 +132,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 04bd5de..ece6dbf 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:
      @@ -132,7 +132,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 ee226c1..77a5dab 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 73bfab7..671e761 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 e48d5d0..7c909c1 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 157647f..013fa91 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 ab0e3ae..a37bd29 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 dbebc72..a81fca5 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 61ca01e..b77680d 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 833a616..7fc40e8 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:
    @@ -194,7 +194,7 @@
    - + For the predicate version:
    @@ -230,7 +230,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 97949e5..1f3b2ef 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 1e4c3f2..57faa7d 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 03c8887..597612c 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 7337562..ece4438 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 b89373e..58f2b6b 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index 5cfbb05..c948593 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
    - + 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 2bba221..d631aab 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 2bfcf89..460b087 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index 8905444..efd4c78 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index cb6170e..ccc4e22 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
    - + 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 3576862..60f4f9c 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index 34500c7..293ae92 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index b61b6ad..253d901 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index 0f17aa3..4795437 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index cc02c6d..9e7cbb4 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index 0513dff..53643bd 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index b13f968..fa727b8 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 7926ec7..59a763d 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 651476d..8d9a6c0 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 70466d5..42e33ce 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index 9f6c8ff..ca1a530 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:

    @@ -203,7 +203,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 1f31285..7c0c1b8 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 7d6c564..b202b52 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 7aa2e72..0a6c5cc 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 cf269ac..346a24e 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 3895da8..8983318 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 11f7881..7da8357 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 0409a44..8693b0b 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
      @@ -73,7 +73,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 02ac6d5..f5a2462 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 8cc81a3..6072237 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
      @@ -88,7 +88,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 c369cec..ecd5949 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 c4461cb..13e2fe4 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 c1357c9..0982bc7 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 616cb3a..b9f2d9a 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 3fe8854..c909827 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 ec72416..96c6476 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 d4bc82f..1360a5c 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
    - + 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 dd40eb3..5e6e850 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index 9eada88..0556a2a 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 a4ecd23..766ee8a 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 b30680d..80ac8a1 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
    - + 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 15261d1..40847b3 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 7257ae7..ab764df 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 373244e..caa16d2 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
    - + 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 26eb2ad..c8584f7 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
    - + 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 39cf94c..257ab7b 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 722a850..0f92df5 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 2f93781..173b281 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 60790d8..14f7973 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 a8fea19..0ae3639 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 e7b9394..9c4f86a 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 78d4679..1961ecf 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 2692fb0..0ef9e03 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 1c15714..6ea2097 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 e39fd10..57d2bf8 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 40cbb6c..76a07fc 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 0eb6cf3..0967f12 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 f3dd33f..c7533d7 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 81ae7d6..090c6c0 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 56c698d..0e7e4b6 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 84166b8..c53281e 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 6beecae..b77838f 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 d7b1c14..bef721c 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 bbd0e98..026159c 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 9593b74..59fc394 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 76be953..b1d7294 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 1ada3ba..da9b33a 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
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 449fa5d..52bb89c 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index 512fbd6..27df4a0 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
    @@ -207,7 +207,7 @@ ==r.end();

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index a0706c9..458ed2e 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 0eb2588..684c838 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/include/boost/range.hpp b/include/boost/range.hpp old mode 100755 new mode 100644 index 948c3d7..535edaf --- a/include/boost/range.hpp +++ b/include/boost/range.hpp @@ -15,7 +15,7 @@ # pragma once #endif -#if _MSC_VER == 1300 // experiment +#if defined(_MSC_VER) && (_MSC_VER == 1300) #include #include @@ -28,6 +28,6 @@ #include #include -#endif // _MSC_VER == 1300 // experiment +#endif // _MSC_VER == 1300 #endif diff --git a/include/boost/range/adaptor/map.hpp b/include/boost/range/adaptor/map.hpp index a8a2c20..6d08ea7 100755 --- a/include/boost/range/adaptor/map.hpp +++ b/include/boost/range/adaptor/map.hpp @@ -25,9 +25,9 @@ namespace boost 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; + typedef BOOST_DEDUCED_TYPENAME range_value::type pair_t; + typedef const BOOST_DEDUCED_TYPENAME pair_t::first_type& + result_type; result_type operator()( const pair_t& r ) const { @@ -38,8 +38,8 @@ namespace boost 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; + typedef BOOST_DEDUCED_TYPENAME range_value::type pair_t; + typedef BOOST_DEDUCED_TYPENAME pair_t::second_type& result_type; result_type operator()( pair_t& r ) const { @@ -50,16 +50,16 @@ namespace boost 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; - + typedef BOOST_DEDUCED_TYPENAME range_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< @@ -78,7 +78,7 @@ namespace boost select_first_range(const base& other) : base(other) {} }; - + template class select_second_mutable_range : public transform_range< @@ -97,7 +97,7 @@ namespace boost select_second_mutable_range(const base& other) : base(other) {} }; - + template class select_second_const_range : public transform_range< @@ -116,20 +116,20 @@ namespace boost select_second_const_range(const base& other) : base(other) {} }; - + template< class StdPairRng > - inline select_first_range + inline select_first_range operator|( const StdPairRng& r, map_keys_forwarder ) { - return operator|( r, + return operator|( r, boost::adaptors::transformed( select_first() ) ); } template< class StdPairRng > - inline select_second_mutable_range + inline select_second_mutable_range operator|( StdPairRng& r, map_values_forwarder ) { - return operator|( r, + return operator|( r, boost::adaptors::transformed( select_second_mutable() ) ); } @@ -137,27 +137,27 @@ namespace boost inline select_second_const_range operator|( const StdPairRng& r, map_values_forwarder ) { - return operator|( r, - boost::adaptors::transformed( select_second_const() ) ); + 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 = + const range_detail::map_keys_forwarder map_keys = range_detail::map_keys_forwarder(); - const range_detail::map_values_forwarder map_values = + const range_detail::map_values_forwarder map_values = range_detail::map_values_forwarder(); } - + template inline select_first_range keys(const StdPairRange& rng) @@ -165,7 +165,7 @@ namespace boost return select_first_range( range_detail::select_first(), rng ); } - + template inline select_second_const_range values(const StdPairRange& rng) @@ -173,7 +173,7 @@ namespace boost return select_second_const_range( range_detail::select_second_const(), rng ); } - + template inline select_second_mutable_range values(StdPairRange& rng) @@ -182,7 +182,7 @@ namespace boost range_detail::select_second_mutable(), rng ); } } // 'adaptors' - + } #endif diff --git a/include/boost/range/detail/join_iterator.hpp b/include/boost/range/detail/join_iterator.hpp index 020c893..d22292b 100644 --- a/include/boost/range/detail/join_iterator.hpp +++ b/include/boost/range/detail/join_iterator.hpp @@ -134,7 +134,11 @@ public: typedef Iterator1 iterator1_t; typedef Iterator2 iterator2_t; - join_iterator() : m_section(0u) {} + join_iterator() + : m_section(0u) + , m_it(0u, iterator1_t(), iterator2_t()) + , m_link(link_t(iterator1_t(), iterator2_t())) + {} join_iterator(unsigned int section, Iterator1 current1, Iterator1 last1, Iterator2 first2, Iterator2 current2) : m_section(section) diff --git a/include/boost/range/numeric.hpp b/include/boost/range/numeric.hpp index 0a76151..b01b73a 100755 --- a/include/boost/range/numeric.hpp +++ b/include/boost/range/numeric.hpp @@ -7,13 +7,13 @@ // 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) -// +// // Copyright 2006 Thorsten Ottosen. // 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) -// +// // Copyright 2004 Eric Niebler. // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -39,14 +40,14 @@ namespace boost template< class SinglePassRange, class Value > inline Value accumulate( const SinglePassRange& rng, Value init ) { - boost::function_requires< SinglePassRangeConcept >(); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); 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 ) { - boost::function_requires< SinglePassRangeConcept >(); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return std::accumulate( boost::begin(rng), boost::end(rng), init, op ); } @@ -54,42 +55,42 @@ namespace boost 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_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_ASSERT( boost::distance(rng2) >= boost::distance(rng1) ); - return std::inner_product( boost::begin(rng1), boost::end(rng1), - boost::begin(rng2), init ); + return std::inner_product( boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), init ); } template< class SinglePassRange1, class SinglePassRange2, - class Value, + class Value, class BinaryOperation1, class BinaryOperation2 > inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, - Value init, + Value init, BinaryOperation1 op1, BinaryOperation2 op2 ) { - boost::function_requires< SinglePassRangeConcept >(); - boost::function_requires< SinglePassRangeConcept >(); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_ASSERT( boost::distance(rng2) >= boost::distance(rng1) ); - return std::inner_product( boost::begin(rng1), boost::end(rng1), - boost::begin(rng2), init, op1, op2 ); + 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, + inline OutputIterator partial_sum ( const SinglePassRange& rng, OutputIterator result ) { - boost::function_requires< SinglePassRangeConcept >(); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); 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, + inline OutputIterator partial_sum ( const SinglePassRange& rng, OutputIterator result, BinaryOperation op ) { - boost::function_requires< SinglePassRangeConcept >(); + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); return std::partial_sum( boost::begin(rng), boost::end(rng), result, op ); } @@ -97,8 +98,8 @@ namespace boost inline OutputIterator adjacent_difference ( const SinglePassRange& rng, OutputIterator result ) { - boost::function_requires< SinglePassRangeConcept >(); - return std::adjacent_difference( boost::begin(rng), boost::end(rng), + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::adjacent_difference( boost::begin(rng), boost::end(rng), result ); } @@ -107,11 +108,11 @@ namespace boost OutputIterator result, BinaryOperation op ) { - boost::function_requires< SinglePassRangeConcept >(); - return std::adjacent_difference( boost::begin(rng), boost::end(rng), + BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + return std::adjacent_difference( boost::begin(rng), boost::end(rng), result, op ); } - + } #endif diff --git a/test/adaptor_test/map.cpp b/test/adaptor_test/map.cpp index 73859b4..615b467 100644 --- a/test/adaptor_test/map.cpp +++ b/test/adaptor_test/map.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -111,6 +112,48 @@ namespace boost { map_test_impl< std::map >(); } + + void test_trac_item_4388() + { + typedef std::pair pair_t; + const boost::array ar = {{ + pair_t(3, 'a'), + pair_t(1, 'b'), + pair_t(4, 'c') + }}; + + const boost::array expected_keys = {{ 3, 1, 4 }}; + const boost::array expected_values = {{ 'a', 'b', 'c' }}; + + { + std::vector test; + boost::push_back(test, ar | boost::adaptors::map_keys); + BOOST_CHECK_EQUAL_COLLECTIONS( + expected_keys.begin(), expected_keys.end(), + test.begin(), test.end() + ); + } + + { + std::vector test; + boost::push_back(test, ar | boost::adaptors::map_values); + BOOST_CHECK_EQUAL_COLLECTIONS( + expected_values.begin(), expected_values.end(), + test.begin(), test.end() + ); + } + + { + std::vector test; + boost::array, 3> src(ar); + boost::push_back(test, src | boost::adaptors::map_values); + BOOST_CHECK_EQUAL_COLLECTIONS( + expected_values.begin(), expected_values.end(), + test.begin(), test.end() + ); + } + } + } } @@ -122,6 +165,7 @@ init_unit_test_suite(int argc, char* argv[]) = BOOST_TEST_SUITE( "RangeTestSuite.adaptor.map" ); test->add( BOOST_TEST_CASE( &boost::map_test ) ); + test->add( BOOST_TEST_CASE( &boost::test_trac_item_4388 ) ); return test; } From ce9d9b4726e22275fe3fb96cd17fdde80a797b06 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 19 Jul 2010 20:14:35 +0000 Subject: [PATCH 19/32] Remove old range documentation files. [SVN r64167] --- .../adaptors_general_requirements.html | 141 ------ .../adaptors/adaptors_introduction.html | 274 ------------ .../reference/adaptors/adaptors_synopsis.html | 67 --- doc/html/range/reference/algorithms/non.html | 64 --- .../concept_implementation/overview.html | 68 --- doc/html/range/reference/range_algorithm.html | 52 --- .../range/reference/ranges/introduction.html | 46 -- .../range/reference/ranges/reference.html | 50 --- .../ranges/reference/counting_range.html | 91 ---- .../reference/ranges/reference/irange.html | 104 ----- .../ranges/reference/istream_range.html | 73 ---- .../range/reference/semantics/functions.html | 408 ------------------ .../reference/semantics/metafunctions.html | 236 ---------- doc/html/range/reference/synopsis.html | 185 -------- .../range/upgrade/upgrade_1_34_to_1_35.html | 77 ---- doc/html/range/utilities/iterator_range.html | 322 -------------- doc/html/range/utilities/join.html | 89 ---- doc/html/range/utilities/sub_range.html | 122 ------ 18 files changed, 2469 deletions(-) delete mode 100644 doc/html/range/reference/adaptors/adaptors_general_requirements.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_introduction.html delete mode 100644 doc/html/range/reference/adaptors/adaptors_synopsis.html delete mode 100644 doc/html/range/reference/algorithms/non.html delete mode 100644 doc/html/range/reference/concept_implementation/overview.html delete mode 100644 doc/html/range/reference/range_algorithm.html delete mode 100644 doc/html/range/reference/ranges/introduction.html delete mode 100644 doc/html/range/reference/ranges/reference.html delete mode 100644 doc/html/range/reference/ranges/reference/counting_range.html delete mode 100644 doc/html/range/reference/ranges/reference/irange.html delete mode 100644 doc/html/range/reference/ranges/reference/istream_range.html delete mode 100644 doc/html/range/reference/semantics/functions.html delete mode 100644 doc/html/range/reference/semantics/metafunctions.html delete mode 100644 doc/html/range/reference/synopsis.html delete mode 100644 doc/html/range/upgrade/upgrade_1_34_to_1_35.html delete mode 100644 doc/html/range/utilities/iterator_range.html delete mode 100644 doc/html/range/utilities/join.html delete mode 100644 doc/html/range/utilities/sub_range.html diff --git a/doc/html/range/reference/adaptors/adaptors_general_requirements.html b/doc/html/range/reference/adaptors/adaptors_general_requirements.html deleted file mode 100644 index a815bae..0000000 --- a/doc/html/range/reference/adaptors/adaptors_general_requirements.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -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/adaptors_introduction.html b/doc/html/range/reference/adaptors/adaptors_introduction.html deleted file mode 100644 index 80d2e25..0000000 --- a/doc/html/range/reference/adaptors/adaptors_introduction.html +++ /dev/null @@ -1,274 +0,0 @@ - - - -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/adaptors_synopsis.html b/doc/html/range/reference/adaptors/adaptors_synopsis.html deleted file mode 100644 index c18bb4f..0000000 --- a/doc/html/range/reference/adaptors/adaptors_synopsis.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -Synopsis - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -

    - 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( <see arguments below> )
    -rng | boost::adaptors::transformed(fun)
    -rng | boost::adaptors::uniqued
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/algorithms/non.html b/doc/html/range/reference/algorithms/non.html deleted file mode 100644 index f1f9123..0000000 --- a/doc/html/range/reference/algorithms/non.html +++ /dev/null @@ -1,64 +0,0 @@ - - - --mutating Non-mutating algorithms - - - - - - - - - - - - - - - -
    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 deleted file mode 100644 index d0c35e1..0000000 --- a/doc/html/range/reference/concept_implementation/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/range_algorithm.html b/doc/html/range/reference/range_algorithm.html deleted file mode 100644 index 1e197c9..0000000 --- a/doc/html/range/reference/range_algorithm.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Range Algorithm - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/ranges/introduction.html b/doc/html/range/reference/ranges/introduction.html deleted file mode 100644 index f0080c6..0000000 --- a/doc/html/range/reference/ranges/introduction.html +++ /dev/null @@ -1,46 +0,0 @@ - - - -Introduction - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -

    - The Boost.Range library provides some of the more commonly required ranges. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/ranges/reference.html b/doc/html/range/reference/ranges/reference.html deleted file mode 100644 index edaf8fa..0000000 --- a/doc/html/range/reference/ranges/reference.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -Reference - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/ranges/reference/counting_range.html b/doc/html/range/reference/ranges/reference/counting_range.html deleted file mode 100644 index 68fa72c..0000000 --- a/doc/html/range/reference/ranges/reference/counting_range.html +++ /dev/null @@ -1,91 +0,0 @@ - - - -counting_range - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Prototype -
    -

    - -

    -
    template< class Incrementable > inline
    -iterator_range< counting_iterator<Incrementable> >
    -counting_range(Incrementable first, Incrementable last);
    -
    -template< class SinglePassRange > inline
    -iterator_range< counting_iterator<typename range_iterator<SinglePassRange>::type >
    -counting_range(const SinglePassRange& rng);
    -
    -template< class SinglePassRange > inline
    -iterator_range< counting_iterator<typename range_iterator<SinglePassRange>::type >
    -counting_range(SinglePassRange& rng);
    -
    -

    -

    -
    - - Description -
    -

    - counting_range is a function - to generator that generates an iterator_range - wrapping a counting_iterator - (from Boost.Iterator). -

    -
    - - Definition -
    -

    - Defined in header file boost/range/counting_range.hpp -

    -
    - - Requirements -
    -
    1. -Incrementable is a - model of the Incrementable - Concept. -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/ranges/reference/irange.html b/doc/html/range/reference/ranges/reference/irange.html deleted file mode 100644 index d827097..0000000 --- a/doc/html/range/reference/ranges/reference/irange.html +++ /dev/null @@ -1,104 +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/ranges/reference/istream_range.html b/doc/html/range/reference/ranges/reference/istream_range.html deleted file mode 100644 index 7552ec7..0000000 --- a/doc/html/range/reference/ranges/reference/istream_range.html +++ /dev/null @@ -1,73 +0,0 @@ - - - -istream_range - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Prototype -
    -

    - -

    -
    template< class Type, class Elem, class Traits > inline
    -iterator_range< std::istream_iterator<Type, Elem, Traits> >
    -istream_range(std::basic_istream<Elem, Traits>& in);
    -
    -

    -

    -
    - - Description -
    -

    - istream_range is a function - to generator that generates an iterator_range - wrapping a std::istream_iterator. -

    -
    - - Definition -
    -

    - Defined in header file boost/range/istream_range.hpp -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/reference/semantics/functions.html b/doc/html/range/reference/semantics/functions.html deleted file mode 100644 index 232b680..0000000 --- a/doc/html/range/reference/semantics/functions.html +++ /dev/null @@ -1,408 +0,0 @@ - - - -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/semantics/metafunctions.html b/doc/html/range/reference/semantics/metafunctions.html deleted file mode 100644 index 6df4902..0000000 --- a/doc/html/range/reference/semantics/metafunctions.html +++ /dev/null @@ -1,236 +0,0 @@ - - - -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/synopsis.html b/doc/html/range/reference/synopsis.html deleted file mode 100644 index 248e8c1..0000000 --- a/doc/html/range/reference/synopsis.html +++ /dev/null @@ -1,185 +0,0 @@ - - - -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/upgrade/upgrade_1_34_to_1_35.html b/doc/html/range/upgrade/upgrade_1_34_to_1_35.html deleted file mode 100644 index 252ec93..0000000 --- a/doc/html/range/upgrade/upgrade_1_34_to_1_35.html +++ /dev/null @@ -1,77 +0,0 @@ - - - -Upgrade from version 1.34 - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -

    - Boost version 1.35 introduced some larger refactorings of the library: -

    -
      -
    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(). -
    2. -
    3. -size - now requires a Random - Access Range. The old behavior is provided as distance(). -
    4. -
    5. -range_size<T>::type has been completely removed in favor - of range_difference<T>::type -
    6. -
    7. -boost_range_begin() - and boost_range_end() - have been renamed range_begin() and range_end() respectively. -
    8. -
    9. -range_result_iterator<T>::type and range_reverse_result_iterator<T>::type - have been renamed range_iterator<T>::type - and range_reverse_iterator<T>::type. -
    10. -
    11. - The procedure that makes a custom type work with the library has been greatly - simplified. See Extending the - library for UDTs for details. -
    12. -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/range/utilities/iterator_range.html b/doc/html/range/utilities/iterator_range.html deleted file mode 100644 index 6f536e7..0000000 --- a/doc/html/range/utilities/iterator_range.html +++ /dev/null @@ -1,322 +0,0 @@ - - - -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/utilities/join.html b/doc/html/range/utilities/join.html deleted file mode 100644 index fa140e5..0000000 --- a/doc/html/range/utilities/join.html +++ /dev/null @@ -1,89 +0,0 @@ - - - -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/utilities/sub_range.html b/doc/html/range/utilities/sub_range.html deleted file mode 100644 index a9f5d42..0000000 --- a/doc/html/range/utilities/sub_range.html +++ /dev/null @@ -1,122 +0,0 @@ - - - -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 -
    - - From 9e48730a0ee0eaaf25e2ef6b1c11e7a5c3a20ee2 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 22 Jul 2010 23:28:41 +0000 Subject: [PATCH 20/32] Fix some links in the range documentation. [SVN r64279] --- doc/concepts.qbk | 6 +++--- doc/html/index.html | 4 ++-- .../range/concepts/bidirectional_range.html | 16 ++++++++-------- doc/html/range/concepts/concept_checking.html | 4 ++-- doc/html/range/concepts/forward_range.html | 10 +++++----- doc/html/range/concepts/overview.html | 4 ++-- .../range/concepts/random_access_range.html | 12 ++++++------ .../range/concepts/single_pass_range.html | 16 ++++++++-------- doc/html/range/history_ack.html | 4 ++-- doc/html/range/introduction.html | 6 +++--- doc/html/range/mfc_atl.html | 4 ++-- .../reference/adaptors/introduction.html | 6 +++--- .../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 ++++++------ .../concept_implementation/semantics.html | 2 +- .../reference/ranges/counting_range.html | 8 ++++---- doc/html/range/reference/ranges/irange.html | 10 +++++----- .../range/reference/ranges/istream_range.html | 6 +++--- .../reference/utilities/iterator_range.html | 6 +++--- doc/html/range/reference/utilities/join.html | 4 ++-- .../range/reference/utilities/sub_range.html | 2 +- doc/html/standalone_HTML.manifest | 19 ------------------- 95 files changed, 478 insertions(+), 497 deletions(-) delete mode 100644 doc/html/standalone_HTML.manifest diff --git a/doc/concepts.qbk b/doc/concepts.qbk index cc6fd23..773ef9d 100644 --- a/doc/concepts.qbk +++ b/doc/concepts.qbk @@ -11,9 +11,9 @@ The motivation for the Range concept is that there are many useful Container-lik Because of the second requirement, a Range object must be passed by (const or non-const) reference in generic code. -The operations that can be performed on a Range is dependent on the [@../../iterator/doc/new-iter-concepts.html#iterator-traversal-concepts-lib-iterator-traversal traversal category] of the underlying iterator type. Therefore the range concepts are named to reflect which traversal category its iterators support. See also terminology and style guidelines. for more information about naming of ranges. +The operations that can be performed on a Range is dependent on the [@boost:/libs/iterator/doc/new-iter-concepts.html#iterator-traversal-concepts-lib-iterator-traversal traversal category] of the underlying iterator type. Therefore the range concepts are named to reflect which traversal category its iterators support. See also terminology and style guidelines. for more information about naming of ranges. -The concepts described below specifies associated types as [@../../libs/mpl/doc/refmanual/metafunction.html metafunctions] and all functions as free-standing functions to allow for a layer of indirection. +The concepts described below specifies associated types as [@boost:/libs/mpl/doc/refmanual/metafunction.html metafunctions] and all functions as free-standing functions to allow for a layer of indirection. [endsect] @@ -217,7 +217,7 @@ __bidirectional_range__ [section 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 __concept_check__ 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 traversal categories. For example, the following line checks that the type `T` models the __forward_range__ concept. +Each of the range concepts has a corresponding concept checking class in the file [@boost:/boost/range/concepts.hpp ``]. These classes may be used in conjunction with the __concept_check__ 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 traversal categories. For example, the following line checks that the type `T` models the __forward_range__ concept. `` BOOST_CONCEPT_ASSERT(( ForwardRangeConcept )); diff --git a/doc/html/index.html b/doc/html/index.html index 90355b6..cf6338e 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)

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

    - +

    Last revised: July 17, 2010 at 19:34:42 GMT

    Last revised: July 22, 2010 at 23:20:42 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index a8decd6..a75fbab 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 ca397ff..ec75e36 100644 --- a/doc/html/range/concepts/concept_checking.html +++ b/doc/html/range/concepts/concept_checking.html @@ -28,7 +28,7 @@

    Each of the range concepts has a corresponding concept checking class in - the file <boost/range/concepts.hpp>. + the file <boost/range/concepts.hpp>. 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 @@ -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 1910a37..c74fdef 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/overview.html b/doc/html/range/concepts/overview.html index 0fa9643..bded544 100644 --- a/doc/html/range/concepts/overview.html +++ b/doc/html/range/concepts/overview.html @@ -52,14 +52,14 @@ or non-const) reference in generic code.

    - The operations that can be performed on a Range is dependent on the traversal + 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 its iterators support. See also terminology and style guidelines. for more information about naming of ranges.

    - The concepts described below specifies associated types as metafunctions + The concepts described below specifies associated types as metafunctions and all functions as free-standing functions to allow for a layer of indirection.

    diff --git a/doc/html/range/concepts/random_access_range.html b/doc/html/range/concepts/random_access_range.html index 05cbdc0..0f0830b 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 a2372ac..e05c7eb 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/history_ack.html b/doc/html/range/history_ack.html index 66191b9..d64b6e1 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/introduction.html b/doc/html/range/introduction.html index 5ea6f50..b0ce921 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 72221f9..9c2d65e 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/introduction.html b/doc/html/range/reference/adaptors/introduction.html index bdf55ce..a049b13 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

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

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

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index ce7157e..d241d0f 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 b00c3ac..0fc429c 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index ece6dbf..7b304da 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 77a5dab..36ac8dc 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 671e761..8aabe6a 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index 7c909c1..6450b6a 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index 013fa91..f3130ae 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index a37bd29..50abf67 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index a81fca5..b53a312 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index b77680d..8980d1a 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 7fc40e8..83e88b7 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:
    @@ -194,7 +194,7 @@
    - + For the predicate version:
    @@ -230,7 +230,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 1f3b2ef..bd42f1f 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 57faa7d..c0445f4 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 597612c..0cdf0d9 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index ece4438..ce742b5 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index 58f2b6b..1017fa8 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index c948593..9b69dec 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
    - + 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 d631aab..b21f8c9 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 460b087..492ee63 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index efd4c78..c68005f 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index ccc4e22..41b3d07 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
    - + 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 60f4f9c..1d9be73 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index 293ae92..9730e67 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index 253d901..c32a5ea 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index 4795437..3a94e8a 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index 9e7cbb4..1d4646c 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index 53643bd..c1d3434 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index fa727b8..aac3921 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 59a763d..8450d4c 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 8d9a6c0..5bb61fb 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 42e33ce..956694f 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index ca1a530..056255e 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:

    @@ -203,7 +203,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 7c0c1b8..2a7bae6 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 b202b52..1b0c570 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 0a6c5cc..593724d 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 346a24e..c802ee7 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 8983318..3f685d5 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 7da8357..c9624e6 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 8693b0b..5d932ee 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
      @@ -73,7 +73,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 f5a2462..53b79f1 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 6072237..c7de271 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
      @@ -88,7 +88,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 ecd5949..b74c4d5 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 13e2fe4..1104cc2 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 0982bc7..3136430 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 b9f2d9a..994dd02 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 c909827..28aacf3 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 96c6476..4c75b33 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 1360a5c..a7ec656 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
    - + 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 5e6e850..e56fb51 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index 0556a2a..1576f3e 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 766ee8a..51536ec 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 80ac8a1..583c1cb 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
    - + 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 40847b3..d4e9525 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 ab764df..0585184 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 caa16d2..df62ea8 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
    - + 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 c8584f7..413fc82 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
    - + 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 257ab7b..f3ea649 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 0f92df5..e220c33 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 173b281..2b61404 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 14f7973..1d91462 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 0ae3639..484a7a0 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 9c4f86a..16d35f0 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 1961ecf..394072c 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 0ef9e03..be7c7e7 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 6ea2097..2243e8c 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 57d2bf8..0bfe131 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 76a07fc..021ae08 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 0967f12..e1d88c8 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 c7533d7..73502be 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 090c6c0..b1eb2bb 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 0e7e4b6..dc960b9 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 c53281e..80c4cff 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 b77838f..cde3eb5 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 bef721c..4be44e6 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 026159c..b963850 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 59fc394..55a2106 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index b1d7294..01d404d 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 da9b33a..3beff0b 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
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 52bb89c..df2709c 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index 27df4a0..fb41371 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
    @@ -207,7 +207,7 @@ ==r.end();

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index 458ed2e..a06440d 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 684c838..ebbf648 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/standalone_HTML.manifest b/doc/html/standalone_HTML.manifest deleted file mode 100644 index e9d38e8..0000000 --- a/doc/html/standalone_HTML.manifest +++ /dev/null @@ -1,19 +0,0 @@ -index.html -range/concepts.html -range/concepts/single_pass_range.html -range/concepts/forward_range.html -range/concepts/bidirectional_range.html -range/concepts/random_access_range.html -range/concepts/concept_checking.html -range/reference.html -range/reference/synopsis.html -range/reference/semantics.html -range/reference/extending.html -range/utilities.html -range/utilities/sub_range.html -range/style_guide.html -range/library_headers.html -range/examples.html -range/portability.html -range/faq.html -range/history_ack.html From 4b96ce34aaa8d1773c127fb9625d4a3dda18879b Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Fri, 10 Dec 2010 20:04:30 +0000 Subject: [PATCH 21/32] Fix order of includes for Spirit scheme example. Changed iterator_range.size() to use std::distance instead of subtracting iterators, this allows it to work with iterators other than random access. Added more utree docs to Spirit. [SVN r67153] --- include/boost/range/iterator_range_core.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/range/iterator_range_core.hpp b/include/boost/range/iterator_range_core.hpp index 497b1e3..5d809f1 100755 --- a/include/boost/range/iterator_range_core.hpp +++ b/include/boost/range/iterator_range_core.hpp @@ -230,7 +230,7 @@ namespace boost difference_type size() const { - return m_End - m_Begin; + return std::distance(m_End, m_Begin); } bool empty() const From 1ff26bc99b01dc5ca68e2a79a4f7202a6c812695 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 11 Dec 2010 14:30:49 +0000 Subject: [PATCH 22/32] boost/range/iterator_range_core.hpp: fixing bug introduced with rev. 67153 (major breakage) [SVN r67169] --- include/boost/range/iterator_range_core.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/range/iterator_range_core.hpp b/include/boost/range/iterator_range_core.hpp index 5d809f1..f7df72a 100755 --- a/include/boost/range/iterator_range_core.hpp +++ b/include/boost/range/iterator_range_core.hpp @@ -230,7 +230,7 @@ namespace boost difference_type size() const { - return std::distance(m_End, m_Begin); + return std::distance(m_Begin, m_End); } bool empty() const From 612cec17bb34cf4a8fa0279dd4b5828d66c1a203 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 22 Dec 2010 22:31:33 +0000 Subject: [PATCH 23/32] [boost][range] - Update to relax preconditions for the strided adaptor, and numerous fixes to inspection report issues. [SVN r67418] --- doc/concepts.qbk | 6 +- doc/examples.qbk | 7 +- doc/faq.qbk | 7 +- doc/headers.qbk | 15 +- doc/history_ack.qbk | 6 +- doc/html/index.html | 97 +-- doc/html/quickbook_HTML.manifest | 13 +- doc/html/range/concepts.html | 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/examples.html | 6 +- doc/html/range/headers.html | 49 ++ doc/html/range/headers/adaptors.html | 232 ++++++ doc/html/range/headers/algorithm.html | 683 ++++++++++++++++++ doc/html/range/headers/algorithm_ext.html | 171 +++++ doc/html/range/headers/general.html | 551 ++++++++++++++ doc/html/range/history_ack.html | 6 +- doc/html/range/introduction.html | 6 +- doc/html/range/mfc_atl.html | 16 +- 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 | 16 +- doc/html/range/reference.html | 56 +- doc/html/range/reference/adaptors.html | 8 +- .../adaptors/general_requirements.html | 2 +- .../reference/adaptors/introduction.html | 8 +- .../range/reference/adaptors/reference.html | 35 +- .../adaptors/reference/adjacent_filtered.html | 11 +- .../reference/adaptors/reference/copied.html | 10 +- .../adaptors/reference/filtered.html | 10 +- .../reference/adaptors/reference/indexed.html | 10 +- .../adaptors/reference/indirected.html | 10 +- .../adaptors/reference/map_keys.html | 10 +- .../adaptors/reference/map_values.html | 10 +- .../adaptors/reference/replaced.html | 32 +- .../adaptors/reference/replaced_if.html | 31 +- .../adaptors/reference/reversed.html | 10 +- .../reference/adaptors/reference/sliced.html | 10 +- .../reference/adaptors/reference/strided.html | 24 +- .../adaptors/reference/tokenized.html | 40 +- .../adaptors/reference/transformed.html | 11 +- .../reference/adaptors/reference/uniqued.html | 12 +- doc/html/range/reference/algorithms.html | 28 +- doc/html/range/reference/algorithms/heap.html | 12 +- .../reference/algorithms/heap/make_heap.html | 12 +- .../reference/algorithms/heap/pop_heap.html | 14 +- .../reference/algorithms/heap/push_heap.html | 14 +- .../reference/algorithms/heap/sort_heap.html | 14 +- .../reference/algorithms/introduction.html | 257 +++++++ .../range/reference/algorithms/mutating.html | 86 +-- .../reference/algorithms/mutating/copy.html | 14 +- .../algorithms/mutating/copy_backward.html | 15 +- .../reference/algorithms/mutating/fill.html | 12 +- .../reference/algorithms/mutating/fill_n.html | 12 +- .../algorithms/mutating/generate.html | 14 +- .../algorithms/mutating/inplace_merge.html | 19 +- .../reference/algorithms/mutating/merge.html | 18 +- .../algorithms/mutating/nth_element.html | 13 +- .../algorithms/mutating/partial_sort.html | 13 +- .../algorithms/mutating/partition.html | 12 +- .../algorithms/mutating/random_shuffle.html | 15 +- .../reference/algorithms/mutating/remove.html | 12 +- .../algorithms/mutating/remove_copy.html | 13 +- .../algorithms/mutating/remove_copy_if.html | 13 +- .../algorithms/mutating/remove_if.html | 12 +- .../algorithms/mutating/replace.html | 12 +- .../algorithms/mutating/replace_copy.html | 13 +- .../algorithms/mutating/replace_copy_if.html | 13 +- .../algorithms/mutating/replace_if.html | 13 +- .../algorithms/mutating/reverse.html | 12 +- .../algorithms/mutating/reverse_copy.html | 13 +- .../reference/algorithms/mutating/rotate.html | 14 +- .../algorithms/mutating/rotate_copy.html | 15 +- .../reference/algorithms/mutating/sort.html | 12 +- .../algorithms/mutating/stable_partition.html | 13 +- .../algorithms/mutating/stable_sort.html | 13 +- .../algorithms/mutating/swap_ranges.html | 13 +- .../algorithms/mutating/transform.html | 14 +- .../reference/algorithms/mutating/unique.html | 12 +- .../algorithms/mutating/unique_copy.html | 13 +- doc/html/range/reference/algorithms/new.html | 27 +- .../reference/algorithms/new/copy_n.html | 12 +- .../range/reference/algorithms/new/erase.html | 12 +- .../reference/algorithms/new/for_each.html | 12 +- .../reference/algorithms/new/insert.html | 12 +- .../range/reference/algorithms/new/iota.html | 12 +- .../reference/algorithms/new/is_sorted.html | 12 +- .../reference/algorithms/new/overwrite.html | 12 +- .../reference/algorithms/new/push_back.html | 12 +- .../reference/algorithms/new/push_front.html | 12 +- .../algorithms/new/remove_erase.html | 12 +- .../algorithms/new/remove_erase_if.html | 13 +- .../reference/algorithms/non_mutating.html | 58 +- .../non_mutating/adjacent_find.html | 13 +- .../non_mutating/binary_search.html | 15 +- .../algorithms/non_mutating/count.html | 12 +- .../algorithms/non_mutating/count_if.html | 13 +- .../algorithms/non_mutating/equal.html | 12 +- .../algorithms/non_mutating/equal_range.html | 15 +- .../algorithms/non_mutating/find.html | 12 +- .../algorithms/non_mutating/find_end.html | 13 +- .../non_mutating/find_first_of.html | 13 +- .../algorithms/non_mutating/find_if.html | 15 +- .../algorithms/non_mutating/for_each.html | 13 +- .../non_mutating/lexicographical_compare.html | 13 +- .../algorithms/non_mutating/lower_bound.html | 15 +- .../algorithms/non_mutating/max_element.html | 13 +- .../algorithms/non_mutating/min_element.html | 13 +- .../algorithms/non_mutating/mismatch.html | 15 +- .../algorithms/non_mutating/search.html | 13 +- .../algorithms/non_mutating/search_n.html | 13 +- .../algorithms/non_mutating/upper_bound.html | 15 +- .../range/reference/algorithms/numeric.html | 15 +- .../algorithms/numeric/accumulate.html | 16 +- .../numeric/adjacent_difference.html | 19 +- .../algorithms/numeric/inner_product.html | 19 +- .../algorithms/numeric/partial_sum.html | 19 +- .../reference/algorithms/permutation.html | 10 +- .../permutation/next_permutation.html | 13 +- .../permutation/prev_permutation.html | 13 +- doc/html/range/reference/algorithms/set.html | 16 +- .../reference/algorithms/set/includes.html | 14 +- .../algorithms/set/set_difference.html | 14 +- .../algorithms/set/set_intersection.html | 15 +- .../set/set_symmetric_difference.html | 15 +- .../reference/algorithms/set/set_union.html | 14 +- .../reference/concept_implementation.html | 2 +- .../concept_implementation/semantics.html | 2 +- .../semantics/functions.html | 23 +- doc/html/range/reference/extending.html | 8 +- .../range/reference/extending/method_1.html | 2 +- .../range/reference/extending/method_2.html | 22 +- .../range/reference/extending/method_3.html | 6 +- .../extending/method_3/method_3_1.html | 2 +- .../extending/method_3/method_3_2.html | 2 +- doc/html/range/reference/ranges.html | 8 +- .../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/utilities.html | 8 +- .../reference/utilities/iterator_range.html | 8 +- doc/html/range/reference/utilities/join.html | 6 +- .../range/reference/utilities/sub_range.html | 4 +- doc/html/range/style_guide.html | 54 +- doc/html/range/upgrade.html | 14 +- doc/html/range/upgrade/upgrade_from_1_34.html | 2 +- doc/html/range/upgrade/upgrade_from_1_42.html | 10 +- doc/html/range/upgrade/upgrade_from_1_45.html | 64 ++ doc/introduction.qbk | 7 +- doc/mfc_atl.qbk | 5 + doc/portability.qbk | 7 +- doc/reference.qbk | 5 + doc/reference/adaptors.qbk | 5 + doc/reference/adaptors/adjacent_filtered.qbk | 5 + doc/reference/adaptors/copied.qbk | 5 + .../adaptors/examples/adjacent_filtered.cpp | 9 + doc/reference/adaptors/examples/copied.cpp | 9 + doc/reference/adaptors/examples/filtered.cpp | 9 + doc/reference/adaptors/examples/indexed.cpp | 9 + .../adaptors/examples/indirected.cpp | 9 + doc/reference/adaptors/examples/map_keys.cpp | 9 + .../adaptors/examples/map_values.cpp | 9 + doc/reference/adaptors/examples/replaced.cpp | 9 + .../adaptors/examples/replaced_if.cpp | 9 + doc/reference/adaptors/examples/reversed.cpp | 9 + doc/reference/adaptors/examples/sliced.cpp | 9 + doc/reference/adaptors/examples/strided.cpp | 9 + doc/reference/adaptors/examples/tokenized.cpp | 9 + .../adaptors/examples/transformed.cpp | 9 + doc/reference/adaptors/examples/uniqued.cpp | 9 + doc/reference/adaptors/filtered.qbk | 5 + doc/reference/adaptors/indexed.qbk | 5 + doc/reference/adaptors/indirected.qbk | 5 + doc/reference/adaptors/map_keys.qbk | 5 + doc/reference/adaptors/map_values.qbk | 5 + doc/reference/adaptors/replaced.qbk | 5 + doc/reference/adaptors/replaced_if.qbk | 5 + doc/reference/adaptors/reversed.qbk | 5 + doc/reference/adaptors/sliced.qbk | 5 + doc/reference/adaptors/strided.qbk | 11 +- doc/reference/adaptors/tokenized.qbk | 5 + doc/reference/adaptors/transformed.qbk | 5 + doc/reference/adaptors/uniqued.qbk | 5 + doc/reference/algorithm/adjacent_find.qbk | 5 + doc/reference/algorithm/binary_search.qbk | 5 + doc/reference/algorithm/copy.qbk | 5 + doc/reference/algorithm/copy_backward.qbk | 5 + doc/reference/algorithm/count.qbk | 5 + doc/reference/algorithm/count_if.qbk | 5 + doc/reference/algorithm/equal.qbk | 5 + doc/reference/algorithm/equal_range.qbk | 5 + doc/reference/algorithm/fill.qbk | 5 + doc/reference/algorithm/fill_n.qbk | 5 + doc/reference/algorithm/find.qbk | 5 + doc/reference/algorithm/find_end.qbk | 5 + doc/reference/algorithm/find_first_of.qbk | 5 + doc/reference/algorithm/find_if.qbk | 5 + doc/reference/algorithm/for_each.qbk | 5 + doc/reference/algorithm/generate.qbk | 5 + doc/reference/algorithm/includes.qbk | 5 + doc/reference/algorithm/inplace_merge.qbk | 5 + .../algorithm/lexicographical_compare.qbk | 5 + doc/reference/algorithm/lower_bound.qbk | 5 + doc/reference/algorithm/make_heap.qbk | 5 + doc/reference/algorithm/max_element.qbk | 5 + doc/reference/algorithm/merge.qbk | 5 + doc/reference/algorithm/min_element.qbk | 5 + doc/reference/algorithm/mismatch.qbk | 5 + doc/reference/algorithm/next_permutation.qbk | 5 + doc/reference/algorithm/nth_element.qbk | 5 + doc/reference/algorithm/partial_sort.qbk | 5 + doc/reference/algorithm/partition.qbk | 5 + doc/reference/algorithm/pop_heap.qbk | 5 + doc/reference/algorithm/prev_permutation.qbk | 5 + doc/reference/algorithm/push_heap.qbk | 5 + doc/reference/algorithm/random_shuffle.qbk | 5 + doc/reference/algorithm/remove.qbk | 10 +- doc/reference/algorithm/remove_copy.qbk | 5 + doc/reference/algorithm/remove_copy_if.qbk | 5 + doc/reference/algorithm/remove_if.qbk | 5 + doc/reference/algorithm/replace.qbk | 5 + doc/reference/algorithm/replace_copy.qbk | 5 + doc/reference/algorithm/replace_copy_if.qbk | 5 + doc/reference/algorithm/replace_if.qbk | 5 + doc/reference/algorithm/reverse.qbk | 5 + doc/reference/algorithm/reverse_copy.qbk | 5 + doc/reference/algorithm/rotate.qbk | 5 + doc/reference/algorithm/rotate_copy.qbk | 5 + doc/reference/algorithm/search.qbk | 5 + doc/reference/algorithm/search_n.qbk | 5 + doc/reference/algorithm/set_difference.qbk | 5 + doc/reference/algorithm/set_intersection.qbk | 5 + .../algorithm/set_symmetric_difference.qbk | 5 + doc/reference/algorithm/set_union.qbk | 5 + doc/reference/algorithm/sort.qbk | 5 + doc/reference/algorithm/sort_heap.qbk | 5 + doc/reference/algorithm/stable_partition.qbk | 5 + doc/reference/algorithm/stable_sort.qbk | 5 + doc/reference/algorithm/swap_ranges.qbk | 5 + doc/reference/algorithm/transform.qbk | 5 + doc/reference/algorithm/unique.qbk | 5 + doc/reference/algorithm/unique_copy.qbk | 5 + doc/reference/algorithm/upper_bound.qbk | 5 + doc/reference/algorithm_ext/copy_n.qbk | 5 + doc/reference/algorithm_ext/erase.qbk | 5 + doc/reference/algorithm_ext/for_each.qbk | 5 + doc/reference/algorithm_ext/insert.qbk | 5 + doc/reference/algorithm_ext/iota.qbk | 5 + doc/reference/algorithm_ext/is_sorted.qbk | 5 + doc/reference/algorithm_ext/overwrite.qbk | 5 + doc/reference/algorithm_ext/push_back.qbk | 5 + doc/reference/algorithm_ext/push_front.qbk | 5 + doc/reference/algorithm_ext/remove_erase.qbk | 5 + .../algorithm_ext/remove_erase_if.qbk | 5 + doc/reference/algorithms.qbk | 14 +- doc/reference/extending.qbk | 6 + doc/reference/numeric/accumulate.qbk | 5 + doc/reference/numeric/adjacent_difference.qbk | 5 + doc/reference/numeric/inner_product.qbk | 5 + doc/reference/numeric/partial_sum.qbk | 5 + doc/reference/overview.qbk | 7 +- doc/reference/ranges.qbk | 5 + doc/reference/ranges/counting_range.qbk | 5 + doc/reference/ranges/irange.qbk | 5 + doc/reference/ranges/istream_range.qbk | 5 + doc/reference/semantics.qbk | 9 +- doc/reference/synopsis.qbk | 7 +- doc/reference/utilities.qbk | 5 + doc/style.css | 42 -- doc/style.qbk | 5 + doc/upgrade.qbk | 13 + index.html | 3 + test/Jamfile.v2 | 1 + test/adaptor_test/strided.cpp | 93 ++- test/adaptors.cpp | 8 +- test/algorithm_test/count_if.cpp | 6 +- test/extension_size.cpp | 122 ++++ test/replace_copy.cpp | 0 test/string.cpp | 76 +- test/test_driver/range_return_test_driver.hpp | 30 +- 286 files changed, 4007 insertions(+), 1192 deletions(-) create mode 100644 doc/html/range/headers.html create mode 100644 doc/html/range/headers/adaptors.html create mode 100644 doc/html/range/headers/algorithm.html create mode 100644 doc/html/range/headers/algorithm_ext.html create mode 100644 doc/html/range/headers/general.html create mode 100644 doc/html/range/reference/algorithms/introduction.html create mode 100644 doc/html/range/upgrade/upgrade_from_1_45.html delete mode 100755 doc/style.css create mode 100644 test/extension_size.cpp delete mode 100644 test/replace_copy.cpp diff --git a/doc/concepts.qbk b/doc/concepts.qbk index 773ef9d..f379e18 100644 --- a/doc/concepts.qbk +++ b/doc/concepts.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:concepts Range Concepts] [section Overview] @@ -246,6 +251,5 @@ __iterator_concepts__ __concept_check__ [endsect] - [endsect] diff --git a/doc/examples.qbk b/doc/examples.qbk index bea16e2..1dfb924 100644 --- a/doc/examples.qbk +++ b/doc/examples.qbk @@ -1,4 +1,9 @@ -[section Examples] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:examples Examples] Some examples are given in the accompanying test files: diff --git a/doc/faq.qbk b/doc/faq.qbk index f01ffe8..ada6361 100644 --- a/doc/faq.qbk +++ b/doc/faq.qbk @@ -1,4 +1,9 @@ -[section FAQ] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:faq FAQ] 1. ['[*Why is there no difference between `range_iterator::type` and `range_const_iterator::type` for `std::pair`?]] diff --git a/doc/headers.qbk b/doc/headers.qbk index 0013853..0012c6a 100644 --- a/doc/headers.qbk +++ b/doc/headers.qbk @@ -1,6 +1,11 @@ -[section Library Headers] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:headers Library Headers] -[section General] +[section:general 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. ] [- ]] @@ -34,7 +39,7 @@ ] [endsect] -[section Adaptors] +[section:adaptors Adaptors] [table [[Header ][Includes ]] [[``] [__range_adaptors_adjacent_filtered__ ]] @@ -54,7 +59,7 @@ ] [endsect] -[section Algorithm] +[section:algorithm Algorithm] [table [[Header ][Includes ]] [[``] [__range_algorithms_adjacent_find__]] @@ -119,7 +124,7 @@ ] [endsect] -[section Algorithm Extensions] +[section:algorithm_ext Algorithm Extensions] [table [[Header ][Includes ]] [[``] [__range_algorithm_ext_copy_n__]] diff --git a/doc/history_ack.qbk b/doc/history_ack.qbk index 73ce9e8..f8c39e4 100644 --- a/doc/history_ack.qbk +++ b/doc/history_ack.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:history_ack History and Acknowledgement] [heading Version 1 - before Boost 1.43] @@ -51,4 +56,3 @@ 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 cf6338e..fbc5e88 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)

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

    Table of Contents

    Introduction
    -
    Range Concepts
    +
    Range Concepts
    Overview
    Single Pass Range
    @@ -49,87 +49,88 @@
    Random Access Range
    Concept Checking
    -
    Reference
    +
    Reference
    Overview
    -
    Range concept +
    Range concept implementation
    Synopsis
    Semantics
    -
    Range Adaptors
    +
    Range Adaptors
    -
    Introduction +
    Introduction and motivation
    -
    General +
    General Requirements
    -
    Reference
    +
    Reference
    -
    Range Algorithm
    +
    Range Algorithms
    -
    - Introduction and motivation
    -
    Mutating algorithms
    -
    Non-mutating +
    Introduction + and motivation
    +
    Mutating algorithms
    +
    Non-mutating algorithms
    -
    Set algorithms
    -
    Heap algorithms
    -
    Permutation +
    Set algorithms
    +
    Heap algorithms
    +
    Permutation algorithms
    -
    New algorithms
    -
    Numeric algorithms
    +
    New algorithms
    +
    Numeric algorithms
    -
    Provided Ranges
    +
    Provided Ranges
    -
    counting_range
    -
    istream_range
    -
    irange
    +
    counting_range
    +
    istream_range
    +
    irange
    -
    Utilities
    +
    Utilities
    -
    Class iterator_range
    -
    Class sub_range
    -
    Function join
    +
    Class iterator_range
    +
    Class sub_range
    +
    Function join
    -
    Extending the library
    +
    Extending the library
    -
    Method 1: provide +
    Method 1: provide member functions and nested types
    -
    Method 2: provide +
    Method 2: provide free-standing functions and specialize metafunctions
    -
    Method 3: provide +
    Method 3: provide range adaptor implementations
    -
    Terminology and style guidelines
    -
    Library Headers
    +
    Terminology and style guidelines
    +
    Library Headers
    -
    General
    -
    Adaptors
    -
    Algorithm
    -
    Algorithm - Extensions
    +
    General
    +
    Adaptors
    +
    Algorithm
    +
    Algorithm Extensions
    Examples
    -
    MFC/ATL (courtesy of Shunsuke Sogame)
    +
    MFC/ATL (courtesy of Shunsuke Sogame)
    -
    Requirements
    -
    MFC Ranges
    -
    ATL Ranges
    -
    const Ranges
    -
    References
    +
    Requirements
    +
    MFC Ranges
    +
    ATL Ranges
    +
    const Ranges
    +
    References
    -
    Upgrade version of Boost.Range
    +
    Upgrade version of Boost.Range
    -
    Upgrade from version +
    Upgrade from version + 1.45
    +
    Upgrade from version 1.42
    -
    Upgrade from version +
    Upgrade from version 1.34
    Portability
    FAQ
    -
    History and Acknowledgement
    +
    History and Acknowledgement

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

    - +

    Last revised: July 22, 2010 at 23:20:42 GMT

    Last revised: December 22, 2010 at 21:58:52 GMT


    diff --git a/doc/html/quickbook_HTML.manifest b/doc/html/quickbook_HTML.manifest index 7c5d13a..b12e40e 100644 --- a/doc/html/quickbook_HTML.manifest +++ b/doc/html/quickbook_HTML.manifest @@ -34,7 +34,7 @@ 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/introduction.html range/reference/algorithms/mutating.html range/reference/algorithms/mutating/copy.html range/reference/algorithms/mutating/copy_backward.html @@ -132,11 +132,11 @@ 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/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/headers.html +range/headers/general.html +range/headers/adaptors.html +range/headers/algorithm.html +range/headers/algorithm_ext.html range/examples.html range/mfc_atl.html range/mfc_atl/requirements.html @@ -145,6 +145,7 @@ range/mfc_atl/atl_ranges.html range/mfc_atl/const_ranges.html range/mfc_atl/references.html range/upgrade.html +range/upgrade/upgrade_from_1_45.html range/upgrade/upgrade_from_1_42.html range/upgrade/upgrade_from_1_34.html range/portability.html diff --git a/doc/html/range/concepts.html b/doc/html/range/concepts.html index b071de6..c3c92a8 100644 --- a/doc/html/range/concepts.html +++ b/doc/html/range/concepts.html @@ -24,7 +24,7 @@
    Overview
    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index a75fbab..4d01b1e 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 ec75e36..a5ba407 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 c74fdef..73c2ce6 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 0f0830b..df5159f 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 e05c7eb..2d619b4 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 14aad79..5a4201b 100644 --- a/doc/html/range/examples.html +++ b/doc/html/range/examples.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@


    -PrevUpHomeNext +PrevUpHomeNext

    @@ -68,7 +68,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/headers.html b/doc/html/range/headers.html new file mode 100644 index 0000000..b4ce7e3 --- /dev/null +++ b/doc/html/range/headers.html @@ -0,0 +1,49 @@ + + + +Library Headers + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/range/headers/adaptors.html b/doc/html/range/headers/adaptors.html new file mode 100644 index 0000000..1d2952e --- /dev/null +++ b/doc/html/range/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/headers/algorithm.html b/doc/html/range/headers/algorithm.html new file mode 100644 index 0000000..40bac90 --- /dev/null +++ b/doc/html/range/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/headers/algorithm_ext.html b/doc/html/range/headers/algorithm_ext.html new file mode 100644 index 0000000..4a62339 --- /dev/null +++ b/doc/html/range/headers/algorithm_ext.html @@ -0,0 +1,171 @@ + + + +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/headers/general.html b/doc/html/range/headers/general.html new file mode 100644 index 0000000..ea122b8 --- /dev/null +++ b/doc/html/range/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/history_ack.html b/doc/html/range/history_ack.html index d64b6e1..ebf85e9 100644 --- a/doc/html/range/history_ack.html +++ b/doc/html/range/history_ack.html @@ -23,10 +23,10 @@

    - + 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/introduction.html b/doc/html/range/introduction.html index b0ce921..1a2c8f2 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 9c2d65e..1eeb4fa 100644 --- a/doc/html/range/mfc_atl.html +++ b/doc/html/range/mfc_atl.html @@ -24,17 +24,17 @@
    - + Overview

    diff --git a/doc/html/range/mfc_atl/atl_ranges.html b/doc/html/range/mfc_atl/atl_ranges.html index 6c96f33..aec5af5 100644 --- a/doc/html/range/mfc_atl/atl_ranges.html +++ b/doc/html/range/mfc_atl/atl_ranges.html @@ -24,7 +24,7 @@

    If the <boost/range/atl.hpp> diff --git a/doc/html/range/mfc_atl/const_ranges.html b/doc/html/range/mfc_atl/const_ranges.html index cf41223..d833d83 100644 --- a/doc/html/range/mfc_atl/const_ranges.html +++ b/doc/html/range/mfc_atl/const_ranges.html @@ -24,7 +24,7 @@

    range_reference<const Range>::type diff --git a/doc/html/range/mfc_atl/mfc_ranges.html b/doc/html/range/mfc_atl/mfc_ranges.html index 57655a2..a757cf5 100644 --- a/doc/html/range/mfc_atl/mfc_ranges.html +++ b/doc/html/range/mfc_atl/mfc_ranges.html @@ -24,7 +24,7 @@

    If the <boost/range/mfc.hpp> diff --git a/doc/html/range/mfc_atl/references.html b/doc/html/range/mfc_atl/references.html index 1d0a7a4..a09ba0a 100644 --- a/doc/html/range/mfc_atl/references.html +++ b/doc/html/range/mfc_atl/references.html @@ -24,7 +24,7 @@

    1. diff --git a/doc/html/range/mfc_atl/requirements.html b/doc/html/range/mfc_atl/requirements.html index 8c0a80a..f171d85 100644 --- a/doc/html/range/mfc_atl/requirements.html +++ b/doc/html/range/mfc_atl/requirements.html @@ -24,7 +24,7 @@
    • diff --git a/doc/html/range/portability.html b/doc/html/range/portability.html index e2afd81..8f24282 100644 --- a/doc/html/range/portability.html +++ b/doc/html/range/portability.html @@ -62,17 +62,19 @@ rvalue problems,
    • +

      do not rely on ADL: -

        +

        +
        • - if you overload functions, include that header before the headers - in this library, -
        • + if you overload functions, include that header before the headers in + this library, +
        • - put all overloads in namespace boost. -
        • + put all overloads in namespace boost. +
        - +
    diff --git a/doc/html/range/reference.html b/doc/html/range/reference.html index 9b31bb4..f8246fb 100644 --- a/doc/html/range/reference.html +++ b/doc/html/range/reference.html @@ -24,57 +24,57 @@
    diff --git a/doc/html/range/reference/adaptors/general_requirements.html b/doc/html/range/reference/adaptors/general_requirements.html index 83d19c0..8078038 100644 --- a/doc/html/range/reference/adaptors/general_requirements.html +++ b/doc/html/range/reference/adaptors/general_requirements.html @@ -24,7 +24,7 @@

    diff --git a/doc/html/range/reference/adaptors/introduction.html b/doc/html/range/reference/adaptors/introduction.html index a049b13..10a1367 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -24,7 +24,7 @@

    @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

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

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

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/adaptors/reference.html b/doc/html/range/reference/adaptors/reference.html index b026090..dffb6fe 100644 --- a/doc/html/range/reference/adaptors/reference.html +++ b/doc/html/range/reference/adaptors/reference.html @@ -24,27 +24,24 @@
    diff --git a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html index 31128ea..f8124b5 100644 --- a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html @@ -24,11 +24,10 @@
    @@ -102,8 +101,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/copied.html b/doc/html/range/reference/adaptors/reference/copied.html index b690eba..5007999 100644 --- a/doc/html/range/reference/adaptors/reference/copied.html +++ b/doc/html/range/reference/adaptors/reference/copied.html @@ -24,10 +24,10 @@

    @@ -101,8 +101,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/filtered.html b/doc/html/range/reference/adaptors/reference/filtered.html index 1d21ce0..2a80103 100644 --- a/doc/html/range/reference/adaptors/reference/filtered.html +++ b/doc/html/range/reference/adaptors/reference/filtered.html @@ -24,10 +24,10 @@

    @@ -101,8 +101,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/indexed.html b/doc/html/range/reference/adaptors/reference/indexed.html index 45bcbef..066225c 100644 --- a/doc/html/range/reference/adaptors/reference/indexed.html +++ b/doc/html/range/reference/adaptors/reference/indexed.html @@ -24,10 +24,10 @@

    @@ -93,8 +93,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/indirected.html b/doc/html/range/reference/adaptors/reference/indirected.html index 7360891..c0e9715 100644 --- a/doc/html/range/reference/adaptors/reference/indirected.html +++ b/doc/html/range/reference/adaptors/reference/indirected.html @@ -24,10 +24,10 @@

    @@ -97,8 +97,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/map_keys.html b/doc/html/range/reference/adaptors/reference/map_keys.html index 3b8e621..6c5e15f 100644 --- a/doc/html/range/reference/adaptors/reference/map_keys.html +++ b/doc/html/range/reference/adaptors/reference/map_keys.html @@ -24,10 +24,10 @@

    @@ -96,8 +96,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/map_values.html b/doc/html/range/reference/adaptors/reference/map_values.html index c55f9ae..b8fe0e2 100644 --- a/doc/html/range/reference/adaptors/reference/map_values.html +++ b/doc/html/range/reference/adaptors/reference/map_values.html @@ -24,10 +24,10 @@

    @@ -96,8 +96,8 @@

    diff --git a/doc/html/range/reference/adaptors/reference/replaced.html b/doc/html/range/reference/adaptors/reference/replaced.html index da45959..e18ba49 100644 --- a/doc/html/range/reference/adaptors/reference/replaced.html +++ b/doc/html/range/reference/adaptors/reference/replaced.html @@ -24,10 +24,10 @@

    @@ -78,20 +78,22 @@
    • +

      Precondition: -

        +

        +
        • - new_value is - convertible to the value_type - of the range. -
        • + new_value is + convertible to the value_type + of the range. +
        • - old_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 @@ -114,8 +116,8 @@

      diff --git a/doc/html/range/reference/adaptors/reference/replaced_if.html b/doc/html/range/reference/adaptors/reference/replaced_if.html index b3b77e3..f8d4f2d 100644 --- a/doc/html/range/reference/adaptors/reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/reference/replaced_if.html @@ -24,11 +24,10 @@

      - +
      @@ -79,19 +78,21 @@
      • +

        Precondition: -

          +

          +
          • - The range value_type - is convertible to the argument type of pred. -
          • + The range value_type + is convertible to the argument type of pred. +
          • - new_value is - convertible to the value_type - of the range. -
          • + new_value is + convertible to the value_type + of the range. +
          - +
        • Postconditions: For all elements x in the returned @@ -111,8 +112,8 @@

        diff --git a/doc/html/range/reference/adaptors/reference/reversed.html b/doc/html/range/reference/adaptors/reference/reversed.html index 2b192f9..7ff9467 100644 --- a/doc/html/range/reference/adaptors/reference/reversed.html +++ b/doc/html/range/reference/adaptors/reference/reversed.html @@ -24,10 +24,10 @@

        - +
        @@ -89,8 +89,8 @@

        diff --git a/doc/html/range/reference/adaptors/reference/sliced.html b/doc/html/range/reference/adaptors/reference/sliced.html index c0dfed0..1d02f3f 100644 --- a/doc/html/range/reference/adaptors/reference/sliced.html +++ b/doc/html/range/reference/adaptors/reference/sliced.html @@ -24,10 +24,10 @@

        @@ -99,8 +99,8 @@

        diff --git a/doc/html/range/reference/adaptors/reference/strided.html b/doc/html/range/reference/adaptors/reference/strided.html index 2cbb302..e79f8cf 100644 --- a/doc/html/range/reference/adaptors/reference/strided.html +++ b/doc/html/range/reference/adaptors/reference/strided.html @@ -24,10 +24,10 @@

        @@ -77,27 +77,27 @@
        • Precondition: 0 - <= n - && n - < distance(rng) + <= n + and boost::size(rng) + is a valid expression.
        • Returns: A new range based on rng where traversal is performed in steps of n.
        • - Range Category: Random - Access Range + Range Category: Single + Pass Range
        • - Returned Range Category: Random - Access Range + Returned Range Category: The range + category of rng.

        diff --git a/doc/html/range/reference/adaptors/reference/tokenized.html b/doc/html/range/reference/adaptors/reference/tokenized.html index 66e5cd7..2c3826b 100644 --- a/doc/html/range/reference/adaptors/reference/tokenized.html +++ b/doc/html/range/reference/adaptors/reference/tokenized.html @@ -24,7 +24,7 @@

        @@ -88,30 +88,32 @@
        • +

          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. -
            • + 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. -
            • + i has the type + int. +
            • - the value_type - of rndRng is - int. -
            • + the value_type + of rndRng is + int. +
            • - flags has the - type regex_constants::syntax_option_type. -
            • + 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 diff --git a/doc/html/range/reference/adaptors/reference/transformed.html b/doc/html/range/reference/adaptors/reference/transformed.html index 9631986..139247c 100644 --- a/doc/html/range/reference/adaptors/reference/transformed.html +++ b/doc/html/range/reference/adaptors/reference/transformed.html @@ -24,11 +24,10 @@
          - +
          @@ -103,8 +102,8 @@

          diff --git a/doc/html/range/reference/adaptors/reference/uniqued.html b/doc/html/range/reference/adaptors/reference/uniqued.html index 6ab4c59..75552a7 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -7,7 +7,7 @@ - +

          @@ -24,10 +24,10 @@
          @@ -94,8 +94,8 @@

          diff --git a/doc/html/range/reference/algorithms.html b/doc/html/range/reference/algorithms.html index 0bc9f39..bd65e72 100644 --- a/doc/html/range/reference/algorithms.html +++ b/doc/html/range/reference/algorithms.html @@ -1,13 +1,13 @@ -Range Algorithm +Range Algorithms - +

          @@ -20,24 +20,24 @@

          -PrevUpHomeNext +PrevUpHomeNext
          @@ -50,7 +50,7 @@

          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/range/reference/algorithms/heap.html b/doc/html/range/reference/algorithms/heap.html index 045ea7b..66d79ce 100644 --- a/doc/html/range/reference/algorithms/heap.html +++ b/doc/html/range/reference/algorithms/heap.html @@ -5,7 +5,7 @@ - + @@ -24,13 +24,13 @@
          diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index d241d0f..daec516 100644 --- a/doc/html/range/reference/algorithms/heap/make_heap.html +++ b/doc/html/range/reference/algorithms/heap/make_heap.html @@ -24,10 +24,10 @@
          - + 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 0fc429c..56a9532 100644 --- a/doc/html/range/reference/algorithms/heap/pop_heap.html +++ b/doc/html/range/reference/algorithms/heap/pop_heap.html @@ -24,10 +24,10 @@

          - + 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:
            @@ -132,7 +132,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 7b304da..23b851f 100644 --- a/doc/html/range/reference/algorithms/heap/push_heap.html +++ b/doc/html/range/reference/algorithms/heap/push_heap.html @@ -24,10 +24,10 @@

          - + 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:
            @@ -132,7 +132,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 36ac8dc..7d2a3cc 100644 --- a/doc/html/range/reference/algorithms/heap/sort_heap.html +++ b/doc/html/range/reference/algorithms/heap/sort_heap.html @@ -24,10 +24,10 @@

          - + 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/introduction.html b/doc/html/range/reference/algorithms/introduction.html new file mode 100644 index 0000000..708e794 --- /dev/null +++ b/doc/html/range/reference/algorithms/introduction.html @@ -0,0 +1,257 @@ + + + +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.end() several times will be more expensive + than using a range algorithm. +

          +
          + + + +
          +
          +
          +PrevUpHomeNext +
          + + diff --git a/doc/html/range/reference/algorithms/mutating.html b/doc/html/range/reference/algorithms/mutating.html index 7a7d945..ad51a61 100644 --- a/doc/html/range/reference/algorithms/mutating.html +++ b/doc/html/range/reference/algorithms/mutating.html @@ -5,8 +5,8 @@ - - + + @@ -20,59 +20,43 @@
          -PrevUpHomeNext +PrevUpHomeNext
          @@ -85,7 +69,7 @@

          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/range/reference/algorithms/mutating/copy.html b/doc/html/range/reference/algorithms/mutating/copy.html index 8aabe6a..13789c6 100644 --- a/doc/html/range/reference/algorithms/mutating/copy.html +++ b/doc/html/range/reference/algorithms/mutating/copy.html @@ -24,10 +24,10 @@
          - + 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 6450b6a..f36c722 100644 --- a/doc/html/range/reference/algorithms/mutating/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -24,11 +24,10 @@

          - + Prototype

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

          - + Description

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

          - + Definition

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

          - + Requirements
            @@ -88,7 +87,7 @@
          - + Precondition:
            @@ -102,7 +101,7 @@
          - + Complexity

          diff --git a/doc/html/range/reference/algorithms/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index f3130ae..79a0ab7 100644 --- a/doc/html/range/reference/algorithms/mutating/fill.html +++ b/doc/html/range/reference/algorithms/mutating/fill.html @@ -24,10 +24,10 @@

          - + 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 50abf67..8fb74fc 100644 --- a/doc/html/range/reference/algorithms/mutating/fill_n.html +++ b/doc/html/range/reference/algorithms/mutating/fill_n.html @@ -24,10 +24,10 @@

          - + 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 b53a312..062a669 100644 --- a/doc/html/range/reference/algorithms/mutating/generate.html +++ b/doc/html/range/reference/algorithms/mutating/generate.html @@ -24,10 +24,10 @@

          - + 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 8980d1a..fa95e8c 100644 --- a/doc/html/range/reference/algorithms/mutating/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -24,11 +24,10 @@

          - + Prototype

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

          - + Description

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

          - + Definition

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

          - + Requirements

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

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

      diff --git a/doc/html/range/reference/algorithms/mutating/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html index 83e88b7..93aef7b 100644 --- a/doc/html/range/reference/algorithms/mutating/merge.html +++ b/doc/html/range/reference/algorithms/mutating/merge.html @@ -24,10 +24,10 @@

      - + 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:
    @@ -194,7 +194,7 @@
    - + For the predicate version:
    @@ -230,7 +230,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 bd42f1f..8153757 100644 --- a/doc/html/range/reference/algorithms/mutating/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -70,14 +69,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 +127,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 c0445f4..fe4900c 100644 --- a/doc/html/range/reference/algorithms/mutating/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -75,14 +74,14 @@ predicate instead.

    - + Definition

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

    - + Requirements

    @@ -133,7 +132,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html index 0cdf0d9..bd70b83 100644 --- a/doc/html/range/reference/algorithms/mutating/partition.html +++ b/doc/html/range/reference/algorithms/mutating/partition.html @@ -24,10 +24,10 @@

    - + 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 ce742b5..976310c 100644 --- a/doc/html/range/reference/algorithms/mutating/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index 1017fa8..3c0096d 100644 --- a/doc/html/range/reference/algorithms/mutating/remove.html +++ b/doc/html/range/reference/algorithms/mutating/remove.html @@ -24,10 +24,10 @@

    - + 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 9b69dec..b5539a1 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -54,14 +53,14 @@ rng for which x == val is false.

    - + Definition

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

    - + Requirements
      @@ -84,7 +83,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 b21f8c9..477027e 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -55,14 +54,14 @@ is false.

    - + Definition

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

    - + Requirements
      @@ -80,7 +79,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 492ee63..d1a92c7 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_if.html @@ -24,10 +24,10 @@

    - + 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 c68005f..a9a0fad 100644 --- a/doc/html/range/reference/algorithms/mutating/replace.html +++ b/doc/html/range/reference/algorithms/mutating/replace.html @@ -24,10 +24,10 @@

    - + 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 41b3d07..1410e90 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -54,14 +53,14 @@ x.

    - + Definition

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

    - + Requirements
      @@ -88,7 +87,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 1d9be73..fc1293d 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -52,14 +51,14 @@ : x.

    - + Definition

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

    - + Requirements
      @@ -90,7 +89,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 9730e67..f17b1d6 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

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

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index c32a5ea..5804734 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse.html +++ b/doc/html/range/reference/algorithms/mutating/reverse.html @@ -24,10 +24,10 @@

    - + 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 3a94e8a..a276a3c 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse_copy.html +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -50,14 +49,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 +75,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index 1d4646c..e96b720 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate.html +++ b/doc/html/range/reference/algorithms/mutating/rotate.html @@ -24,10 +24,10 @@

    - + 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 c1d3434..d309871 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate_copy.html +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -52,14 +51,14 @@ and [middle, end(rng)) to out.

    - + Definition

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

    - + Requirements
      @@ -77,7 +76,7 @@
    - + Precondition:
      @@ -89,7 +88,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index aac3921..94606d7 100644 --- a/doc/html/range/reference/algorithms/mutating/sort.html +++ b/doc/html/range/reference/algorithms/mutating/sort.html @@ -24,10 +24,10 @@

    - + 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 8450d4c..dcb0dc0 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -83,14 +82,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 +107,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 5bb61fb..e5aa6f0 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -130,7 +129,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 956694f..af0f471 100644 --- a/doc/html/range/reference/algorithms/mutating/swap_ranges.html +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -50,14 +49,14 @@ Returns a reference to rng2.

    - + Definition

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

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

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index 056255e..bf64cd8 100644 --- a/doc/html/range/reference/algorithms/mutating/transform.html +++ b/doc/html/range/reference/algorithms/mutating/transform.html @@ -24,10 +24,10 @@

    - + 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:

    @@ -203,7 +203,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 2a7bae6..5c41c64 100644 --- a/doc/html/range/reference/algorithms/mutating/unique.html +++ b/doc/html/range/reference/algorithms/mutating/unique.html @@ -24,10 +24,10 @@

    - + 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 1b0c570..c6fb421 100644 --- a/doc/html/range/reference/algorithms/mutating/unique_copy.html +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -56,14 +55,14 @@ value type.

    - + Definition

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

    - + Requirements

    @@ -117,7 +116,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/new.html b/doc/html/range/reference/algorithms/new.html index 2fc36d9..e0451a8 100644 --- a/doc/html/range/reference/algorithms/new.html +++ b/doc/html/range/reference/algorithms/new.html @@ -5,7 +5,7 @@ - + @@ -24,21 +24,20 @@

    diff --git a/doc/html/range/reference/algorithms/new/copy_n.html b/doc/html/range/reference/algorithms/new/copy_n.html index 593724d..639b2e1 100644 --- a/doc/html/range/reference/algorithms/new/copy_n.html +++ b/doc/html/range/reference/algorithms/new/copy_n.html @@ -24,10 +24,10 @@
    - + 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 c802ee7..f4ac9df 100644 --- a/doc/html/range/reference/algorithms/new/erase.html +++ b/doc/html/range/reference/algorithms/new/erase.html @@ -24,10 +24,10 @@

    - + 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 3f685d5..1ae9444 100644 --- a/doc/html/range/reference/algorithms/new/for_each.html +++ b/doc/html/range/reference/algorithms/new/for_each.html @@ -24,10 +24,10 @@

    - + 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 c9624e6..8537f05 100644 --- a/doc/html/range/reference/algorithms/new/insert.html +++ b/doc/html/range/reference/algorithms/new/insert.html @@ -24,10 +24,10 @@

    - + 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 5d932ee..7b42e6c 100644 --- a/doc/html/range/reference/algorithms/new/iota.html +++ b/doc/html/range/reference/algorithms/new/iota.html @@ -24,10 +24,10 @@

    - + 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
      @@ -73,7 +73,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 53b79f1..f258c14 100644 --- a/doc/html/range/reference/algorithms/new/is_sorted.html +++ b/doc/html/range/reference/algorithms/new/is_sorted.html @@ -24,10 +24,10 @@

    - + 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 c7de271..bf313f1 100644 --- a/doc/html/range/reference/algorithms/new/overwrite.html +++ b/doc/html/range/reference/algorithms/new/overwrite.html @@ -24,10 +24,10 @@

    - + 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
      @@ -88,7 +88,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 b74c4d5..613ce8d 100644 --- a/doc/html/range/reference/algorithms/new/push_back.html +++ b/doc/html/range/reference/algorithms/new/push_back.html @@ -24,10 +24,10 @@

    - + 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 1104cc2..92c7120 100644 --- a/doc/html/range/reference/algorithms/new/push_front.html +++ b/doc/html/range/reference/algorithms/new/push_front.html @@ -24,10 +24,10 @@

    - + 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 3136430..cfde406 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase.html +++ b/doc/html/range/reference/algorithms/new/remove_erase.html @@ -24,10 +24,10 @@

    - + 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 994dd02..04e006f 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -52,14 +51,14 @@ algorithm which merely rearranges elements.

    - + Definition

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

    - + Requirements
      @@ -73,7 +72,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating.html b/doc/html/range/reference/algorithms/non_mutating.html index ef22f2d..aca1179 100644 --- a/doc/html/range/reference/algorithms/non_mutating.html +++ b/doc/html/range/reference/algorithms/non_mutating.html @@ -5,7 +5,7 @@ - + @@ -24,45 +24,29 @@

    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 28aacf3..7d32670 100644 --- a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -24,11 +24,10 @@
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -143,7 +142,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 4c75b33..04b2085 100644 --- a/doc/html/range/reference/algorithms/non_mutating/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -129,7 +128,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 a7ec656..9f8af9b 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count.html +++ b/doc/html/range/reference/algorithms/non_mutating/count.html @@ -24,10 +24,10 @@

    - + 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 e56fb51..50e2737 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -51,14 +50,14 @@ is true.

    - + Definition

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

    - + Requirements
      @@ -81,7 +80,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 1576f3e..c97044f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal.html @@ -24,10 +24,10 @@

    - + 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 51536ec..d6855c4 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -155,7 +154,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 583c1cb..c3682da 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find.html +++ b/doc/html/range/reference/algorithms/non_mutating/find.html @@ -24,10 +24,10 @@

    - + 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 d4e9525..803708d 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -148,7 +147,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 0585184..35b5563 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 @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -86,14 +85,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 +146,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 df62ea8..ffada0c 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -64,14 +63,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 +89,7 @@
    - + Precondition:

    @@ -98,7 +97,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 413fc82..9115713 100644 --- a/doc/html/range/reference/algorithms/non_mutating/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
      @@ -90,7 +89,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 f3ea649..d1187e1 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -145,7 +144,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 e220c33..a6cfc87 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -148,7 +147,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 2b61404..31bacef 100644 --- a/doc/html/range/reference/algorithms/non_mutating/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -142,7 +141,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 1d91462..4421bf6 100644 --- a/doc/html/range/reference/algorithms/non_mutating/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -142,7 +141,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 484a7a0..f041699 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -118,14 +117,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 +185,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 16d35f0..6d81a59 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -183,7 +182,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 394072c..1c89d91 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search_n.html +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -64,14 +63,14 @@ and by a predicate when one is supplied.

    - + Definition

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

    - + Requirements

    @@ -125,7 +124,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 be7c7e7..ac195cf 100644 --- a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

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

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/numeric.html b/doc/html/range/reference/algorithms/numeric.html index 99b3631..b71fd54 100644 --- a/doc/html/range/reference/algorithms/numeric.html +++ b/doc/html/range/reference/algorithms/numeric.html @@ -5,7 +5,7 @@ - + @@ -24,16 +24,13 @@

    diff --git a/doc/html/range/reference/algorithms/numeric/accumulate.html b/doc/html/range/reference/algorithms/numeric/accumulate.html index 2243e8c..745af74 100644 --- a/doc/html/range/reference/algorithms/numeric/accumulate.html +++ b/doc/html/range/reference/algorithms/numeric/accumulate.html @@ -24,10 +24,10 @@
    - + 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 0bfe131..2d8368f 100644 --- a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

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

    @@ -154,7 +153,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 021ae08..b9d04bd 100644 --- a/doc/html/range/reference/algorithms/numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -113,7 +112,7 @@
    - + For the second version
    @@ -162,14 +161,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 e1d88c8..d322783 100644 --- a/doc/html/range/reference/algorithms/numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

    @@ -58,18 +57,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 +98,7 @@
    - + For the second version
    @@ -128,7 +127,7 @@
    - + Precondition:

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

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/permutation.html b/doc/html/range/reference/algorithms/permutation.html index cf2da0e..d596b34 100644 --- a/doc/html/range/reference/algorithms/permutation.html +++ b/doc/html/range/reference/algorithms/permutation.html @@ -5,7 +5,7 @@ - + @@ -24,14 +24,12 @@

    diff --git a/doc/html/range/reference/algorithms/permutation/next_permutation.html b/doc/html/range/reference/algorithms/permutation/next_permutation.html index 73502be..4dd31f6 100644 --- a/doc/html/range/reference/algorithms/permutation/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -24,11 +24,10 @@
    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -125,7 +124,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 b1eb2bb..5ae4da0 100644 --- a/doc/html/range/reference/algorithms/permutation/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set.html b/doc/html/range/reference/algorithms/set.html index 2e0ae8b..2d31545 100644 --- a/doc/html/range/reference/algorithms/set.html +++ b/doc/html/range/reference/algorithms/set.html @@ -5,7 +5,7 @@ - + @@ -24,16 +24,14 @@

    diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index dc960b9..217e3ea 100644 --- a/doc/html/range/reference/algorithms/set/includes.html +++ b/doc/html/range/reference/algorithms/set/includes.html @@ -24,10 +24,10 @@
    - + 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 80c4cff..c6bb0e4 100644 --- a/doc/html/range/reference/algorithms/set/set_difference.html +++ b/doc/html/range/reference/algorithms/set/set_difference.html @@ -24,10 +24,10 @@

    - + 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 cde3eb5..4430baa 100644 --- a/doc/html/range/reference/algorithms/set/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -182,7 +181,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 4be44e6..6ed6157 100644 --- a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -24,11 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -186,7 +185,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 b963850..e43ef7c 100644 --- a/doc/html/range/reference/algorithms/set/set_union.html +++ b/doc/html/range/reference/algorithms/set/set_union.html @@ -24,10 +24,10 @@

    - + 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 index f2c4792..3c57172 100644 --- a/doc/html/range/reference/concept_implementation.html +++ b/doc/html/range/reference/concept_implementation.html @@ -24,7 +24,7 @@

    diff --git a/doc/html/range/reference/concept_implementation/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 55a2106..d5eaba3 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@
    Functions
    - + notation
    diff --git a/doc/html/range/reference/concept_implementation/semantics/functions.html b/doc/html/range/reference/concept_implementation/semantics/functions.html index 895d32d..318dec3 100644 --- a/doc/html/range/reference/concept_implementation/semantics/functions.html +++ b/doc/html/range/reference/concept_implementation/semantics/functions.html @@ -168,8 +168,27 @@ + + + +

    - boost::end(x) - - boost::begin(x) + The size + of the + range with + complexity O(1). For + RandomAccessRanges this is + achieved via + boost::end(x) + - boost::begin(x). For + other traversal + categories range_calculate_size(x) is + returned. + Note that + unless range_calculate_size(x) has + been implemented + by the + user as + an extension + then the + Argument Dependent + Lookup will + return x.size()

    diff --git a/doc/html/range/reference/extending.html b/doc/html/range/reference/extending.html index 8ca7be8..6d418a1 100644 --- a/doc/html/range/reference/extending.html +++ b/doc/html/range/reference/extending.html @@ -24,14 +24,14 @@ diff --git a/doc/html/range/reference/extending/method_1.html b/doc/html/range/reference/extending/method_1.html index 910d2de..24b054c 100644 --- a/doc/html/range/reference/extending/method_1.html +++ b/doc/html/range/reference/extending/method_1.html @@ -24,7 +24,7 @@

    diff --git a/doc/html/range/reference/extending/method_2.html b/doc/html/range/reference/extending/method_2.html index 3828c8b..24e9a37 100644 --- a/doc/html/range/reference/extending/method_2.html +++ b/doc/html/range/reference/extending/method_2.html @@ -24,7 +24,7 @@

    +

    + range_calculate_size(x) +

    +
    +

    + Optional. This can be used to specify a mechanism for constant-time + computation of the size of a range. The default behaviour is + to return boost::end(x) - + boost::begin(x) + for random access ranges, and to return x.size() for ranges with lesser traversal + capability. This behaviour can be changed by implementing range_calculate_size in a manner + that will be found via ADL. The ability to calculate size in + O(1) is often possible even with ranges with traversal categories + less than random access. +

    +

    diff --git a/doc/html/range/reference/extending/method_3.html b/doc/html/range/reference/extending/method_3.html index 2ec9d4d..3cee703 100644 --- a/doc/html/range/reference/extending/method_3.html +++ b/doc/html/range/reference/extending/method_3.html @@ -24,13 +24,13 @@

    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 3c038e6..07c18f9 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 @@ -24,7 +24,7 @@

    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 1f2102d..cb5235a 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 @@ -24,7 +24,7 @@

      diff --git a/doc/html/range/reference/ranges.html b/doc/html/range/reference/ranges.html index 6f8c5af..7ebd43e 100644 --- a/doc/html/range/reference/ranges.html +++ b/doc/html/range/reference/ranges.html @@ -24,12 +24,12 @@
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 01d404d..6d2f8c2 100644 --- a/doc/html/range/reference/ranges/counting_range.html +++ b/doc/html/range/reference/ranges/counting_range.html @@ -24,10 +24,10 @@
    - + 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 3beff0b..1f518eb 100644 --- a/doc/html/range/reference/ranges/irange.html +++ b/doc/html/range/reference/ranges/irange.html @@ -24,10 +24,10 @@
    - + 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
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index df2709c..bbe1429 100644 --- a/doc/html/range/reference/ranges/istream_range.html +++ b/doc/html/range/reference/ranges/istream_range.html @@ -24,10 +24,10 @@

    - + Prototype

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

    - + Description

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

    - + Definition

    diff --git a/doc/html/range/reference/utilities.html b/doc/html/range/reference/utilities.html index 45e60d3..f4b5c90 100644 --- a/doc/html/range/reference/utilities.html +++ b/doc/html/range/reference/utilities.html @@ -24,12 +24,12 @@

    Having an abstraction that encapsulates a pair of iterators is very useful. diff --git a/doc/html/range/reference/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index fb41371..827172d 100644 --- a/doc/html/range/reference/utilities/iterator_range.html +++ b/doc/html/range/reference/utilities/iterator_range.html @@ -24,7 +24,7 @@

    The intention of the iterator_range @@ -48,7 +48,7 @@ type.

    - + Synopsis

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

    - + Details member functions
    @@ -207,7 +207,7 @@ == r.end();

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index a06440d..5031ccb 100644 --- a/doc/html/range/reference/utilities/join.html +++ b/doc/html/range/reference/utilities/join.html @@ -24,7 +24,7 @@

    The intention of the join @@ -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 ebbf648..51aaecd 100644 --- a/doc/html/range/reference/utilities/sub_range.html +++ b/doc/html/range/reference/utilities/sub_range.html @@ -24,7 +24,7 @@

    The sub_range class inherits @@ -35,7 +35,7 @@ is.

    - + Synopsis

    diff --git a/doc/html/range/style_guide.html b/doc/html/range/style_guide.html index c5e6877..5e36efd 100644 --- a/doc/html/range/style_guide.html +++ b/doc/html/range/style_guide.html @@ -7,7 +7,7 @@ - +

    @@ -20,11 +20,11 @@

    -PrevUpHomeNext +PrevUpHomeNext

    The use of a consistent terminology is as important for Ranges @@ -39,41 +39,43 @@

    @@ -62,7 +62,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/range/upgrade/upgrade_from_1_45.html b/doc/html/range/upgrade/upgrade_from_1_45.html new file mode 100644 index 0000000..542b5c9 --- /dev/null +++ b/doc/html/range/upgrade/upgrade_from_1_45.html @@ -0,0 +1,64 @@ + + + +Upgrade from version 1.45 + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
      +
    1. + size in addition to supporting + Random Access Range + now also supports extensibility via calls to the unqualified range_calculate_size(rng) + function. +
    2. +
    3. + strided + now in addition to working with any RandomAccessRange additionally works + for any SinglePassRange for which boost::size(rng) is valid. +
    4. +
    5. + strided + no longer requires distance(rng) % stride_size + == 0 + or stride_size < + distance(rng) +
    6. +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/introduction.qbk b/doc/introduction.qbk index 7fc83df..d03a65b 100644 --- a/doc/introduction.qbk +++ b/doc/introduction.qbk @@ -1,4 +1,9 @@ -[section Introduction] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:introduction 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. diff --git a/doc/mfc_atl.qbk b/doc/mfc_atl.qbk index 2a7bb9c..0511509 100644 --- a/doc/mfc_atl.qbk +++ b/doc/mfc_atl.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [def __mfc_collections__ [@http://msdn.microsoft.com/en-us/library/942860sh.aspx MFC Collection Classes]] [def __atl_collections__ [@http://msdn.microsoft.com/en-us/library/15e672bd.aspx ATL Collection Classes]] diff --git a/doc/portability.qbk b/doc/portability.qbk index b4aadbb..aed3825 100644 --- a/doc/portability.qbk +++ b/doc/portability.qbk @@ -1,4 +1,9 @@ -[section Portability] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:portability Portability] A huge effort has been made to port the library to as many compilers as possible. diff --git a/doc/reference.qbk b/doc/reference.qbk index 76e210e..14cf8e8 100644 --- a/doc/reference.qbk +++ b/doc/reference.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:reference Reference] [include reference/overview.qbk] diff --git a/doc/reference/adaptors.qbk b/doc/reference/adaptors.qbk index 1b3fd9f..260fc39 100644 --- a/doc/reference/adaptors.qbk +++ b/doc/reference/adaptors.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:adaptors Range Adaptors] [section:introduction Introduction and motivation] diff --git a/doc/reference/adaptors/adjacent_filtered.qbk b/doc/reference/adaptors/adjacent_filtered.qbk index 1502d3b..4f092b8 100644 --- a/doc/reference/adaptors/adjacent_filtered.qbk +++ b/doc/reference/adaptors/adjacent_filtered.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:adjacent_filtered adjacent_filtered] [table diff --git a/doc/reference/adaptors/copied.qbk b/doc/reference/adaptors/copied.qbk index dbdeb4b..69ee46d 100644 --- a/doc/reference/adaptors/copied.qbk +++ b/doc/reference/adaptors/copied.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:copied copied] [table diff --git a/doc/reference/adaptors/examples/adjacent_filtered.cpp b/doc/reference/adaptors/examples/adjacent_filtered.cpp index 70923f8..7830a1d 100644 --- a/doc/reference/adaptors/examples/adjacent_filtered.cpp +++ b/doc/reference/adaptors/examples/adjacent_filtered.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/copied.cpp b/doc/reference/adaptors/examples/copied.cpp index 0ab0ca2..2de46ab 100644 --- a/doc/reference/adaptors/examples/copied.cpp +++ b/doc/reference/adaptors/examples/copied.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/filtered.cpp b/doc/reference/adaptors/examples/filtered.cpp index 65242f3..6471237 100644 --- a/doc/reference/adaptors/examples/filtered.cpp +++ b/doc/reference/adaptors/examples/filtered.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/indexed.cpp b/doc/reference/adaptors/examples/indexed.cpp index 3dc31d1..3178457 100644 --- a/doc/reference/adaptors/examples/indexed.cpp +++ b/doc/reference/adaptors/examples/indexed.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/indirected.cpp b/doc/reference/adaptors/examples/indirected.cpp index 47cf493..efb9d13 100644 --- a/doc/reference/adaptors/examples/indirected.cpp +++ b/doc/reference/adaptors/examples/indirected.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/map_keys.cpp b/doc/reference/adaptors/examples/map_keys.cpp index 6c5fc44..006e7e9 100644 --- a/doc/reference/adaptors/examples/map_keys.cpp +++ b/doc/reference/adaptors/examples/map_keys.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/map_values.cpp b/doc/reference/adaptors/examples/map_values.cpp index 9442612..a0fa651 100644 --- a/doc/reference/adaptors/examples/map_values.cpp +++ b/doc/reference/adaptors/examples/map_values.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/replaced.cpp b/doc/reference/adaptors/examples/replaced.cpp index 7c8926b..7b85ba1 100644 --- a/doc/reference/adaptors/examples/replaced.cpp +++ b/doc/reference/adaptors/examples/replaced.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/replaced_if.cpp b/doc/reference/adaptors/examples/replaced_if.cpp index fedd364..23952f7 100644 --- a/doc/reference/adaptors/examples/replaced_if.cpp +++ b/doc/reference/adaptors/examples/replaced_if.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/reversed.cpp b/doc/reference/adaptors/examples/reversed.cpp index e2aa80c..85696cb 100644 --- a/doc/reference/adaptors/examples/reversed.cpp +++ b/doc/reference/adaptors/examples/reversed.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/sliced.cpp b/doc/reference/adaptors/examples/sliced.cpp index 6ce4b12..cc8b9cb 100644 --- a/doc/reference/adaptors/examples/sliced.cpp +++ b/doc/reference/adaptors/examples/sliced.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/strided.cpp b/doc/reference/adaptors/examples/strided.cpp index 4509758..f12b72a 100644 --- a/doc/reference/adaptors/examples/strided.cpp +++ b/doc/reference/adaptors/examples/strided.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/tokenized.cpp b/doc/reference/adaptors/examples/tokenized.cpp index b4e6371..273eaf1 100644 --- a/doc/reference/adaptors/examples/tokenized.cpp +++ b/doc/reference/adaptors/examples/tokenized.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/transformed.cpp b/doc/reference/adaptors/examples/transformed.cpp index 1508969..f2a46f5 100644 --- a/doc/reference/adaptors/examples/transformed.cpp +++ b/doc/reference/adaptors/examples/transformed.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/examples/uniqued.cpp b/doc/reference/adaptors/examples/uniqued.cpp index 0511ade..a7b2f8e 100644 --- a/doc/reference/adaptors/examples/uniqued.cpp +++ b/doc/reference/adaptors/examples/uniqued.cpp @@ -1,3 +1,12 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// #include #include #include diff --git a/doc/reference/adaptors/filtered.qbk b/doc/reference/adaptors/filtered.qbk index 02c826f..ea68b28 100644 --- a/doc/reference/adaptors/filtered.qbk +++ b/doc/reference/adaptors/filtered.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:filtered filtered] [table diff --git a/doc/reference/adaptors/indexed.qbk b/doc/reference/adaptors/indexed.qbk index f6eb23e..f5ba12e 100644 --- a/doc/reference/adaptors/indexed.qbk +++ b/doc/reference/adaptors/indexed.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:indexed indexed] [table diff --git a/doc/reference/adaptors/indirected.qbk b/doc/reference/adaptors/indirected.qbk index 44182fb..5e00c9d 100644 --- a/doc/reference/adaptors/indirected.qbk +++ b/doc/reference/adaptors/indirected.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:indirected indirected] [table diff --git a/doc/reference/adaptors/map_keys.qbk b/doc/reference/adaptors/map_keys.qbk index 831d88f..a1740ea 100644 --- a/doc/reference/adaptors/map_keys.qbk +++ b/doc/reference/adaptors/map_keys.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:map_keys map_keys] [table diff --git a/doc/reference/adaptors/map_values.qbk b/doc/reference/adaptors/map_values.qbk index a89b0e3..b0eb09d 100644 --- a/doc/reference/adaptors/map_values.qbk +++ b/doc/reference/adaptors/map_values.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:map_values map_values] [table diff --git a/doc/reference/adaptors/replaced.qbk b/doc/reference/adaptors/replaced.qbk index 3fe1cb8..4a03e28 100644 --- a/doc/reference/adaptors/replaced.qbk +++ b/doc/reference/adaptors/replaced.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:replaced replaced] [table diff --git a/doc/reference/adaptors/replaced_if.qbk b/doc/reference/adaptors/replaced_if.qbk index 0a67aae..0e615a0 100644 --- a/doc/reference/adaptors/replaced_if.qbk +++ b/doc/reference/adaptors/replaced_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:replaced_if replaced_if] [table diff --git a/doc/reference/adaptors/reversed.qbk b/doc/reference/adaptors/reversed.qbk index 56cf141..efcb5d9 100644 --- a/doc/reference/adaptors/reversed.qbk +++ b/doc/reference/adaptors/reversed.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:reversed reversed] [table diff --git a/doc/reference/adaptors/sliced.qbk b/doc/reference/adaptors/sliced.qbk index 275e4a8..0780e0f 100644 --- a/doc/reference/adaptors/sliced.qbk +++ b/doc/reference/adaptors/sliced.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:sliced sliced] [table diff --git a/doc/reference/adaptors/strided.qbk b/doc/reference/adaptors/strided.qbk index 5b7ddf2..0f57222 100644 --- a/doc/reference/adaptors/strided.qbk +++ b/doc/reference/adaptors/strided.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:strided strided] [table @@ -6,10 +11,10 @@ [[Function] [`boost::adaptors::stride(rng, n)`]] ] -* [*Precondition:] `0 <= n && n < distance(rng)` +* [*Precondition:] `0 <= n` and `boost::size(rng)` is a valid expression. * [*Returns:] A new range based on `rng` where traversal is performed in steps of `n`. -* [*Range Category:] __random_access_range__ -* [*Returned Range Category:] __random_access_range__ +* [*Range Category:] __single_pass_range__ +* [*Returned Range Category:] The range category of `rng`. [section:strided_example strided example] `` diff --git a/doc/reference/adaptors/tokenized.qbk b/doc/reference/adaptors/tokenized.qbk index 2b3a656..1589873 100644 --- a/doc/reference/adaptors/tokenized.qbk +++ b/doc/reference/adaptors/tokenized.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:tokenized tokenized] [table diff --git a/doc/reference/adaptors/transformed.qbk b/doc/reference/adaptors/transformed.qbk index f5bacf9..7b66f0d 100644 --- a/doc/reference/adaptors/transformed.qbk +++ b/doc/reference/adaptors/transformed.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:transformed transformed] [table diff --git a/doc/reference/adaptors/uniqued.qbk b/doc/reference/adaptors/uniqued.qbk index b7565a0..3ef21e6 100644 --- a/doc/reference/adaptors/uniqued.qbk +++ b/doc/reference/adaptors/uniqued.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:uniqued uniqued] [table diff --git a/doc/reference/algorithm/adjacent_find.qbk b/doc/reference/algorithm/adjacent_find.qbk index 23c3cf8..67d78d4 100644 --- a/doc/reference/algorithm/adjacent_find.qbk +++ b/doc/reference/algorithm/adjacent_find.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:adjacent_find adjacent_find] [heading Prototype] diff --git a/doc/reference/algorithm/binary_search.qbk b/doc/reference/algorithm/binary_search.qbk index 542906f..42031b3 100644 --- a/doc/reference/algorithm/binary_search.qbk +++ b/doc/reference/algorithm/binary_search.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:binary_search binary_search] [heading Prototype] diff --git a/doc/reference/algorithm/copy.qbk b/doc/reference/algorithm/copy.qbk index e959825..e40f1b1 100644 --- a/doc/reference/algorithm/copy.qbk +++ b/doc/reference/algorithm/copy.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:copy copy] [heading Prototype] diff --git a/doc/reference/algorithm/copy_backward.qbk b/doc/reference/algorithm/copy_backward.qbk index f571aff..8fdac5a 100644 --- a/doc/reference/algorithm/copy_backward.qbk +++ b/doc/reference/algorithm/copy_backward.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:copy_backward copy_backward] [heading Prototype] diff --git a/doc/reference/algorithm/count.qbk b/doc/reference/algorithm/count.qbk index 3a41ec8..a84af3c 100644 --- a/doc/reference/algorithm/count.qbk +++ b/doc/reference/algorithm/count.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:count count] [heading Prototype] diff --git a/doc/reference/algorithm/count_if.qbk b/doc/reference/algorithm/count_if.qbk index c2ee4bd..b95cc91 100644 --- a/doc/reference/algorithm/count_if.qbk +++ b/doc/reference/algorithm/count_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:count_if count_if] [heading Prototype] diff --git a/doc/reference/algorithm/equal.qbk b/doc/reference/algorithm/equal.qbk index 278fe45..37d1c02 100644 --- a/doc/reference/algorithm/equal.qbk +++ b/doc/reference/algorithm/equal.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:equal equal] [heading Prototype] diff --git a/doc/reference/algorithm/equal_range.qbk b/doc/reference/algorithm/equal_range.qbk index 6d9650a..2d6c342 100644 --- a/doc/reference/algorithm/equal_range.qbk +++ b/doc/reference/algorithm/equal_range.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:equal_range equal_range] [heading Prototype] diff --git a/doc/reference/algorithm/fill.qbk b/doc/reference/algorithm/fill.qbk index a401046..4df2c0f 100644 --- a/doc/reference/algorithm/fill.qbk +++ b/doc/reference/algorithm/fill.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:fill fill] [heading Prototype] diff --git a/doc/reference/algorithm/fill_n.qbk b/doc/reference/algorithm/fill_n.qbk index 0ca27af..6458255 100644 --- a/doc/reference/algorithm/fill_n.qbk +++ b/doc/reference/algorithm/fill_n.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:fill_n fill_n] [heading Prototype] diff --git a/doc/reference/algorithm/find.qbk b/doc/reference/algorithm/find.qbk index 38d5507..ba57637 100644 --- a/doc/reference/algorithm/find.qbk +++ b/doc/reference/algorithm/find.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:find find] [heading Prototype] diff --git a/doc/reference/algorithm/find_end.qbk b/doc/reference/algorithm/find_end.qbk index a5999ce..dff17cd 100644 --- a/doc/reference/algorithm/find_end.qbk +++ b/doc/reference/algorithm/find_end.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:find_end find_end] [heading Prototype] diff --git a/doc/reference/algorithm/find_first_of.qbk b/doc/reference/algorithm/find_first_of.qbk index a6af825..d10d986 100644 --- a/doc/reference/algorithm/find_first_of.qbk +++ b/doc/reference/algorithm/find_first_of.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:find_first_of find_first_of] [heading Prototype] diff --git a/doc/reference/algorithm/find_if.qbk b/doc/reference/algorithm/find_if.qbk index 862d8a1..12ff91b 100644 --- a/doc/reference/algorithm/find_if.qbk +++ b/doc/reference/algorithm/find_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:find_if find_if] [heading Prototype] diff --git a/doc/reference/algorithm/for_each.qbk b/doc/reference/algorithm/for_each.qbk index a11530c..3661368 100644 --- a/doc/reference/algorithm/for_each.qbk +++ b/doc/reference/algorithm/for_each.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:for_each for_each] [heading Prototype] diff --git a/doc/reference/algorithm/generate.qbk b/doc/reference/algorithm/generate.qbk index 0bbc345..3d19664 100644 --- a/doc/reference/algorithm/generate.qbk +++ b/doc/reference/algorithm/generate.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:generate generate] [heading Prototype] diff --git a/doc/reference/algorithm/includes.qbk b/doc/reference/algorithm/includes.qbk index 5b7eb84..5f1ca5f 100644 --- a/doc/reference/algorithm/includes.qbk +++ b/doc/reference/algorithm/includes.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:includes includes] [heading Prototype] diff --git a/doc/reference/algorithm/inplace_merge.qbk b/doc/reference/algorithm/inplace_merge.qbk index d4c2a9c..015d9bb 100644 --- a/doc/reference/algorithm/inplace_merge.qbk +++ b/doc/reference/algorithm/inplace_merge.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:inplace_merge inplace_merge] [heading Prototype] diff --git a/doc/reference/algorithm/lexicographical_compare.qbk b/doc/reference/algorithm/lexicographical_compare.qbk index 16d155d..c8fad4b 100644 --- a/doc/reference/algorithm/lexicographical_compare.qbk +++ b/doc/reference/algorithm/lexicographical_compare.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:lexicographical_compare lexicographical_compare] [heading Prototype] diff --git a/doc/reference/algorithm/lower_bound.qbk b/doc/reference/algorithm/lower_bound.qbk index 6228928..58ed287 100644 --- a/doc/reference/algorithm/lower_bound.qbk +++ b/doc/reference/algorithm/lower_bound.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:lower_bound lower_bound] [heading Prototype] diff --git a/doc/reference/algorithm/make_heap.qbk b/doc/reference/algorithm/make_heap.qbk index 13238fc..df47fac 100644 --- a/doc/reference/algorithm/make_heap.qbk +++ b/doc/reference/algorithm/make_heap.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:make_heap make_heap] [heading Prototype] diff --git a/doc/reference/algorithm/max_element.qbk b/doc/reference/algorithm/max_element.qbk index 35cc0ed..01101a5 100644 --- a/doc/reference/algorithm/max_element.qbk +++ b/doc/reference/algorithm/max_element.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:max_element max_element] [heading Prototype] diff --git a/doc/reference/algorithm/merge.qbk b/doc/reference/algorithm/merge.qbk index 96d547c..e838358 100644 --- a/doc/reference/algorithm/merge.qbk +++ b/doc/reference/algorithm/merge.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:merge merge] [heading Prototype] diff --git a/doc/reference/algorithm/min_element.qbk b/doc/reference/algorithm/min_element.qbk index 3977f09..3895532 100644 --- a/doc/reference/algorithm/min_element.qbk +++ b/doc/reference/algorithm/min_element.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:min_element min_element] [heading Prototype] diff --git a/doc/reference/algorithm/mismatch.qbk b/doc/reference/algorithm/mismatch.qbk index 562fdb5..eb23928 100644 --- a/doc/reference/algorithm/mismatch.qbk +++ b/doc/reference/algorithm/mismatch.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:mismatch mismatch] [heading Prototype] diff --git a/doc/reference/algorithm/next_permutation.qbk b/doc/reference/algorithm/next_permutation.qbk index 3da1383..4a8dc21 100644 --- a/doc/reference/algorithm/next_permutation.qbk +++ b/doc/reference/algorithm/next_permutation.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:next_permutation next_permutation] [heading Prototype] diff --git a/doc/reference/algorithm/nth_element.qbk b/doc/reference/algorithm/nth_element.qbk index 57c1d37..9bd785e 100644 --- a/doc/reference/algorithm/nth_element.qbk +++ b/doc/reference/algorithm/nth_element.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:nth_element nth_element] [heading Prototype] diff --git a/doc/reference/algorithm/partial_sort.qbk b/doc/reference/algorithm/partial_sort.qbk index 6548672..e2b8876 100644 --- a/doc/reference/algorithm/partial_sort.qbk +++ b/doc/reference/algorithm/partial_sort.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:partial_sort partial_sort] [heading Prototype] diff --git a/doc/reference/algorithm/partition.qbk b/doc/reference/algorithm/partition.qbk index 272c0e3..8ae28e5 100644 --- a/doc/reference/algorithm/partition.qbk +++ b/doc/reference/algorithm/partition.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:partition partition] [heading Prototype] diff --git a/doc/reference/algorithm/pop_heap.qbk b/doc/reference/algorithm/pop_heap.qbk index 8b3d900..6950704 100644 --- a/doc/reference/algorithm/pop_heap.qbk +++ b/doc/reference/algorithm/pop_heap.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:pop_heap pop_heap] [heading Prototype] diff --git a/doc/reference/algorithm/prev_permutation.qbk b/doc/reference/algorithm/prev_permutation.qbk index d40eb6a..6d20431 100644 --- a/doc/reference/algorithm/prev_permutation.qbk +++ b/doc/reference/algorithm/prev_permutation.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:prev_permutation prev_permutation] [heading Prototype] diff --git a/doc/reference/algorithm/push_heap.qbk b/doc/reference/algorithm/push_heap.qbk index ddc7df2..8aff8c2 100644 --- a/doc/reference/algorithm/push_heap.qbk +++ b/doc/reference/algorithm/push_heap.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:push_heap push_heap] [heading Prototype] diff --git a/doc/reference/algorithm/random_shuffle.qbk b/doc/reference/algorithm/random_shuffle.qbk index 8f94696..b092c36 100644 --- a/doc/reference/algorithm/random_shuffle.qbk +++ b/doc/reference/algorithm/random_shuffle.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:random_shuffle random_shuffle] [heading Prototype] diff --git a/doc/reference/algorithm/remove.qbk b/doc/reference/algorithm/remove.qbk index 9e7380c..f26b277 100644 --- a/doc/reference/algorithm/remove.qbk +++ b/doc/reference/algorithm/remove.qbk @@ -1,5 +1,9 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:remove remove] - [heading Prototype] `` @@ -53,6 +57,4 @@ Defined in the header file `boost/range/algorithm/remove.hpp` Linear. `remove` performs exactly `distance(rng)` comparisons for equality. -[endsect] - - +[endsect] \ No newline at end of file diff --git a/doc/reference/algorithm/remove_copy.qbk b/doc/reference/algorithm/remove_copy.qbk index 9236396..b98da47 100644 --- a/doc/reference/algorithm/remove_copy.qbk +++ b/doc/reference/algorithm/remove_copy.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:remove_copy remove_copy] [heading Prototype] diff --git a/doc/reference/algorithm/remove_copy_if.qbk b/doc/reference/algorithm/remove_copy_if.qbk index b94dae2..d56647b 100644 --- a/doc/reference/algorithm/remove_copy_if.qbk +++ b/doc/reference/algorithm/remove_copy_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:remove_copy_if remove_copy_if] [heading Prototype] diff --git a/doc/reference/algorithm/remove_if.qbk b/doc/reference/algorithm/remove_if.qbk index 1250aba..64b6ac3 100644 --- a/doc/reference/algorithm/remove_if.qbk +++ b/doc/reference/algorithm/remove_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:remove_if remove_if] [heading Prototype] diff --git a/doc/reference/algorithm/replace.qbk b/doc/reference/algorithm/replace.qbk index 6b33666..27b6c1b 100644 --- a/doc/reference/algorithm/replace.qbk +++ b/doc/reference/algorithm/replace.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:replace replace] [heading Prototype] diff --git a/doc/reference/algorithm/replace_copy.qbk b/doc/reference/algorithm/replace_copy.qbk index 72478ea..e936fc0 100644 --- a/doc/reference/algorithm/replace_copy.qbk +++ b/doc/reference/algorithm/replace_copy.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:replace_copy replace_copy] [heading Prototype] diff --git a/doc/reference/algorithm/replace_copy_if.qbk b/doc/reference/algorithm/replace_copy_if.qbk index 19a1946..13305a7 100644 --- a/doc/reference/algorithm/replace_copy_if.qbk +++ b/doc/reference/algorithm/replace_copy_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:replace_copy_if replace_copy_if] [heading Prototype] diff --git a/doc/reference/algorithm/replace_if.qbk b/doc/reference/algorithm/replace_if.qbk index e12202e..18480a9 100644 --- a/doc/reference/algorithm/replace_if.qbk +++ b/doc/reference/algorithm/replace_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:replace_if replace_if] [heading Prototype] diff --git a/doc/reference/algorithm/reverse.qbk b/doc/reference/algorithm/reverse.qbk index d6bd00f..6ecb31b 100644 --- a/doc/reference/algorithm/reverse.qbk +++ b/doc/reference/algorithm/reverse.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:reverse reverse] [heading Prototype] diff --git a/doc/reference/algorithm/reverse_copy.qbk b/doc/reference/algorithm/reverse_copy.qbk index d7d087e..b19ed9f 100644 --- a/doc/reference/algorithm/reverse_copy.qbk +++ b/doc/reference/algorithm/reverse_copy.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:reverse_copy reverse_copy] [heading Prototype] diff --git a/doc/reference/algorithm/rotate.qbk b/doc/reference/algorithm/rotate.qbk index 66b6f45..e28641b 100644 --- a/doc/reference/algorithm/rotate.qbk +++ b/doc/reference/algorithm/rotate.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:rotate rotate] [heading Prototype] diff --git a/doc/reference/algorithm/rotate_copy.qbk b/doc/reference/algorithm/rotate_copy.qbk index 838524a..0f11bdc 100644 --- a/doc/reference/algorithm/rotate_copy.qbk +++ b/doc/reference/algorithm/rotate_copy.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:rotate_copy rotate_copy] [heading Prototype] diff --git a/doc/reference/algorithm/search.qbk b/doc/reference/algorithm/search.qbk index e6c0a85..5c2c2a8 100644 --- a/doc/reference/algorithm/search.qbk +++ b/doc/reference/algorithm/search.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:search search] [heading Prototype] diff --git a/doc/reference/algorithm/search_n.qbk b/doc/reference/algorithm/search_n.qbk index 3f3ef10..ad8cbd2 100644 --- a/doc/reference/algorithm/search_n.qbk +++ b/doc/reference/algorithm/search_n.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:search_n search_n] [heading Prototype] diff --git a/doc/reference/algorithm/set_difference.qbk b/doc/reference/algorithm/set_difference.qbk index cd9724d..8ab5091 100644 --- a/doc/reference/algorithm/set_difference.qbk +++ b/doc/reference/algorithm/set_difference.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:set_difference set_difference] [heading Prototype] diff --git a/doc/reference/algorithm/set_intersection.qbk b/doc/reference/algorithm/set_intersection.qbk index 3c4e984..3d46109 100644 --- a/doc/reference/algorithm/set_intersection.qbk +++ b/doc/reference/algorithm/set_intersection.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:set_intersection set_intersection] [heading Prototype] diff --git a/doc/reference/algorithm/set_symmetric_difference.qbk b/doc/reference/algorithm/set_symmetric_difference.qbk index 4c6ed3e..9110cf0 100644 --- a/doc/reference/algorithm/set_symmetric_difference.qbk +++ b/doc/reference/algorithm/set_symmetric_difference.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:set_symmetric_difference set_symmetric_difference] [heading Prototype] diff --git a/doc/reference/algorithm/set_union.qbk b/doc/reference/algorithm/set_union.qbk index 3788781..679ec71 100644 --- a/doc/reference/algorithm/set_union.qbk +++ b/doc/reference/algorithm/set_union.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:set_union set_union] [heading Prototype] diff --git a/doc/reference/algorithm/sort.qbk b/doc/reference/algorithm/sort.qbk index 16fcfc4..3027c89 100644 --- a/doc/reference/algorithm/sort.qbk +++ b/doc/reference/algorithm/sort.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:sort sort] [heading Prototype] diff --git a/doc/reference/algorithm/sort_heap.qbk b/doc/reference/algorithm/sort_heap.qbk index 13e4133..b065ce5 100644 --- a/doc/reference/algorithm/sort_heap.qbk +++ b/doc/reference/algorithm/sort_heap.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:sort_heap sort_heap] [heading Prototype] diff --git a/doc/reference/algorithm/stable_partition.qbk b/doc/reference/algorithm/stable_partition.qbk index 8b20710..a820bcd 100644 --- a/doc/reference/algorithm/stable_partition.qbk +++ b/doc/reference/algorithm/stable_partition.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:stable_partition stable_partition] [heading Prototype] diff --git a/doc/reference/algorithm/stable_sort.qbk b/doc/reference/algorithm/stable_sort.qbk index bb6b64a..502551f 100644 --- a/doc/reference/algorithm/stable_sort.qbk +++ b/doc/reference/algorithm/stable_sort.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:stable_sort stable_sort] [heading Prototype] diff --git a/doc/reference/algorithm/swap_ranges.qbk b/doc/reference/algorithm/swap_ranges.qbk index f761ec4..9dcb764 100644 --- a/doc/reference/algorithm/swap_ranges.qbk +++ b/doc/reference/algorithm/swap_ranges.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:swap_ranges swap_ranges] [heading Prototype] diff --git a/doc/reference/algorithm/transform.qbk b/doc/reference/algorithm/transform.qbk index 49df721..d1e5ac4 100644 --- a/doc/reference/algorithm/transform.qbk +++ b/doc/reference/algorithm/transform.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:transform transform] [heading Prototype] diff --git a/doc/reference/algorithm/unique.qbk b/doc/reference/algorithm/unique.qbk index 56a2283..bc2cdce 100644 --- a/doc/reference/algorithm/unique.qbk +++ b/doc/reference/algorithm/unique.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:unique unique] [heading Prototype] diff --git a/doc/reference/algorithm/unique_copy.qbk b/doc/reference/algorithm/unique_copy.qbk index 1c311b6..f10a85f 100644 --- a/doc/reference/algorithm/unique_copy.qbk +++ b/doc/reference/algorithm/unique_copy.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:unique_copy unique_copy] [heading Prototype] diff --git a/doc/reference/algorithm/upper_bound.qbk b/doc/reference/algorithm/upper_bound.qbk index 7882410..cb79aee 100644 --- a/doc/reference/algorithm/upper_bound.qbk +++ b/doc/reference/algorithm/upper_bound.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:upper_bound upper_bound] [heading Prototype] diff --git a/doc/reference/algorithm_ext/copy_n.qbk b/doc/reference/algorithm_ext/copy_n.qbk index 8d0481f..6b34c7b 100644 --- a/doc/reference/algorithm_ext/copy_n.qbk +++ b/doc/reference/algorithm_ext/copy_n.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:copy_n copy_n] [heading Prototype] diff --git a/doc/reference/algorithm_ext/erase.qbk b/doc/reference/algorithm_ext/erase.qbk index 5e8c746..5b640a2 100644 --- a/doc/reference/algorithm_ext/erase.qbk +++ b/doc/reference/algorithm_ext/erase.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:erase erase] [heading Prototype] diff --git a/doc/reference/algorithm_ext/for_each.qbk b/doc/reference/algorithm_ext/for_each.qbk index 47b5d40..fdfcb99 100644 --- a/doc/reference/algorithm_ext/for_each.qbk +++ b/doc/reference/algorithm_ext/for_each.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:for_each for_each] [heading Prototype] diff --git a/doc/reference/algorithm_ext/insert.qbk b/doc/reference/algorithm_ext/insert.qbk index 4d5dc39..532e256 100644 --- a/doc/reference/algorithm_ext/insert.qbk +++ b/doc/reference/algorithm_ext/insert.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:insert insert] [heading Prototype] diff --git a/doc/reference/algorithm_ext/iota.qbk b/doc/reference/algorithm_ext/iota.qbk index 36cd7ab..0a5f799 100644 --- a/doc/reference/algorithm_ext/iota.qbk +++ b/doc/reference/algorithm_ext/iota.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:iota iota] [heading Prototype] diff --git a/doc/reference/algorithm_ext/is_sorted.qbk b/doc/reference/algorithm_ext/is_sorted.qbk index 9edc08d..f9c07b4 100644 --- a/doc/reference/algorithm_ext/is_sorted.qbk +++ b/doc/reference/algorithm_ext/is_sorted.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:is_sorted is_sorted] [heading Prototype] diff --git a/doc/reference/algorithm_ext/overwrite.qbk b/doc/reference/algorithm_ext/overwrite.qbk index b9307ff..a265833 100644 --- a/doc/reference/algorithm_ext/overwrite.qbk +++ b/doc/reference/algorithm_ext/overwrite.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:overwrite overwrite] [heading Prototype] diff --git a/doc/reference/algorithm_ext/push_back.qbk b/doc/reference/algorithm_ext/push_back.qbk index 101fd30..ec46d0b 100644 --- a/doc/reference/algorithm_ext/push_back.qbk +++ b/doc/reference/algorithm_ext/push_back.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:push_back push_back] [heading Prototype] diff --git a/doc/reference/algorithm_ext/push_front.qbk b/doc/reference/algorithm_ext/push_front.qbk index edb540c..d9ca4fe 100644 --- a/doc/reference/algorithm_ext/push_front.qbk +++ b/doc/reference/algorithm_ext/push_front.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:push_front push_front] [heading Prototype] diff --git a/doc/reference/algorithm_ext/remove_erase.qbk b/doc/reference/algorithm_ext/remove_erase.qbk index 25fb564..eecc97b 100644 --- a/doc/reference/algorithm_ext/remove_erase.qbk +++ b/doc/reference/algorithm_ext/remove_erase.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:remove_erase remove_erase] [heading Prototype] diff --git a/doc/reference/algorithm_ext/remove_erase_if.qbk b/doc/reference/algorithm_ext/remove_erase_if.qbk index 0b8648e..5eab446 100644 --- a/doc/reference/algorithm_ext/remove_erase_if.qbk +++ b/doc/reference/algorithm_ext/remove_erase_if.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:remove_erase_if remove_erase_if] [heading Prototype] diff --git a/doc/reference/algorithms.qbk b/doc/reference/algorithms.qbk index e5c16f7..5cfabc7 100644 --- a/doc/reference/algorithms.qbk +++ b/doc/reference/algorithms.qbk @@ -1,6 +1,10 @@ -[section:algorithms Range Algorithm] - -[section:range_algorithm_introduction Introduction and motivation] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:algorithms Range Algorithms] +[section:introduction Introduction and motivation] 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 `` @@ -173,6 +177,4 @@ and there is no need to worry about generating an invalid range. Furthermore, if [include numeric/inner_product.qbk] [include numeric/partial_sum.qbk] [endsect] - -[endsect] - +[endsect] \ No newline at end of file diff --git a/doc/reference/extending.qbk b/doc/reference/extending.qbk index 13b0b5e..6414e67 100644 --- a/doc/reference/extending.qbk +++ b/doc/reference/extending.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:extending Extending the library] [section:method_1 Method 1: provide member functions and nested types] @@ -36,6 +41,7 @@ The primary templates in this library are implemented such that certain function [[Function ] [Related concept ]] [[`range_begin(x)`] [__single_pass_range__]] [[`range_end(x)` ] [__single_pass_range__]] + [[`range_calculate_size(x)`] [ Optional. This can be used to specify a mechanism for constant-time computation of the size of a range. The default behaviour is to return `boost::end(x) - boost::begin(x)` for random access ranges, and to return `x.size()` for ranges with lesser traversal capability. This behaviour can be changed by implementing `range_calculate_size` in a manner that will be found via ADL. The ability to calculate size in O(1) is often possible even with ranges with traversal categories less than random access.]] ] `range_begin()` and `range_end()` must be overloaded for both `const` and `mutable` reference arguments. diff --git a/doc/reference/numeric/accumulate.qbk b/doc/reference/numeric/accumulate.qbk index e642305..af5df1d 100644 --- a/doc/reference/numeric/accumulate.qbk +++ b/doc/reference/numeric/accumulate.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:accumulate accumulate] [heading Prototype] diff --git a/doc/reference/numeric/adjacent_difference.qbk b/doc/reference/numeric/adjacent_difference.qbk index f7ea1f7..7580036 100644 --- a/doc/reference/numeric/adjacent_difference.qbk +++ b/doc/reference/numeric/adjacent_difference.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:adjacent_difference adjacent_difference] [heading Prototype] diff --git a/doc/reference/numeric/inner_product.qbk b/doc/reference/numeric/inner_product.qbk index 2b42f8d..1c6fc51 100644 --- a/doc/reference/numeric/inner_product.qbk +++ b/doc/reference/numeric/inner_product.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:inner_product inner_product] [heading Prototype] diff --git a/doc/reference/numeric/partial_sum.qbk b/doc/reference/numeric/partial_sum.qbk index aa556e2..f52e465 100644 --- a/doc/reference/numeric/partial_sum.qbk +++ b/doc/reference/numeric/partial_sum.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:partial_sum partial_sum] [heading Prototype] diff --git a/doc/reference/overview.qbk b/doc/reference/overview.qbk index 48b3ee6..af7ef2c 100644 --- a/doc/reference/overview.qbk +++ b/doc/reference/overview.qbk @@ -1,4 +1,9 @@ -[section Overview] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:overview Overview] Three types of objects are currently supported by the library: diff --git a/doc/reference/ranges.qbk b/doc/reference/ranges.qbk index aaee7d8..14299c4 100644 --- a/doc/reference/ranges.qbk +++ b/doc/reference/ranges.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:ranges Provided Ranges] [include ranges/counting_range.qbk] diff --git a/doc/reference/ranges/counting_range.qbk b/doc/reference/ranges/counting_range.qbk index c9484b8..31037a9 100644 --- a/doc/reference/ranges/counting_range.qbk +++ b/doc/reference/ranges/counting_range.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:counting_range counting_range] [heading Prototype] diff --git a/doc/reference/ranges/irange.qbk b/doc/reference/ranges/irange.qbk index a689ec0..6e59cb1 100644 --- a/doc/reference/ranges/irange.qbk +++ b/doc/reference/ranges/irange.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:irange irange] [heading Prototype] diff --git a/doc/reference/ranges/istream_range.qbk b/doc/reference/ranges/istream_range.qbk index 2b195e7..66a1e84 100644 --- a/doc/reference/ranges/istream_range.qbk +++ b/doc/reference/ranges/istream_range.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:istream_range istream_range] [heading Prototype] diff --git a/doc/reference/semantics.qbk b/doc/reference/semantics.qbk index 47d15c9..4f15721 100644 --- a/doc/reference/semantics.qbk +++ b/doc/reference/semantics.qbk @@ -1,4 +1,9 @@ -[section Semantics] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:semantics Semantics] [heading notation] @@ -114,7 +119,7 @@ [ [`size(x)`] [`range_difference::type`] - [`boost::end(x) - boost::begin(x)`] + [`The size of the range with complexity O(1). For RandomAccessRanges this is achieved via boost::end(x) - boost::begin(x). For other traversal categories range_calculate_size(x) is returned. Note that unless range_calculate_size(x) has been implemented by the user as an extension then the Argument Dependent Lookup will return x.size()`] [constant time] ] [ diff --git a/doc/reference/synopsis.qbk b/doc/reference/synopsis.qbk index 5848bd2..381d77b 100644 --- a/doc/reference/synopsis.qbk +++ b/doc/reference/synopsis.qbk @@ -1,4 +1,9 @@ -[section Synopsis] +[/ + Copyright 2010 Neil Groves + 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) +/] +[section:synopsis Synopsis] `` namespace boost diff --git a/doc/reference/utilities.qbk b/doc/reference/utilities.qbk index 20ce6b6..dd30fbd 100644 --- a/doc/reference/utilities.qbk +++ b/doc/reference/utilities.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:utilities 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` is hardly self-documenting whereas more domain specific class names are. Therefore these two classes are provided: diff --git a/doc/style.css b/doc/style.css deleted file mode 100755 index ce44c30..0000000 --- a/doc/style.css +++ /dev/null @@ -1,42 +0,0 @@ -/* -// Boost.Range library -// -// Copyright Thorsten Ottosen 2003-2008. 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/ -// -*/ -pre{ - BORDER-RIGHT: gray 1pt solid; - PADDING-RIGHT: 2pt; - BORDER-TOP: gray 1pt solid; - DISPLAY: block; - PADDING-LEFT: 2pt; - PADDING-BOTTOM: 2pt; - BORDER-LEFT: gray 1pt solid; - MARGIN-RIGHT: 32pt; - PADDING-TOP: 2pt; - BORDER-BOTTOM: gray 1pt solid; - FONT-FAMILY: "Courier New", Courier, mono; - background-color: #EEEEEE; -} - - -.keyword{color: #0000FF;} -.identifier{} -.comment{font-style: italic; color: #008000;} -.special{color: #800040;} -.preprocessor{color: #3F007F;} -.string{font-style: italic; color: #666666;} -.literal{font-style: italic; color: #666666;} - -table -{ - cellpadding: 5px; - border: 2px; -} - - diff --git a/doc/style.qbk b/doc/style.qbk index 779fd5c..c6e5e34 100644 --- a/doc/style.qbk +++ b/doc/style.qbk @@ -1,3 +1,8 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:style_guide Terminology and style guidelines] The use of a consistent terminology is as important for __ranges__ and range-based algorithms as it is for iterators and iterator-based algorithms. If a conventional set of names are adopted, we can avoid misunderstandings and write generic function prototypes that are [*/self-documenting/]. diff --git a/doc/upgrade.qbk b/doc/upgrade.qbk index 016f89c..516ed11 100644 --- a/doc/upgrade.qbk +++ b/doc/upgrade.qbk @@ -1,5 +1,18 @@ +[/ + Copyright 2010 Neil Groves + 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) +/] [section:upgrade Upgrade version of Boost.Range] +[section:upgrade_from_1_45 Upgrade from version 1.45] + +# __size__ in addition to supporting __random_access_range__ now also supports extensibility via calls to the unqualified `range_calculate_size(rng)` function. +# __range_adaptors_strided__ now in addition to working with any RandomAccessRange additionally works for any SinglePassRange for which `boost::size(rng)` is valid. +# __range_adaptors_strided__ no longer requires `distance(rng) % stride_size == 0` or `stride_size < distance(rng)` + +[endsect] + [section:upgrade_from_1_42 Upgrade from version 1.42] New features: diff --git a/index.html b/index.html index 2a17910..29b7f42 100644 --- a/index.html +++ b/index.html @@ -11,3 +11,6 @@ Automatic redirection failed, please go to doc/html/index.html + + + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 645f5f9..2b8106a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -137,6 +137,7 @@ test-suite range : [ range-test const_ranges ] [ range-test counting_range ] [ range-test extension_mechanism ] + [ range-test extension_size ] [ range-test irange ] [ range-test istream_range ] [ range-test iterator_pair ] diff --git a/test/adaptor_test/strided.cpp b/test/adaptor_test/strided.cpp index e09e0fb..6f4d1ef 100644 --- a/test/adaptor_test/strided.cpp +++ b/test/adaptor_test/strided.cpp @@ -24,35 +24,46 @@ namespace boost { namespace { - const int STRIDE_SIZE = 2; - template< class Container > - void strided_test_impl( Container& c ) + void strided_test_impl( Container& c, int stride_size ) { using namespace boost::adaptors; - BOOST_ASSERT( c.size() % STRIDE_SIZE == 0 ); + // Rationale: + // This requirement was too restrictive. It makes the use of the + // strided adaptor too dangerous, and a simple solution existed + // to make it safe, hence the strided adaptor has been modified + // and this restriction no longer applies. + //BOOST_ASSERT( c.size() % STRIDE_SIZE == 0 ); Container reference; { typedef BOOST_DEDUCED_TYPENAME Container::const_iterator iterator_t; + typedef BOOST_DEDUCED_TYPENAME Container::difference_type diff_t; + typedef BOOST_DEDUCED_TYPENAME Container::size_type size_type; iterator_t it = c.begin(); - for (iterator_t last = c.end(); - it != last; it += STRIDE_SIZE) + + size_type count = c.size(); + size_type unreachable_element_count = c.size() - ((count / stride_size) * stride_size); + diff_t offset = -static_cast(unreachable_element_count); + iterator_t last = c.end(); + std::advance(last, offset); + + for (; it != last; std::advance(it, stride_size)) { reference.push_back(*it); } } Container test; - boost::push_back( test, c | strided(2) ); + boost::push_back( test, c | strided(stride_size) ); BOOST_CHECK_EQUAL_COLLECTIONS( test.begin(), test.end(), reference.begin(), reference.end() ); Container test2; - boost::push_back( test2, adaptors::stride(c, 2) ); + boost::push_back( test2, adaptors::stride(c, stride_size) ); BOOST_CHECK_EQUAL_COLLECTIONS( test2.begin(), test2.end(), reference.begin(), reference.end() ); @@ -60,41 +71,91 @@ namespace boost // Test the const versions: const Container& cc = c; Container test3; - boost::push_back( test3, cc | strided(2) ); + boost::push_back( test3, cc | strided(stride_size) ); BOOST_CHECK_EQUAL_COLLECTIONS( test3.begin(), test3.end(), reference.begin(), reference.end() ); Container test4; - boost::push_back( test4, adaptors::stride(cc, 2) ); + boost::push_back( test4, adaptors::stride(cc, stride_size) ); BOOST_CHECK_EQUAL_COLLECTIONS( test4.begin(), test4.end(), reference.begin(), reference.end() ); } template< class Container > - void strided_test_impl() + void strided_test_impl(int stride_size) { using namespace boost::assign; Container c; // Test empty - strided_test_impl(c); + strided_test_impl(c, stride_size); // Test two elements c += 1,2; - strided_test_impl(c); + strided_test_impl(c, stride_size); // Test many elements c += 1,1,1,2,2,3,4,5,6,6,6,7,8,9; - strided_test_impl(c); + strided_test_impl(c, stride_size); + + // Test an odd number of elements to determine that the relaxation + // of the requirements has been successful + // Test a sequence of length 1 with a stride of 2 + c.clear(); + c += 1; + strided_test_impl(c, stride_size); + + // Test a sequence of length 2 with a stride of 2 + c.clear(); + c += 1,2; + strided_test_impl(c, stride_size); + + // Test a sequence of length 3 with a stride of 2 + c.clear(); + c += 1,2,3; + strided_test_impl(c, stride_size); + } + + template + void strided_test_zero_stride() + { + Container c; + c.push_back(1); + + typedef boost::strided_range strided_range_t; + strided_range_t rng( boost::adaptors::stride(c, 0) ); + typedef typename boost::range_iterator::type iter_t; + + iter_t first(boost::begin(c), 0); + iter_t last(boost::end(c), 0); + + iter_t it = first; + for (int i = 0; i < 10; ++i, ++it) + { + BOOST_CHECK(it == first); + } + } + + template + void strided_test_impl() + { + strided_test_zero_stride< Container >(); + + const int MAX_STRIDE_SIZE = 10; + for (int stride_size = 1; stride_size <= MAX_STRIDE_SIZE; ++stride_size) + { + strided_test_impl< Container >(stride_size); + } } void strided_test() { - strided_test_impl< std::vector< int > >(); - strided_test_impl< std::deque< int > >(); + strided_test_impl< std::vector >(); + strided_test_impl< std::deque >(); + strided_test_impl< std::list >(); } } } diff --git a/test/adaptors.cpp b/test/adaptors.cpp index ed2f915..ea0f503 100644 --- a/test/adaptors.cpp +++ b/test/adaptors.cpp @@ -67,9 +67,8 @@ void check_copy( Rng r ) } - template< class Rng > -void check() +void check_direct() { using namespace boost::adaptors; @@ -104,7 +103,6 @@ void check() } - template< class IndirectRng > void check_indirect() { @@ -189,8 +187,8 @@ void check_regex() void check_adaptors() { - check< std::vector >(); - check< std::list >(); + check_direct< std::vector >(); + check_direct< std::list >(); check_indirect< std::vector >(); check_indirect< std::list >(); diff --git a/test/algorithm_test/count_if.cpp b/test/algorithm_test/count_if.cpp index c3d1b8b..a2e8983 100644 --- a/test/algorithm_test/count_if.cpp +++ b/test/algorithm_test/count_if.cpp @@ -72,9 +72,9 @@ namespace boost BOOST_CHECK_EQUAL( 0u, boost::count_if(cref_cont, false_predicate()) ); BOOST_CHECK_EQUAL( 0u, boost::count_if(boost::make_iterator_range(cont), false_predicate()) ); - BOOST_CHECK_EQUAL( cont.size(), boost::count_if(cont, true_predicate()) ); - BOOST_CHECK_EQUAL( cont.size(), boost::count_if(cref_cont, true_predicate()) ); - BOOST_CHECK_EQUAL( cont.size(), boost::count_if(boost::make_iterator_range(cont), true_predicate()) ); + BOOST_CHECK_EQUAL( boost::size(cont), boost::count_if(cont, true_predicate()) ); + BOOST_CHECK_EQUAL( boost::size(cont), boost::count_if(cref_cont, true_predicate()) ); + BOOST_CHECK_EQUAL( boost::size(cont), boost::count_if(boost::make_iterator_range(cont), true_predicate()) ); } void test_count_if() diff --git a/test/extension_size.cpp b/test/extension_size.cpp new file mode 100644 index 0000000..988e557 --- /dev/null +++ b/test/extension_size.cpp @@ -0,0 +1,122 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen 2003-2004. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// + + +#include + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +# pragma warn -8091 // supress warning in Boost.Test +# pragma warn -8057 // unused argument argc/argv in Boost.Test +#endif + +#include +#include +#include +#include +#include + +namespace boost_range_extension_size_test +{ + class FooWithoutMemberSize + { + typedef std::list impl_t; + typedef impl_t::const_iterator const_iterator; + typedef impl_t::iterator iterator; + + public: + friend inline const_iterator range_begin(const FooWithoutMemberSize& obj) { return obj.m_impl.begin(); } + friend inline iterator range_begin(FooWithoutMemberSize& obj) { return obj.m_impl.begin(); } + friend inline const_iterator range_end(const FooWithoutMemberSize& obj) { return obj.m_impl.end(); } + friend inline iterator range_end(FooWithoutMemberSize& obj){ return obj.m_impl.end(); } + + private: + impl_t m_impl; + }; + + boost::range_difference >::type + inline range_calculate_size(const FooWithoutMemberSize& rng) + { + return 2u; + } +} + +namespace boost +{ + template<> struct range_iterator + { + typedef std::list::const_iterator type; + }; + + template<> struct range_iterator< ::boost_range_extension_size_test::FooWithoutMemberSize > + { + typedef std::list::iterator type; + }; +} + +namespace +{ + +void check_size_works_with_less_than_random_access() +{ + std::list container; + container.push_back(1); + BOOST_CHECK_EQUAL( boost::size(container), 1u ); +} + +void check_size_works_with_random_access() +{ + std::vector container; + container.push_back(1); + BOOST_CHECK_EQUAL( boost::size(container), 1u ); +} + +class FooWithMemberSize +{ +public: + typedef std::list impl_t; + typedef impl_t::const_iterator const_iterator; + typedef impl_t::iterator iterator; + typedef impl_t::value_type value_type; + + std::size_t size() const { return 1u; } + const_iterator begin() const { return m_impl.begin(); } + iterator begin() { return m_impl.begin(); } + const_iterator end() const { return m_impl.end(); } + iterator end() { return m_impl.end(); } + +private: + std::list m_impl; +}; + +void check_extension_size() +{ + BOOST_CHECK_EQUAL( boost::size(FooWithMemberSize()), 1u ); + BOOST_CHECK_EQUAL( boost::size(boost_range_extension_size_test::FooWithoutMemberSize()), 2u ); +} + +} // anonymous namespace + +using boost::unit_test::test_suite; + +test_suite* init_unit_test_suite( int argc, char* argv[] ) +{ + test_suite* test = BOOST_TEST_SUITE( "Range Test Suite" ); + + test->add( BOOST_TEST_CASE( &check_size_works_with_less_than_random_access )); + test->add( BOOST_TEST_CASE( &check_size_works_with_random_access )); + test->add( BOOST_TEST_CASE( &check_extension_size ) ); + + return test; +} + + + + + diff --git a/test/replace_copy.cpp b/test/replace_copy.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/test/string.cpp b/test/string.cpp index f73abb0..f838519 100644 --- a/test/string.cpp +++ b/test/string.cpp @@ -42,7 +42,7 @@ namespace typedef std::size_t size_type; typedef value_type array_t[Length]; typedef const value_type const_array_t[Length]; - + explicit test_string(const CharT literal_sz[]) { std::copy(literal_sz, literal_sz + Length, m_buffer.data()); @@ -62,35 +62,35 @@ template< class T > inline BOOST_DEDUCED_TYPENAME boost::range_iterator::type str_begin( T& r ) { - return boost::begin( boost::as_literal(r) ); + return boost::begin( boost::as_literal(r) ); } template< class T > inline BOOST_DEDUCED_TYPENAME boost::range_iterator::type str_end( T& r ) { - return boost::end( boost::as_literal(r) ); + return boost::end( boost::as_literal(r) ); } template< class T > -inline BOOST_DEDUCED_TYPENAME boost::range_size::type +inline BOOST_DEDUCED_TYPENAME boost::range_difference::type str_size( const T& r ) { - return boost::size( boost::as_literal(r) ); + return boost::size( boost::as_literal(r) ); } template< class T > inline bool str_empty( T& r ) { - return boost::empty( boost::as_literal(r) ); + return boost::empty( boost::as_literal(r) ); } template< typename Container, typename T > BOOST_DEDUCED_TYPENAME boost::range_iterator::type find( Container& c, T value ) { - return std::find( str_begin(c), str_end(c), + return std::find( str_begin(c), str_end(c), value ); } @@ -98,16 +98,16 @@ template< typename Container, typename T > BOOST_DEDUCED_TYPENAME boost::range_iterator::type find( const Container& c, T value ) { - return std::find( str_begin(c), str_end(c), + return std::find( str_begin(c), str_end(c), value ); } template< typename Container, typename T > BOOST_DEDUCED_TYPENAME boost::range_iterator::type find_mutable( Container& c, T value ) -{ +{ str_size( c ); - return std::find( str_begin(c), str_end(c), + return std::find( str_begin(c), str_end(c), value ); } @@ -116,15 +116,15 @@ BOOST_DEDUCED_TYPENAME boost::range_iterator::type find_const( const Container& c, T value ) { str_size( c ); - return std::find( str_begin(c), str_end(c), + return std::find( str_begin(c), str_end(c), value ); } -std::vector +std::vector check_rvalue_return() { - return std::vector( 10, 'm' ); + return std::vector( 10, 'm' ); } using namespace boost; @@ -132,44 +132,45 @@ using namespace boost; void check_char() { + typedef boost::range_difference::type diff_t; typedef char* char_iterator_t; typedef char char_array_t[10]; - + test_string a_string("a string"); test_string another_string("another string"); const char* char_s = a_string.const_sz(); char my_string[] = "another_string"; const char my_const_string[] = "another string"; - const unsigned my_string_length = 14; + const diff_t my_string_length = 14; char* char_s2 = a_string.mutable_sz(); - - BOOST_STATIC_ASSERT(( is_same< range_value::type, + + BOOST_STATIC_ASSERT(( is_same< range_value::type, detail::iterator_traits::value_type>::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, char_iterator_t >::value )); - BOOST_STATIC_ASSERT(( is_same< range_difference::type, + BOOST_STATIC_ASSERT(( is_same< range_difference::type, ::std::ptrdiff_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_size::type, std::size_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, char_iterator_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, const char* >::value )); - - BOOST_STATIC_ASSERT(( is_same< range_value::type, + + BOOST_STATIC_ASSERT(( is_same< range_value::type, char>::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, char* >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, const char* >::value )); - BOOST_STATIC_ASSERT(( is_same< range_difference::type, + BOOST_STATIC_ASSERT(( is_same< range_difference::type, ::std::ptrdiff_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_size::type, std::size_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, char* >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, const char* >::value )); BOOST_CHECK_EQUAL( str_begin( char_s ), char_s ); - std::size_t sz = str_size(char_s); - const char* str_end1 = str_begin( char_s ) + sz; + const diff_t sz = str_size(char_s); + const char* str_end1 = str_begin( char_s ) + sz; BOOST_CHECK_EQUAL( str_end( char_s ), str_end1 ); BOOST_CHECK_EQUAL( str_empty( char_s ), (char_s == 0 || char_s[0] == char()) ); - BOOST_CHECK_EQUAL( sz, std::char_traits::length( char_s ) ); + BOOST_CHECK_EQUAL( sz, static_cast(std::char_traits::length(char_s)) ); BOOST_CHECK_EQUAL( str_begin( my_string ), my_string ); range_iterator::type str_end2 = str_begin( my_string ) + str_size(my_string); @@ -177,7 +178,7 @@ void check_char() BOOST_CHECK_EQUAL( str_end3, str_end2 ); BOOST_CHECK_EQUAL( str_empty( my_string ), (my_string == 0 || my_string[0] == char()) ); BOOST_CHECK_EQUAL( str_size( my_string ), my_string_length ); - BOOST_CHECK_EQUAL( str_size( my_string ), std::char_traits::length( my_string ) ); + BOOST_CHECK_EQUAL( str_size( my_string ), static_cast(std::char_traits::length(my_string)) ); char to_search = 'n'; BOOST_CHECK( find_mutable( char_s, to_search ) != str_end( char_s ) ); @@ -186,7 +187,7 @@ void check_char() BOOST_CHECK( find_mutable( my_string, to_search ) != str_end(my_string) ); BOOST_CHECK( find_const( my_string, to_search ) != str_end(my_string) ); - BOOST_CHECK( find_mutable( char_s2, to_search ) != str_end(char_s) ); + BOOST_CHECK( find_mutable( char_s2, to_search ) != str_end(char_s) ); BOOST_CHECK( find_const( char_s2, to_search ) != str_end(char_s2) ); BOOST_CHECK( find_const( as_array( my_string ), to_search ) != str_end(my_string) ); @@ -212,32 +213,33 @@ void check_char() void check_string() { check_char(); - + #ifndef BOOST_NO_STD_WSTRING typedef wchar_t* wchar_iterator_t; test_string a_wide_string(L"a wide string"); test_string another_wide_string(L"another wide string"); - + const wchar_t* char_ws = a_wide_string.const_sz(); wchar_t my_wstring[] = L"another wide string"; wchar_t* char_ws2 = a_wide_string.mutable_sz(); - - BOOST_STATIC_ASSERT(( is_same< range_value::type, + + BOOST_STATIC_ASSERT(( is_same< range_value::type, detail::iterator_traits::value_type>::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, wchar_iterator_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, const wchar_t* >::value )); - BOOST_STATIC_ASSERT(( is_same< range_difference::type, + BOOST_STATIC_ASSERT(( is_same< range_difference::type, detail::iterator_traits::difference_type >::value )); BOOST_STATIC_ASSERT(( is_same< range_size::type, std::size_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, wchar_iterator_t >::value )); BOOST_STATIC_ASSERT(( is_same< range_iterator::type, const wchar_t* >::value )); - - std::size_t sz = str_size( char_ws ); + + typedef boost::range_difference::type diff_t; + const diff_t sz = str_size( char_ws ); BOOST_CHECK_EQUAL( str_begin( char_ws ), char_ws ); BOOST_CHECK_EQUAL( str_end(char_ws), (str_begin( char_ws ) + sz) ); BOOST_CHECK_EQUAL( str_empty( char_ws ), (char_ws == 0 || char_ws[0] == wchar_t()) ); - BOOST_CHECK_EQUAL( sz, std::char_traits::length( char_ws ) ); + BOOST_CHECK_EQUAL( sz, static_cast(std::char_traits::length(char_ws)) ); wchar_t to_search = L'n'; BOOST_CHECK( find( char_ws, to_search ) != str_end(char_ws) ); @@ -250,10 +252,10 @@ void check_string() #else boost::ignore_unused_variable_warning( my_wstring ); - -#endif + #endif - +#endif + find( check_rvalue_return(), 'n' ); } diff --git a/test/test_driver/range_return_test_driver.hpp b/test/test_driver/range_return_test_driver.hpp index eb52474..bcd2533 100644 --- a/test/test_driver/range_return_test_driver.hpp +++ b/test/test_driver/range_return_test_driver.hpp @@ -26,7 +26,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, Iterator test_it, @@ -43,7 +43,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, Iterator test_it, @@ -64,7 +64,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, Iterator test_it, @@ -93,7 +93,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, Iterator test_it, @@ -122,7 +122,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -149,7 +149,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -182,7 +182,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -212,7 +212,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -236,7 +236,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -270,7 +270,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -304,7 +304,7 @@ namespace boost struct check_results { template< class Container, class Iterator > - static void check( + static void test( Container& test, Container& reference, iterator_range test_rng, @@ -375,8 +375,8 @@ namespace boost iterator_t range_result = policy.test_iter(test); iterator_t reference_it = policy.reference(reference); - check_results::check(test, reference, - range_result, reference_it); + check_results::test(test, reference, + range_result, reference_it); } template< range_return_value result_type, class Container, class TestPolicy > @@ -394,8 +394,8 @@ namespace boost range_return_t range_result = test_range_t()(policy, test_cont); iterator_t reference_it = policy.reference(reference); - check_results::check(test_cont, reference, - range_result, reference_it); + check_results::test(test_cont, reference, + range_result, reference_it); } }; }; From d68174a51d0125f5f0729404121921aed4ab6231 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 22 Dec 2010 22:36:43 +0000 Subject: [PATCH 24/32] [boost][range] - Update to relax preconditions for the strided adaptor, and numerous fixes to inspection report issues. [SVN r67419] --- .../boost/range/adaptor/define_adaptor.hpp | 10 + include/boost/range/adaptor/sliced.hpp | 78 +++--- include/boost/range/adaptor/strided.hpp | 62 +++-- include/boost/range/adaptor/transformed.hpp | 49 ++-- include/boost/range/adaptor/type_erased.hpp | 90 +++++++ include/boost/range/algorithm/search_n.hpp | 229 +++++++++++++++++- include/boost/range/algorithm/transform.hpp | 2 +- include/boost/range/combine.hpp | 8 + include/boost/range/counting_range.hpp | 12 +- include/boost/range/istream_range.hpp | 12 +- include/boost/range/iterator_range_core.hpp | 14 ++ include/boost/range/size.hpp | 49 +++- 12 files changed, 502 insertions(+), 113 deletions(-) create mode 100644 include/boost/range/adaptor/type_erased.hpp mode change 100755 => 100644 include/boost/range/size.hpp diff --git a/include/boost/range/adaptor/define_adaptor.hpp b/include/boost/range/adaptor/define_adaptor.hpp index d68c64e..26f4016 100644 --- a/include/boost/range/adaptor/define_adaptor.hpp +++ b/include/boost/range/adaptor/define_adaptor.hpp @@ -1,3 +1,13 @@ +// 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/ +// + #ifndef BOOST_RANGE_DEFINE_ADAPTOR_HPP_INCLUDED #define BOOST_RANGE_DEFINE_ADAPTOR_HPP_INCLUDED diff --git a/include/boost/range/adaptor/sliced.hpp b/include/boost/range/adaptor/sliced.hpp index 03c6894..7772bb5 100755 --- a/include/boost/range/adaptor/sliced.hpp +++ b/include/boost/range/adaptor/sliced.hpp @@ -27,53 +27,53 @@ namespace boost std::size_t u; }; - template< class RandomAccessRange > - class sliced_range : public boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - { - typedef boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > base_t; - public: - template - sliced_range(Rng& rng, T t, U u) - : base_t(boost::make_iterator_range(rng, t, u - boost::size(rng))) - { - } - }; + template< class RandomAccessRange > + class sliced_range : public boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > + { + typedef boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > base_t; + public: + template + sliced_range(Rng& rng, T t, U u) + : base_t(boost::make_iterator_range(rng, t, u - boost::size(rng))) + { + } + }; - template< class RandomAccessRange > - inline sliced_range - slice( RandomAccessRange& rng, std::size_t t, std::size_t u ) - { - BOOST_ASSERT( t <= u && "error in slice indices" ); + template< class RandomAccessRange > + inline sliced_range + 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 sliced_range(rng, t, u); - } + return sliced_range(rng, t, u); + } - 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" ); + 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 sliced_range(rng, t, u); - } + } - template< class RandomAccessRange > - inline sliced_range - operator|( RandomAccessRange& r, const sliced& f ) - { - return sliced_range( r, f.t, f.u ); - } + template< class RandomAccessRange > + inline sliced_range + operator|( RandomAccessRange& r, const sliced& f ) + { + return sliced_range( r, f.t, f.u ); + } - template< class RandomAccessRange > - inline sliced_range - operator|( const RandomAccessRange& r, const sliced& f ) - { - return sliced_range( r, f.t, f.u ); - } + template< class RandomAccessRange > + inline sliced_range + operator|( const RandomAccessRange& r, const sliced& f ) + { + return sliced_range( 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 5f4c4fa..ab86e46 100755 --- a/include/boost/range/adaptor/strided.hpp +++ b/include/boost/range/adaptor/strided.hpp @@ -30,34 +30,34 @@ namespace boost 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 { @@ -66,11 +66,11 @@ namespace boost // Using the compiler generated copy constructor and // and assignment operator - + private: difference_type m_stride; }; - + template inline strided_iterator make_strided_iterator( @@ -89,9 +89,31 @@ namespace boost 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)) + : super_t(make_first(rng, stride), make_last(rng, stride)) { + BOOST_ASSERT( stride >= 0 ); + } + private: + template + static iter_type make_first(Rng& rng, Difference stride) + { + return make_strided_iterator(boost::begin(rng), stride); + } + + template + static iter_type make_last(Rng& rng, Difference stride) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iter_t; + typedef BOOST_DEDUCED_TYPENAME range_difference::type diff_t; + + if (stride > 0) + { + raw_iter_t it = boost::end(rng); + const diff_t count = boost::size(rng); + std::advance(it, -(count % stride)); + return iter_type(it, stride); + } + return make_strided_iterator(boost::end(rng), stride); } }; @@ -99,7 +121,7 @@ namespace boost class strided_holder : public holder { public: - strided_holder(Difference value) : holder(value) {} + explicit strided_holder(Difference value) : holder(value) {} }; template @@ -117,32 +139,32 @@ namespace boost } } // 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 'boost' diff --git a/include/boost/range/adaptor/transformed.hpp b/include/boost/range/adaptor/transformed.hpp index 00297ca..21ce52a 100755 --- a/include/boost/range/adaptor/transformed.hpp +++ b/include/boost/range/adaptor/transformed.hpp @@ -14,6 +14,7 @@ #include #include #include +#include namespace boost { @@ -21,17 +22,17 @@ namespace boost { template< class F, class R > - struct transform_range : - public boost::iterator_range< + struct transform_range : + public boost::iterator_range< boost::transform_iterator< F, - BOOST_DEDUCED_TYPENAME range_iterator::type + BOOST_DEDUCED_TYPENAME range_iterator::type > > { private: - typedef boost::iterator_range< + typedef boost::iterator_range< boost::transform_iterator< F, - BOOST_DEDUCED_TYPENAME range_iterator::type + BOOST_DEDUCED_TYPENAME range_iterator::type > > base; @@ -39,11 +40,11 @@ namespace boost 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 ) ) - + make_transform_iterator( boost::end(r), f ) ) + { } }; @@ -53,43 +54,43 @@ namespace boost transform_holder( T r ) : holder(r) { } }; - + template< class InputRng, class UnaryFunction > - inline transform_range - operator|( InputRng& r, + inline transform_range + operator|( InputRng& r, const transform_holder& f ) { - return transform_range( f.val, r ); + return transform_range( f.val, r ); } - + template< class InputRng, class UnaryFunction > - inline transform_range - operator|( const InputRng& r, + inline transform_range + operator|( const InputRng& r, const transform_holder& f ) { - return transform_range( f.val, r ); + return transform_range( f.val, r ); } - + } // 'range_detail' using range_detail::transform_range; - + namespace adaptors - { + { namespace { - const range_detail::forwarder - transformed = + 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) @@ -97,7 +98,7 @@ namespace boost return transform_range(fn, rng); } } // 'adaptors' - + } #endif diff --git a/include/boost/range/adaptor/type_erased.hpp b/include/boost/range/adaptor/type_erased.hpp new file mode 100644 index 0000000..85bff73 --- /dev/null +++ b/include/boost/range/adaptor/type_erased.hpp @@ -0,0 +1,90 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// +#ifndef BOOST_RANGE_ADAPTOR_TYPE_ERASED_HPP_INCLUDED +#define BOOST_RANGE_ADAPTOR_TYPE_ERASED_HPP_INCLUDED + +#include +#include +#include + +namespace boost +{ + namespace range_detail + { + template< + class Value, + class CategoryOrTraversal, + class Reference, + class Difference + > + class any_range + : public iterator_range< + IteratorTypeErasure::any_iterator< + Value, CategoryOrTraversal, Reference, Difference> > + { + typedef typename IteratorTypeErasure::any_iterator< + Value, CategoryOrTraversal, Reference, Difference> iterator_t; + + typedef iterator_range base_t; + public: + template + explicit any_range(Range& r) : base_t(r) {} + + template + explicit any_range(const Range& r) : base_t(r) {} + }; + + template + class any_range_generator + { + public: + typedef any_range< + BOOST_DEDUCED_TYPENAME range_value::type, + BOOST_DEDUCED_TYPENAME iterator_traversal< + BOOST_DEDUCED_TYPENAME range_iterator::type + >::type, + BOOST_DEDUCED_TYPENAME range_reference::type, + BOOST_DEDUCED_TYPENAME range_difference::type + > type; + }; + + class type_erased_tag {}; + + + } // namespace range_detail + + using range_detail::any_range; + + namespace adaptors + { + namespace + { + const range_detail::type_erased_tag type_erased = range_detail::type_erased_tag(); + } + + template + typename range_detail::any_range_generator::type + operator|(SinglePassRange& rng, range_detail::type_erased_tag) + { + typedef typename range_detail::any_range_generator::type range_t; + return range_t(rng); + } + + template + typename range_detail::any_range_generator::type + operator|(const SinglePassRange& rng, range_detail::type_erased_tag) + { + typedef typename range_detail::any_range_generator::type range_t; + return range_t(rng); + } + } +} // namespace boost + +#endif // include guard diff --git a/include/boost/range/algorithm/search_n.hpp b/include/boost/range/algorithm/search_n.hpp index b69bc6d..c277aea 100755 --- a/include/boost/range/algorithm/search_n.hpp +++ b/include/boost/range/algorithm/search_n.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include namespace boost @@ -22,6 +23,218 @@ namespace boost namespace range { +namespace range_detail +{ + // Rationale: search_n is implemented rather than delegate to + // the standard library implementation because some standard + // library implementations are broken eg. MSVC. + + // search_n forward iterator version + template + inline ForwardIterator + search_n_impl(ForwardIterator first, ForwardIterator last, Integer count, + const Value& value, std::forward_iterator_tag) + { + first = std::find(first, last, value); + while (first != last) + { + typename std::iterator_traits::difference_type n = count; + ForwardIterator i = first; + ++i; + while (i != last && n != 1 && *i==value) + { + ++i; + --n; + } + if (n == 1) + return first; + if (i == last) + return last; + first = std::find(++i, last, value); + } + return last; + } + + // search_n random-access iterator version + template + inline RandomAccessIterator + search_n_impl(RandomAccessIterator first, RandomAccessIterator last, + Integer count, const Value& value, + std::random_access_iterator_tag) + { + typedef typename std::iterator_traits::difference_type difference_t; + + difference_t tail_size = last - first; + const difference_t pattern_size = count; + + if (tail_size < pattern_size) + return last; + + const difference_t skip_offset = pattern_size - 1; + RandomAccessIterator look_ahead = first + skip_offset; + tail_size -= pattern_size; + + while (1) + { + // look_ahead here is pointing to the last element of the + // next possible match + while (!(*look_ahead == value)) // skip loop... + { + if (tail_size < pattern_size) + return last; // no match + look_ahead += pattern_size; + tail_size -= pattern_size; + } + difference_t remainder = skip_offset; + for (RandomAccessIterator back_track = look_ahead - 1; + *back_track == value; --back_track) + { + if (--remainder == 0) + { + return look_ahead - skip_offset; // matched + } + } + if (remainder > tail_size) + return last; // no match + look_ahead += remainder; + tail_size -= remainder; + } + + return last; + } + + // search_n for forward iterators using a binary predicate + // to determine a match + template + inline ForwardIterator + search_n_impl(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value, + BinaryPredicate pred, std::forward_iterator_tag) + { + typedef typename std::iterator_traits::difference_type difference_t; + + while (first != last && !static_cast(pred(*first, value))) + ++first; + + while (first != last) + { + difference_t n = count; + ForwardIterator i = first; + ++i; + while (i != last && n != 1 && static_cast(pred(*i, value))) + { + ++i; + --n; + } + if (n == 1) + return first; + if (i == last) + return last; + first = ++i; + while (first != last && !static_cast(pred(*first, value))) + ++first; + } + return last; + } + + // search_n for random-access iterators using a binary predicate + // to determine a match + template + inline RandomAccessIterator + search_n_impl(RandomAccessIterator first, RandomAccessIterator last, + Integer count, const Value& value, + BinaryPredicate pred, std::random_access_iterator_tag) + { + typedef typename std::iterator_traits::difference_type difference_t; + + difference_t tail_size = last - first; + const difference_t pattern_size = count; + + if (tail_size < pattern_size) + return last; + + const difference_t skip_offset = pattern_size - 1; + RandomAccessIterator look_ahead = first + skip_offset; + tail_size -= pattern_size; + + while (1) + { + // look_ahead points to the last element of the next + // possible match + while (!static_cast(pred(*look_ahead, value))) // skip loop + { + if (tail_size < pattern_size) + return last; // no match + look_ahead += pattern_size; + tail_size -= pattern_size; + } + difference_t remainder = skip_offset; + for (RandomAccessIterator back_track = look_ahead - 1; + pred(*back_track, value); --back_track) + { + if (--remainder == 0) + return look_ahead -= skip_offset; // success + } + if (remainder > tail_size) + { + return last; // no match + } + look_ahead += remainder; + tail_size -= remainder; + } + } + + template + inline ForwardIterator + search_n_impl(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value) + { + BOOST_RANGE_CONCEPT_ASSERT((ForwardIteratorConcept)); + BOOST_RANGE_CONCEPT_ASSERT((EqualityComparableConcept)); + BOOST_RANGE_CONCEPT_ASSERT((EqualityComparableConcept::value_type>)); + //BOOST_RANGE_CONCEPT_ASSERT((EqualityComparableConcept2::value_type, Value>)); + + typedef typename std::iterator_traits::iterator_category cat_t; + + if (count <= 0) + return first; + if (count == 1) + return std::find(first, last, value); + return range_detail::search_n_impl(first, last, count, value, cat_t()); + } + + template + inline ForwardIterator + search_n_impl(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value, + BinaryPredicate pred) + { + BOOST_RANGE_CONCEPT_ASSERT((ForwardIteratorConcept)); + BOOST_RANGE_CONCEPT_ASSERT(( + BinaryPredicateConcept< + BinaryPredicate, + typename std::iterator_traits::value_type, + Value> + )); + + typedef typename std::iterator_traits::iterator_category cat_t; + + if (count <= 0) + return first; + if (count == 1) + { + while (first != last && !static_cast(pred(*first, value))) + ++first; + return first; + } + return range_detail::search_n_impl(first, last, count, + value, pred, cat_t()); + } +} // namespace range_detail + /// \brief template function search /// /// range-based version of the search std algorithm @@ -36,7 +249,7 @@ inline BOOST_DEDUCED_TYPENAME range_iterator::type search_n(ForwardRange& rng, Integer count, const Value& value) { BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); - return std::search_n(boost::begin(rng),boost::end(rng), count, value); + return range_detail::search_n_impl(boost::begin(rng),boost::end(rng), count, value); } /// \overload @@ -45,7 +258,7 @@ 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); + return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value); } /// \overload @@ -58,7 +271,7 @@ search_n(ForwardRange& rng, Integer count, const Value& value, BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); - return std::search_n(boost::begin(rng), boost::end(rng), + return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value, binary_pred); } @@ -72,7 +285,7 @@ search_n(const ForwardRange& rng, Integer count, const Value& value, BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); - return std::search_n(boost::begin(rng), boost::end(rng), + return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value, binary_pred); } @@ -86,7 +299,7 @@ search_n(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), + pack(range_detail::search_n_impl(boost::begin(rng),boost::end(rng), count, value), rng); } @@ -99,7 +312,7 @@ 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), + pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value), rng); } @@ -116,7 +329,7 @@ search_n(ForwardRange& rng, Integer count, const Value& value, BOOST_DEDUCED_TYPENAME range_value::type, const Value&>)); return range_return:: - pack(std::search_n(boost::begin(rng), boost::end(rng), + pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value, pred), rng); } @@ -133,7 +346,7 @@ search_n(const ForwardRange& rng, Integer count, const Value& value, BOOST_DEDUCED_TYPENAME range_value::type, const Value&>)); return range_return:: - pack(std::search_n(boost::begin(rng), boost::end(rng), + pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value, pred), rng); } diff --git a/include/boost/range/algorithm/transform.hpp b/include/boost/range/algorithm/transform.hpp index 28f423d..fb03441 100755 --- a/include/boost/range/algorithm/transform.hpp +++ b/include/boost/range/algorithm/transform.hpp @@ -84,7 +84,7 @@ namespace boost { BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return range_detail::transform_impl( + return boost::range_detail::transform_impl( boost::begin(rng1), boost::end(rng1), boost::begin(rng2), boost::end(rng2), out, fun); diff --git a/include/boost/range/combine.hpp b/include/boost/range/combine.hpp index 8b1be00..999bbc3 100755 --- a/include/boost/range/combine.hpp +++ b/include/boost/range/combine.hpp @@ -1,3 +1,11 @@ +// 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/ +// #ifndef BOOST_RANGE_COMBINE_HPP #define BOOST_RANGE_COMBINE_HPP diff --git a/include/boost/range/counting_range.hpp b/include/boost/range/counting_range.hpp index bf22f7c..72733a2 100755 --- a/include/boost/range/counting_range.hpp +++ b/include/boost/range/counting_range.hpp @@ -1,13 +1,11 @@ -// 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) // -// Copyright Neil Groves 2008. Use, modification and -// distribution is subject to the Boost Software Licence, 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 +// For more information, see http://www.boost.org/libs/range/ // - #ifndef BOOST_RANGE_COUNTING_RANGE_HPP_INCLUDED #define BOOST_RANGE_COUNTING_RANGE_HPP_INCLUDED diff --git a/include/boost/range/istream_range.hpp b/include/boost/range/istream_range.hpp index f0e9ef4..c3f2248 100755 --- a/include/boost/range/istream_range.hpp +++ b/include/boost/range/istream_range.hpp @@ -1,13 +1,11 @@ -// 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) // -// Copyright Neil Groves 2008. Use, modification and -// distribution is subject to the Boost Software Licence, 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 +// For more information, see http://www.boost.org/libs/range/ // - #ifndef BOOST_RANGE_ISTREAM_RANGE_HPP_INCLUDED #define BOOST_RANGE_ISTREAM_RANGE_HPP_INCLUDED diff --git a/include/boost/range/iterator_range_core.hpp b/include/boost/range/iterator_range_core.hpp index f7df72a..ab1e80e 100755 --- a/include/boost/range/iterator_range_core.hpp +++ b/include/boost/range/iterator_range_core.hpp @@ -290,6 +290,20 @@ namespace boost return *--last; } + // pop_front() - added to model the SinglePassRangePrimitiveConcept + void pop_front() + { + BOOST_ASSERT( !empty() ); + ++m_Begin; + } + + // pop_back() - added to model the BidirectionalRangePrimitiveConcept + void pop_back() + { + BOOST_ASSERT( !empty() ); + --m_End; + } + reference operator[]( difference_type at ) const { BOOST_ASSERT( at >= 0 && at < size() ); diff --git a/include/boost/range/size.hpp b/include/boost/range/size.hpp old mode 100755 new mode 100644 index 311a692..2636905 --- a/include/boost/range/size.hpp +++ b/include/boost/range/size.hpp @@ -15,20 +15,55 @@ # pragma once #endif +#include #include #include #include #include -namespace boost +namespace boost { - - template< class T > - inline BOOST_DEDUCED_TYPENAME range_difference::type size( const T& r ) + namespace range_detail { - BOOST_ASSERT( (boost::end( r ) - boost::begin( r )) >= 0 && - "reachability invariant broken!" ); - return boost::end( r ) - boost::begin( r ); + template< class SinglePassRange > + inline BOOST_DEDUCED_TYPENAME range_difference::type + size_impl(const SinglePassRange& rng, boost::single_pass_traversal_tag) + { + typedef BOOST_DEDUCED_TYPENAME range_difference::type diff_t; + + // A compilation error here will often indicate that an algorithm + // is attempting to use boost::size(rng) for a range that is not a + // model of the RandomAccessRange Concept and does not have a + // member size() function. + // The solution to this issue is to add a range_calculate_size() + // function for the range type that will be found via ADL. + return static_cast(rng.size()); + } + + template< class SinglePassRange > + inline BOOST_DEDUCED_TYPENAME range_difference::type + size_impl(const SinglePassRange& rng, boost::random_access_traversal_tag) + { + BOOST_ASSERT( (boost::end(rng) - boost::begin(rng)) >= 0 && + "reachability invariant broken!" ); + return boost::end(rng) - boost::begin(rng); + } + } // namespace range_detail + + template + inline BOOST_DEDUCED_TYPENAME range_difference::type + range_calculate_size(const SinglePassRange& rng) + { + typedef BOOST_DEDUCED_TYPENAME range_iterator::type iter_t; + typedef BOOST_DEDUCED_TYPENAME iterator_traversal::type traversal_tag; + return range_detail::size_impl(rng, traversal_tag()); + } + + template + inline BOOST_DEDUCED_TYPENAME range_difference::type + size(const SinglePassRange& rng) + { + return range_calculate_size(rng); } } // namespace 'boost' From dfa0764d5346e014fb93d48396416fd71648e88f Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 22 Dec 2010 23:42:02 +0000 Subject: [PATCH 25/32] [boost][range] - Resolution of Trac ticket 4355. Made the naming of the returned types from range adaptors consistent and documented. [SVN r67420] --- doc/html/index.html | 4 +-- .../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/history_ack.html | 4 +-- doc/html/range/introduction.html | 6 ++-- doc/html/range/mfc_atl.html | 4 +-- .../reference/adaptors/introduction.html | 6 ++-- .../adaptors/reference/adjacent_filtered.html | 3 ++ .../adaptors/reference/filtered.html | 3 ++ .../reference/adaptors/reference/indexed.html | 3 ++ .../adaptors/reference/indirected.html | 3 ++ .../adaptors/reference/map_keys.html | 3 ++ .../adaptors/reference/map_values.html | 5 +++ .../adaptors/reference/replaced.html | 3 ++ .../adaptors/reference/replaced_if.html | 3 ++ .../adaptors/reference/reversed.html | 3 ++ .../reference/adaptors/reference/sliced.html | 3 ++ .../adaptors/reference/tokenized.html | 3 ++ .../adaptors/reference/transformed.html | 3 ++ .../reference/adaptors/reference/uniqued.html | 3 ++ .../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 +++---- .../concept_implementation/semantics.html | 2 +- .../reference/ranges/counting_range.html | 8 ++--- doc/html/range/reference/ranges/irange.html | 10 +++--- .../range/reference/ranges/istream_range.html | 6 ++-- .../reference/utilities/iterator_range.html | 6 ++-- doc/html/range/reference/utilities/join.html | 4 +-- .../range/reference/utilities/sub_range.html | 2 +- doc/reference/adaptors/adjacent_filtered.qbk | 1 + doc/reference/adaptors/filtered.qbk | 1 + doc/reference/adaptors/indexed.qbk | 1 + doc/reference/adaptors/indirected.qbk | 1 + doc/reference/adaptors/map_keys.qbk | 1 + doc/reference/adaptors/map_values.qbk | 1 + doc/reference/adaptors/replaced.qbk | 1 + doc/reference/adaptors/replaced_if.qbk | 1 + doc/reference/adaptors/reversed.qbk | 1 + doc/reference/adaptors/sliced.qbk | 1 + doc/reference/adaptors/tokenized.qbk | 1 + doc/reference/adaptors/transformed.qbk | 1 + doc/reference/adaptors/uniqued.qbk | 1 + .../boost/range/adaptor/adjacent_filtered.hpp | 34 +++++++++---------- include/boost/range/adaptor/filtered.hpp | 22 ++++++------ include/boost/range/adaptor/indirected.hpp | 22 ++++++------ include/boost/range/adaptor/map.hpp | 18 +++++----- include/boost/range/adaptor/replaced_if.hpp | 22 ++++++------ include/boost/range/adaptor/reversed.hpp | 22 ++++++------ include/boost/range/adaptor/tokenized.hpp | 22 ++++++------ include/boost/range/adaptor/transformed.hpp | 22 ++++++------ include/boost/range/adaptor/uniqued.hpp | 24 ++++++------- 127 files changed, 630 insertions(+), 576 deletions(-) diff --git a/doc/html/index.html b/doc/html/index.html index fbc5e88..40f5c0c 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)

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

    - +

    Last revised: December 22, 2010 at 21:58:52 GMT

    Last revised: December 22, 2010 at 23:30:58 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 4d01b1e..b3a432b 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 a5ba407..1edac0d 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 73c2ce6..b5272e8 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 df5159f..8862cdd 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 2d619b4..233f029 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/history_ack.html b/doc/html/range/history_ack.html index ebf85e9..24ea577 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/introduction.html b/doc/html/range/introduction.html index 1a2c8f2..00e01d3 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 1eeb4fa..20d30ec 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/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 10a1367..6e56256 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

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

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

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html index f8124b5..cce2471 100644 --- a/doc/html/range/reference/adaptors/reference/adjacent_filtered.html +++ b/doc/html/range/reference/adaptors/reference/adjacent_filtered.html @@ -93,6 +93,9 @@ Range Category: Single Pass Range +
  • + Return Type: boost::adjacent_filtered_range<typeof(rng)> +
  • Returned Range Category: The minimum of the range category of rng diff --git a/doc/html/range/reference/adaptors/reference/filtered.html b/doc/html/range/reference/adaptors/reference/filtered.html index 2a80103..6fe2ce1 100644 --- a/doc/html/range/reference/adaptors/reference/filtered.html +++ b/doc/html/range/reference/adaptors/reference/filtered.html @@ -92,6 +92,9 @@ Range Category: Forward Range
  • +
  • + Range Return Type: boost::filtered_range<typeof(rng)> +
  • Returned Range Category: The minimum of the range category of rng diff --git a/doc/html/range/reference/adaptors/reference/indexed.html b/doc/html/range/reference/adaptors/reference/indexed.html index 066225c..1d29887 100644 --- a/doc/html/range/reference/adaptors/reference/indexed.html +++ b/doc/html/range/reference/adaptors/reference/indexed.html @@ -86,6 +86,9 @@ Range Category: Single Pass Range
  • +
  • + Range Return Type: boost::indexed_range<typeof(rng)> +
  • 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 c0e9715..e990d1e 100644 --- a/doc/html/range/reference/adaptors/reference/indirected.html +++ b/doc/html/range/reference/adaptors/reference/indirected.html @@ -90,6 +90,9 @@ Range Category: Single Pass Range
  • +
  • + Range Return Type: boost::indirected_range<typeof(rng)> +
  • 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 6c5e15f..3120f2f 100644 --- a/doc/html/range/reference/adaptors/reference/map_keys.html +++ b/doc/html/range/reference/adaptors/reference/map_keys.html @@ -89,6 +89,9 @@ Range Category: Single Pass Range
  • +
  • + Range Return Type: boost::select_first_range<typeof(rng)> +
  • 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 b8fe0e2..30ff247 100644 --- a/doc/html/range/reference/adaptors/reference/map_values.html +++ b/doc/html/range/reference/adaptors/reference/map_values.html @@ -89,6 +89,11 @@ Range Category: Single Pass Range
  • +
  • + Range Return Type: for constant + ranges, boost::select_second_const<typeof(rng)> + otherwise boost:select_second_mutable<typeof(rng)> +
  • 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 e18ba49..398258c 100644 --- a/doc/html/range/reference/adaptors/reference/replaced.html +++ b/doc/html/range/reference/adaptors/reference/replaced.html @@ -109,6 +109,9 @@ Range Category: Forward Range
  • +
  • + Range Return Type: boost::replaced_range<typeof(rng)> +
  • 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 f8d4f2d..e259a84 100644 --- a/doc/html/range/reference/adaptors/reference/replaced_if.html +++ b/doc/html/range/reference/adaptors/reference/replaced_if.html @@ -105,6 +105,9 @@ Range Category: Forward Range
  • +
  • + Range Return Type: boost::replaced_if_range<typeof(rng)> +
  • 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 7ff9467..efdf11f 100644 --- a/doc/html/range/reference/adaptors/reference/reversed.html +++ b/doc/html/range/reference/adaptors/reference/reversed.html @@ -82,6 +82,9 @@ Range Category: Bidirectional Range
  • +
  • + Range Return Type: boost::reversed_range<typeof(rng)> +
  • 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 1d02f3f..ea0b736 100644 --- a/doc/html/range/reference/adaptors/reference/sliced.html +++ b/doc/html/range/reference/adaptors/reference/sliced.html @@ -92,6 +92,9 @@ Range Category: Random Access Range
  • +
  • + Range Return Type: boost::sliced_range<typeof(rng)> +
  • 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 2c3826b..242fbc2 100644 --- a/doc/html/range/reference/adaptors/reference/tokenized.html +++ b/doc/html/range/reference/adaptors/reference/tokenized.html @@ -130,6 +130,9 @@ Range Category: Random Access Range
  • +
  • + Range Return Type: boost::tokenized_range<typeof(rng)> +
  • 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 139247c..97200e9 100644 --- a/doc/html/range/reference/adaptors/reference/transformed.html +++ b/doc/html/range/reference/adaptors/reference/transformed.html @@ -95,6 +95,9 @@ Range Category: Single Pass Range
  • +
  • + Range Return Type: boost::transformed_range<typeof(rng)> +
  • 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 75552a7..4174cf8 100644 --- a/doc/html/range/reference/adaptors/reference/uniqued.html +++ b/doc/html/range/reference/adaptors/reference/uniqued.html @@ -86,6 +86,9 @@ Range Category: Forward Range
  • +
  • + Range Return Type: boost::uniqued_range<typeof(rng)> +
  • Returned Range Category: The minimum of the range concept of rng diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index daec516..825b9e3 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 56a9532..570684f 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index 23b851f..1af7617 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 7d2a3cc..24be268 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 13789c6..38c191f 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index f36c722..47031fb 100644 --- a/doc/html/range/reference/algorithms/mutating/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -27,7 +27,7 @@ copy_backward

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -59,14 +59,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/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index 79a0ab7..b460574 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index 8fb74fc..68c77b3 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 062a669..9557ece 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index fa95e8c..725d90b 100644 --- a/doc/html/range/reference/algorithms/mutating/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -27,7 +27,7 @@ inplace_merge

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:
    - + For the non-predicate version:
    @@ -142,7 +142,7 @@
    - + For the predicate version:
    @@ -163,7 +163,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html index 93aef7b..fc2ed3e 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:
    @@ -194,7 +194,7 @@
    - + For the predicate version:
    @@ -230,7 +230,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 8153757..39bff6f 100644 --- a/doc/html/range/reference/algorithms/mutating/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -27,7 +27,7 @@ nth_element

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

    @@ -69,14 +69,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

    @@ -127,7 +127,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 fe4900c..bacf128 100644 --- a/doc/html/range/reference/algorithms/mutating/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -27,7 +27,7 @@ partial_sort

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -132,7 +132,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html index bd70b83..7807d04 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index 976310c..06d07ff 100644 --- a/doc/html/range/reference/algorithms/mutating/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -27,7 +27,7 @@ random_shuffle

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -98,7 +98,7 @@

    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index 3c0096d..efdfd1b 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index b5539a1..e09785f 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -27,7 +27,7 @@ remove_copy

    - + Prototype

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

    - + Description

    @@ -53,14 +53,14 @@ rng for which x == val is false.

    - + Definition

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

    - + Requirements
    - + 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 477027e..203eb6f 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -27,7 +27,7 @@ remove_copy_if

    - + Prototype

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

    - + Description

    @@ -54,14 +54,14 @@ is false.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index d1a92c7..3c6f9c5 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index a9a0fad..8749215 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index 1410e90..0ece078 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -27,7 +27,7 @@ replace_copy

    - + Prototype

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

    - + Description

    @@ -53,14 +53,14 @@ x.

    - + Definition

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

    - + Requirements
    - + 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 fc1293d..c13409d 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -27,7 +27,7 @@ replace_copy_if

    - + Prototype

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

    - + Description

    @@ -51,14 +51,14 @@ : x.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index f17b1d6..1f0d9a2 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -27,7 +27,7 @@ replace_if

    - + Prototype

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

    - + Description

    @@ -51,14 +51,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/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index 5804734..5abd321 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index a276a3c..5ebc47e 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse_copy.html +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -27,7 +27,7 @@ reverse_copy

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -49,14 +49,14 @@ Returns the output iterator one passed the last copied element.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index e96b720..e6bfd9d 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index d309871..9b20925 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate_copy.html +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -27,7 +27,7 @@ rotate_copy

    - + Prototype

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

    - + Description

    @@ -51,14 +51,14 @@ and [middle, end(rng)) to out.

    - + Definition

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

    - + Requirements
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index 94606d7..4f1728d 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 dcb0dc0..f70e72c 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -27,7 +27,7 @@ stable_partition

    - + Prototype

    @@ -60,7 +60,7 @@

    - + Description

    @@ -82,14 +82,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/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index e5aa6f0..0b0cb71 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -27,7 +27,7 @@ stable_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/stable_sort.hpp

    - + Requirements

    @@ -129,7 +129,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 af0f471..f0502aa 100644 --- a/doc/html/range/reference/algorithms/mutating/swap_ranges.html +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -27,7 +27,7 @@ swap_ranges

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -49,14 +49,14 @@ Returns a reference to rng2.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index bf64cd8..97301b9 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:

    @@ -203,7 +203,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 5c41c64..7e56d5a 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 c6fb421..6e35b0f 100644 --- a/doc/html/range/reference/algorithms/mutating/unique_copy.html +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -27,7 +27,7 @@ unique_copy

    - + Prototype

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

    - + Description

    @@ -55,14 +55,14 @@ value type.

    - + Definition

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

    - + Requirements

    @@ -116,7 +116,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 639b2e1..8c69156 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 f4ac9df..27e00b3 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 1ae9444..9e93de0 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 8537f05..38acd81 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 7b42e6c..c5dcb93 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
      @@ -73,7 +73,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 f258c14..8366898 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 bf313f1..f7b55cb 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
      @@ -88,7 +88,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 613ce8d..a2ec0c6 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 92c7120..16ca8fd 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 cfde406..5db4582 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 04e006f..41eb516 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -27,7 +27,7 @@ remove_erase_if

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
      @@ -72,7 +72,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 7d32670..4ad3a97 100644 --- a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -27,7 +27,7 @@ adjacent_find

    - + Prototype

    @@ -76,7 +76,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -142,7 +142,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 04b2085..94c58ed 100644 --- a/doc/html/range/reference/algorithms/non_mutating/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -27,7 +27,7 @@ binary_search

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -110,7 +110,7 @@

    - + Precondition:

    @@ -128,7 +128,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 9f8af9b..6cf0344 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
    - + 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 50e2737..697052f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -27,7 +27,7 @@ count_if

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index c97044f..eb53a39 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 d6855c4..5190a3c 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -27,7 +27,7 @@ equal_range

    - + Prototype

    @@ -70,7 +70,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -154,7 +154,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 c3682da..dca2863 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
    - + 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 803708d..9921541 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -27,7 +27,7 @@ find_end

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -147,7 +147,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 35b5563..b0031b6 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 @@ -27,7 +27,7 @@ find_first_of

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -146,7 +146,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 ffada0c..7131c6b 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -27,7 +27,7 @@ find_if

    - + Prototype

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

    - + Description

    @@ -63,14 +63,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:

    @@ -97,7 +97,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 9115713..368055c 100644 --- a/doc/html/range/reference/algorithms/non_mutating/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -27,7 +27,7 @@ for_each

    - + Prototype

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

    - + Description

    @@ -58,14 +58,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/non_mutating/lexicographical_compare.html b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html index d1187e1..59c54a9 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -27,7 +27,7 @@ lexicographical_compare

    - + Prototype

    @@ -52,7 +52,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -144,7 +144,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 a6cfc87..02e5abf 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -27,7 +27,7 @@ lower_bound

    - + Prototype

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

    - + Description

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

    - + Definition

    Defined in the header file boost/range/algorithm/lower_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/non_mutating/max_element.html b/doc/html/range/reference/algorithms/non_mutating/max_element.html index 31bacef..7b2939f 100644 --- a/doc/html/range/reference/algorithms/non_mutating/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -27,7 +27,7 @@ max_element

    - + Prototype

    @@ -83,7 +83,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -141,7 +141,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 4421bf6..53c55a1 100644 --- a/doc/html/range/reference/algorithms/non_mutating/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -27,7 +27,7 @@ min_element

    - + Prototype

    @@ -83,7 +83,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -141,7 +141,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 f041699..3a29e78 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -27,7 +27,7 @@ mismatch

    - + Prototype

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

    - + Description

    @@ -117,14 +117,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

    @@ -185,14 +185,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 6d81a59..213e25e 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -27,7 +27,7 @@ search

    - + Prototype

    @@ -95,7 +95,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -182,7 +182,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 1c89d91..2f97f43 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search_n.html +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -27,7 +27,7 @@ search_n

    - + Prototype

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

    - + Description

    @@ -63,14 +63,14 @@ and by a predicate when one is supplied.

    - + Definition

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

    - + Requirements

    @@ -124,7 +124,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 ac195cf..1c74d0c 100644 --- a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -27,7 +27,7 @@ upper_bound

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -128,7 +128,7 @@

    - + Precondition:

    @@ -146,7 +146,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 745af74..b2337f4 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 2d8368f..31d590e 100644 --- a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -27,7 +27,7 @@ adjacent_difference

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -110,7 +110,7 @@
    - + For the second version
    @@ -145,7 +145,7 @@
    - + Precondition:

    @@ -153,7 +153,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 b9d04bd..489f9d4 100644 --- a/doc/html/range/reference/algorithms/numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -27,7 +27,7 @@ inner_product

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -112,7 +112,7 @@
    - + For the second version
    @@ -161,14 +161,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 d322783..406ce7f 100644 --- a/doc/html/range/reference/algorithms/numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -27,7 +27,7 @@ partial_sum

    - + Prototype

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

    - + Description

    @@ -57,18 +57,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
    @@ -98,7 +98,7 @@
    - + For the second version
    @@ -127,7 +127,7 @@
    - + Precondition:

    @@ -135,7 +135,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 4dd31f6..d2c118c 100644 --- a/doc/html/range/reference/algorithms/permutation/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -27,7 +27,7 @@ next_permutation

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -124,7 +124,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 5ae4da0..43f6cb3 100644 --- a/doc/html/range/reference/algorithms/permutation/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -27,7 +27,7 @@ prev_permutation

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index 217e3ea..dee7293 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 c6bb0e4..65e9742 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 4430baa..21da1a2 100644 --- a/doc/html/range/reference/algorithms/set/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -27,7 +27,7 @@ set_intersection

    - + 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_symmetric_difference.html b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html index 6ed6157..2fb5e1e 100644 --- a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -27,7 +27,7 @@ set_symmetric_difference

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -167,7 +167,7 @@

    - + Precondition:

    @@ -185,7 +185,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 e43ef7c..55b3e8f 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index d5eaba3..0e23fd7 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index 6d2f8c2..df9ec6b 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 1f518eb..bf1a46e 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
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index bbe1429..765f7ea 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index 827172d..d6e31ee 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
    @@ -207,7 +207,7 @@ ==r.end();

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index 5031ccb..c2b69f5 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 51aaecd..7251a24 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/reference/adaptors/adjacent_filtered.qbk b/doc/reference/adaptors/adjacent_filtered.qbk index 4f092b8..a15f992 100644 --- a/doc/reference/adaptors/adjacent_filtered.qbk +++ b/doc/reference/adaptors/adjacent_filtered.qbk @@ -15,6 +15,7 @@ * [*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:] __single_pass_range__ +* [*Return Type:] `boost::adjacent_filtered_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/filtered.qbk b/doc/reference/adaptors/filtered.qbk index ea68b28..1b14524 100644 --- a/doc/reference/adaptors/filtered.qbk +++ b/doc/reference/adaptors/filtered.qbk @@ -15,6 +15,7 @@ * [*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:] __forward_range__ +* [*Range Return Type:] `boost::filtered_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 f5ba12e..9778f20 100644 --- a/doc/reference/adaptors/indexed.qbk +++ b/doc/reference/adaptors/indexed.qbk @@ -13,6 +13,7 @@ * [*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:] __single_pass_range__ +* [*Range Return Type:] `boost::indexed_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 5e00c9d..5a1ed05 100644 --- a/doc/reference/adaptors/indirected.qbk +++ b/doc/reference/adaptors/indirected.qbk @@ -14,6 +14,7 @@ * [*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:] __single_pass_range__ +* [*Range Return Type:] `boost::indirected_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 a1740ea..01b9d34 100644 --- a/doc/reference/adaptors/map_keys.qbk +++ b/doc/reference/adaptors/map_keys.qbk @@ -14,6 +14,7 @@ * [*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:] __single_pass_range__ +* [*Range Return Type:] `boost::select_first_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 b0eb09d..17ad9c4 100644 --- a/doc/reference/adaptors/map_values.qbk +++ b/doc/reference/adaptors/map_values.qbk @@ -14,6 +14,7 @@ * [*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:] __single_pass_range__ +* [*Range Return Type:] for constant ranges, `boost::select_second_const` otherwise `boost:select_second_mutable` * [*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 4a03e28..3df708c 100644 --- a/doc/reference/adaptors/replaced.qbk +++ b/doc/reference/adaptors/replaced.qbk @@ -16,6 +16,7 @@ * `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:] __forward_range__ +* [*Range Return Type:] `boost::replaced_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 0e615a0..b160b34 100644 --- a/doc/reference/adaptors/replaced_if.qbk +++ b/doc/reference/adaptors/replaced_if.qbk @@ -16,6 +16,7 @@ * `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:] __forward_range__ +* [*Range Return Type:] `boost::replaced_if_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 efcb5d9..7116475 100644 --- a/doc/reference/adaptors/reversed.qbk +++ b/doc/reference/adaptors/reversed.qbk @@ -13,6 +13,7 @@ * [*Returns:] A range whose iterators behave as if they were the original iterators wrapped in `reverse_iterator`. * [*Range Category:] __bidirectional_range__ +* [*Range Return Type:] `boost::reversed_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 0780e0f..33b57ca 100644 --- a/doc/reference/adaptors/sliced.qbk +++ b/doc/reference/adaptors/sliced.qbk @@ -14,6 +14,7 @@ * [*Precondition:] `0 <= n && n <= m && m < distance(rng)` * [*Returns:] `make_range(rng, n, m)` * [*Range Category:] __random_access_range__ +* [*Range Return Type:] `boost::sliced_range` * [*Returned Range Category:] __random_access_range__ [section:sliced_example sliced example] diff --git a/doc/reference/adaptors/tokenized.qbk b/doc/reference/adaptors/tokenized.qbk index 1589873..2127785 100644 --- a/doc/reference/adaptors/tokenized.qbk +++ b/doc/reference/adaptors/tokenized.qbk @@ -41,6 +41,7 @@ * [*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:] __random_access_range__ +* [*Range Return Type:] `boost::tokenized_range` * [*Returned Range Category:] __random_access_range__ [endsect] diff --git a/doc/reference/adaptors/transformed.qbk b/doc/reference/adaptors/transformed.qbk index 7b66f0d..ec19583 100644 --- a/doc/reference/adaptors/transformed.qbk +++ b/doc/reference/adaptors/transformed.qbk @@ -15,6 +15,7 @@ * [*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:] __single_pass_range__ +* [*Range Return Type:] `boost::transformed_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 3ef21e6..a74d1a8 100644 --- a/doc/reference/adaptors/uniqued.qbk +++ b/doc/reference/adaptors/uniqued.qbk @@ -14,6 +14,7 @@ * [*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:] __forward_range__ +* [*Range Return Type:] `boost::uniqued_range` * [*Returned Range Category:] The minimum of the range concept of `rng` and __forward_range__. [section:uniqued_example uniqued example] diff --git a/include/boost/range/adaptor/adjacent_filtered.hpp b/include/boost/range/adaptor/adjacent_filtered.hpp index f63a599..edc1dff 100644 --- a/include/boost/range/adaptor/adjacent_filtered.hpp +++ b/include/boost/range/adaptor/adjacent_filtered.hpp @@ -116,7 +116,7 @@ namespace boost }; template< class P, class R, bool default_pass > - struct adjacent_filter_range + struct adjacent_filtered_range : iterator_range< skip_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type, P, @@ -138,7 +138,7 @@ namespace boost typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iterator; public: - adjacent_filter_range( const P& p, R& r ) + adjacent_filtered_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)) { @@ -164,37 +164,37 @@ namespace boost }; template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filtered_range operator|( ForwardRng& r, const adjacent_holder& f ) { - return adjacent_filter_range( f.val, r ); + return adjacent_filtered_range( f.val, r ); } template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filtered_range operator|( const ForwardRng& r, const adjacent_holder& f ) { - return adjacent_filter_range( f.val, r ); + return adjacent_filtered_range( f.val, r ); } template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filtered_range operator|( ForwardRng& r, const adjacent_excl_holder& f ) { - return adjacent_filter_range( f.val, r ); + return adjacent_filtered_range( f.val, r ); } template< class ForwardRng, class BinPredicate > - inline adjacent_filter_range + inline adjacent_filtered_range operator|( const ForwardRng& r, const adjacent_excl_holder& f ) { - return adjacent_filter_range( f.val, r ); + return adjacent_filtered_range( f.val, r ); } } // 'range_detail' @@ -202,7 +202,7 @@ namespace boost // 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; + using range_detail::adjacent_filtered_range; namespace adaptors { @@ -218,17 +218,17 @@ namespace boost } template - inline adjacent_filter_range + inline adjacent_filtered_range adjacent_filter(ForwardRng& rng, BinPredicate filter_pred) { - return adjacent_filter_range(filter_pred, rng); + return adjacent_filtered_range(filter_pred, rng); } template - inline adjacent_filter_range + inline adjacent_filtered_range adjacent_filter(const ForwardRng& rng, BinPredicate filter_pred) { - return adjacent_filter_range(filter_pred, rng); + return adjacent_filtered_range(filter_pred, rng); } } // 'adaptors' diff --git a/include/boost/range/adaptor/filtered.hpp b/include/boost/range/adaptor/filtered.hpp index 62888e7..d9315bd 100755 --- a/include/boost/range/adaptor/filtered.hpp +++ b/include/boost/range/adaptor/filtered.hpp @@ -20,7 +20,7 @@ namespace boost namespace range_detail { template< class P, class R > - struct filter_range : + struct filtered_range : boost::iterator_range< boost::filter_iterator< P, BOOST_DEDUCED_TYPENAME range_iterator::type @@ -34,7 +34,7 @@ namespace boost > > base; public: - filter_range( P p, R& r ) + filtered_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) ) ) { } @@ -48,19 +48,19 @@ namespace boost }; template< class InputRng, class Predicate > - inline filter_range + inline filtered_range operator|( InputRng& r, const filter_holder& f ) { - return filter_range( f.val, r ); + return filtered_range( f.val, r ); } template< class InputRng, class Predicate > - inline filter_range + inline filtered_range operator|( const InputRng& r, const filter_holder& f ) { - return filter_range( f.val, r ); + return filtered_range( f.val, r ); } } // 'range_detail' @@ -70,7 +70,7 @@ namespace boost // 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; + using range_detail::filtered_range; namespace adaptors { @@ -82,17 +82,17 @@ namespace boost } template - inline filter_range + inline filtered_range filter(InputRange& rng, Predicate filter_pred) { - return range_detail::filter_range( filter_pred, rng ); + return range_detail::filtered_range( filter_pred, rng ); } template - inline filter_range + inline filtered_range filter(const InputRange& rng, Predicate filter_pred) { - return range_detail::filter_range( filter_pred, rng ); + return range_detail::filtered_range( filter_pred, rng ); } } // 'adaptors' diff --git a/include/boost/range/adaptor/indirected.hpp b/include/boost/range/adaptor/indirected.hpp index 4abb3ec..d7edc18 100644 --- a/include/boost/range/adaptor/indirected.hpp +++ b/include/boost/range/adaptor/indirected.hpp @@ -19,7 +19,7 @@ namespace boost namespace range_detail { template< class R > - struct indirect_range : + struct indirected_range : public boost::iterator_range< boost::indirect_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type @@ -35,7 +35,7 @@ namespace boost base; public: - explicit indirect_range( R& r ) + explicit indirected_range( R& r ) : base( r ) { } }; @@ -43,22 +43,22 @@ namespace boost struct indirect_forwarder {}; template< class InputRng > - inline indirect_range + inline indirected_range operator|( InputRng& r, indirect_forwarder ) { - return indirect_range( r ); + return indirected_range( r ); } template< class InputRng > - inline indirect_range + inline indirected_range operator|( const InputRng& r, indirect_forwarder ) { - return indirect_range( r ); + return indirected_range( r ); } } // 'range_detail' - using range_detail::indirect_range; + using range_detail::indirected_range; namespace adaptors { @@ -69,17 +69,17 @@ namespace boost } template - inline indirect_range + inline indirected_range indirect(InputRange& rng) { - return indirect_range(rng); + return indirected_range(rng); } template - inline indirect_range + inline indirected_range indirect(const InputRange& rng) { - return indirect_range(rng); + return indirected_range(rng); } } // 'adaptors' diff --git a/include/boost/range/adaptor/map.hpp b/include/boost/range/adaptor/map.hpp index 6d08ea7..8c39eca 100755 --- a/include/boost/range/adaptor/map.hpp +++ b/include/boost/range/adaptor/map.hpp @@ -62,11 +62,11 @@ namespace boost template class select_first_range - : public transform_range< + : public transformed_range< select_first, const StdPairRng> { - typedef transform_range, const StdPairRng> base; + typedef transformed_range, const StdPairRng> base; public: typedef select_first transform_fn_type; typedef const StdPairRng source_range_type; @@ -81,11 +81,11 @@ namespace boost template class select_second_mutable_range - : public transform_range< + : public transformed_range< select_second_mutable, StdPairRng> { - typedef transform_range, StdPairRng> base; + typedef transformed_range, StdPairRng> base; public: typedef select_second_mutable transform_fn_type; typedef StdPairRng source_range_type; @@ -100,11 +100,11 @@ namespace boost template class select_second_const_range - : public transform_range< + : public transformed_range< select_second_const, const StdPairRng> { - typedef transform_range, const StdPairRng> base; + typedef transformed_range, const StdPairRng> base; public: typedef select_second_const transform_fn_type; typedef const StdPairRng source_range_type; @@ -122,7 +122,7 @@ namespace boost operator|( const StdPairRng& r, map_keys_forwarder ) { return operator|( r, - boost::adaptors::transformed( select_first() ) ); + boost::adaptors::transformed( select_first() ) ); } template< class StdPairRng > @@ -130,7 +130,7 @@ namespace boost operator|( StdPairRng& r, map_values_forwarder ) { return operator|( r, - boost::adaptors::transformed( select_second_mutable() ) ); + boost::adaptors::transformed( select_second_mutable() ) ); } template< class StdPairRng > @@ -138,7 +138,7 @@ namespace boost operator|( const StdPairRng& r, map_values_forwarder ) { return operator|( r, - boost::adaptors::transformed( select_second_const() ) ); + boost::adaptors::transformed( select_second_const() ) ); } } // 'range_detail' diff --git a/include/boost/range/adaptor/replaced_if.hpp b/include/boost/range/adaptor/replaced_if.hpp index 9353abd..b514354 100644 --- a/include/boost/range/adaptor/replaced_if.hpp +++ b/include/boost/range/adaptor/replaced_if.hpp @@ -47,7 +47,7 @@ namespace boost }; template< class Pred, class R > - class replace_if_range : + class replaced_if_range : public boost::iterator_range< boost::transform_iterator< replace_value_if< Pred, BOOST_DEDUCED_TYPENAME range_value::type >, @@ -64,7 +64,7 @@ namespace boost public: typedef BOOST_DEDUCED_TYPENAME range_value::type value_type; - replace_if_range( R& r, const Pred& pred, value_type to ) + replaced_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) ) ) { } @@ -87,23 +87,23 @@ namespace boost }; template< class Pred, class InputRng > - inline replace_if_range + inline replaced_if_range operator|( InputRng& r, const replace_if_holder::type>& f ) { - return replace_if_range(r, f.pred(), f.to()); + return replaced_if_range(r, f.pred(), f.to()); } template< class Pred, class InputRng > - inline replace_if_range + inline replaced_if_range operator|( const InputRng& r, const replace_if_holder::type>& f ) { - return replace_if_range(r, f.pred(), f.to()); + return replaced_if_range(r, f.pred(), f.to()); } } // 'range_detail' - using range_detail::replace_if_range; + using range_detail::replaced_if_range; namespace adaptors { @@ -115,19 +115,19 @@ namespace boost } template - inline replace_if_range + inline replaced_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::replaced_if_range(rng, pred, to); } template - inline replace_if_range + inline replaced_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); + return range_detail::replaced_if_range(rng, pred, to); } } // 'adaptors' diff --git a/include/boost/range/adaptor/reversed.hpp b/include/boost/range/adaptor/reversed.hpp index 229702b..c85eda8 100755 --- a/include/boost/range/adaptor/reversed.hpp +++ b/include/boost/range/adaptor/reversed.hpp @@ -19,7 +19,7 @@ namespace boost namespace range_detail { template< class R > - struct reverse_range : + struct reversed_range : public boost::iterator_range< boost::reverse_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type @@ -37,7 +37,7 @@ namespace boost public: typedef boost::reverse_iterator::type> iterator; - reverse_range( R& r ) + explicit reversed_range( R& r ) : base( iterator(boost::end(r)), iterator(boost::begin(r)) ) { } }; @@ -45,22 +45,22 @@ namespace boost struct reverse_forwarder {}; template< class BidirectionalRng > - inline reverse_range + inline reversed_range operator|( BidirectionalRng& r, reverse_forwarder ) { - return reverse_range( r ); + return reversed_range( r ); } template< class BidirectionalRng > - inline reverse_range + inline reversed_range operator|( const BidirectionalRng& r, reverse_forwarder ) { - return reverse_range( r ); + return reversed_range( r ); } } // 'range_detail' - using range_detail::reverse_range; + using range_detail::reversed_range; namespace adaptors { @@ -71,17 +71,17 @@ namespace boost } template - inline reverse_range + inline reversed_range reverse(BidirectionalRange& rng) { - return reverse_range(rng); + return reversed_range(rng); } template - inline reverse_range + inline reversed_range reverse(const BidirectionalRange& rng) { - return reverse_range(rng); + return reversed_range(rng); } } // 'adaptors' diff --git a/include/boost/range/adaptor/tokenized.hpp b/include/boost/range/adaptor/tokenized.hpp index 6b6a6fa..8a7402a 100755 --- a/include/boost/range/adaptor/tokenized.hpp +++ b/include/boost/range/adaptor/tokenized.hpp @@ -20,7 +20,7 @@ namespace boost { template< class R > - struct token_range : + struct tokenized_range : public boost::iterator_range< boost::regex_token_iterator< BOOST_DEDUCED_TYPENAME range_iterator::type @@ -42,7 +42,7 @@ namespace boost public: template< class Regex, class Submatch, class Flag > - token_range( R& r, const Regex& re, const Submatch& sub, Flag f ) + tokenized_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() ) @@ -90,24 +90,24 @@ namespace boost }; template< class BidirectionalRng, class R, class S, class F > - inline token_range + inline tokenized_range operator|( BidirectionalRng& r, const regex_holder& f ) { - return token_range( r, f.re, f.sub, f.f ); + return tokenized_range( r, f.re, f.sub, f.f ); } template< class BidirectionalRng, class R, class S, class F > - inline token_range + inline tokenized_range operator|( const BidirectionalRng& r, const regex_holder& f ) { - return token_range( r, f.re, f.sub, f.f ); + return tokenized_range( r, f.re, f.sub, f.f ); } } // 'range_detail' - using range_detail::token_range; + using range_detail::tokenized_range; namespace adaptors { @@ -118,17 +118,17 @@ namespace boost } template - inline token_range + inline tokenized_range tokenize(BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f) { - return token_range(rng, reg, sub, f); + return tokenized_range(rng, reg, sub, f); } template - inline token_range + inline tokenized_range tokenize(const BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f) { - return token_range(rng, reg, sub, f); + return tokenized_range(rng, reg, sub, f); } } // 'adaptors' diff --git a/include/boost/range/adaptor/transformed.hpp b/include/boost/range/adaptor/transformed.hpp index 21ce52a..ee4ab34 100755 --- a/include/boost/range/adaptor/transformed.hpp +++ b/include/boost/range/adaptor/transformed.hpp @@ -22,7 +22,7 @@ namespace boost { template< class F, class R > - struct transform_range : + struct transformed_range : public boost::iterator_range< boost::transform_iterator< F, BOOST_DEDUCED_TYPENAME range_iterator::type @@ -41,7 +41,7 @@ namespace boost typedef F transform_fn_type; typedef R source_range_type; - transform_range( F f, R& r ) + transformed_range( F f, R& r ) : base( make_transform_iterator( boost::begin(r), f ), make_transform_iterator( boost::end(r), f ) ) @@ -56,24 +56,24 @@ namespace boost }; template< class InputRng, class UnaryFunction > - inline transform_range + inline transformed_range operator|( InputRng& r, const transform_holder& f ) { - return transform_range( f.val, r ); + return transformed_range( f.val, r ); } template< class InputRng, class UnaryFunction > - inline transform_range + inline transformed_range operator|( const InputRng& r, const transform_holder& f ) { - return transform_range( f.val, r ); + return transformed_range( f.val, r ); } } // 'range_detail' - using range_detail::transform_range; + using range_detail::transformed_range; namespace adaptors { @@ -85,17 +85,17 @@ namespace boost } template - inline transform_range + inline transformed_range transform(InputRange& rng, UnaryFunction fn) { - return transform_range(fn, rng); + return transformed_range(fn, rng); } template - inline transform_range + inline transformed_range transform(const InputRange& rng, UnaryFunction fn) { - return transform_range(fn, rng); + return transformed_range(fn, rng); } } // 'adaptors' diff --git a/include/boost/range/adaptor/uniqued.hpp b/include/boost/range/adaptor/uniqued.hpp index ad6f7f4..40c8249 100755 --- a/include/boost/range/adaptor/uniqued.hpp +++ b/include/boost/range/adaptor/uniqued.hpp @@ -32,35 +32,35 @@ namespace boost }; template - class unique_range : public adjacent_filter_range + class uniqued_range : public adjacent_filtered_range { - typedef adjacent_filter_range base; + typedef adjacent_filtered_range base; public: - explicit unique_range(ForwardRng& rng) + explicit uniqued_range(ForwardRng& rng) : base(unique_not_equal_to(), rng) { } }; template< class ForwardRng > - inline unique_range + inline uniqued_range operator|( ForwardRng& r, unique_forwarder ) { - return unique_range(r); + return uniqued_range(r); } template< class ForwardRng > - inline unique_range + inline uniqued_range operator|( const ForwardRng& r, unique_forwarder ) { - return unique_range(r); + return uniqued_range(r); } } // 'range_detail' - using range_detail::unique_range; + using range_detail::uniqued_range; namespace adaptors { @@ -71,17 +71,17 @@ namespace boost } template - inline unique_range + inline uniqued_range unique(ForwardRange& rng) { - return unique_range(rng); + return uniqued_range(rng); } template - inline unique_range + inline uniqued_range unique(const ForwardRange& rng) { - return unique_range(rng); + return uniqued_range(rng); } } // 'adaptors' From de24df7962c78a3cf9d268ace0683d34fe813f96 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 23 Dec 2010 00:12:28 +0000 Subject: [PATCH 26/32] [boost][range] - Fixed the search_n predicate version and resolve Trac ticket 4776 [SVN r67421] --- include/boost/range/algorithm/search_n.hpp | 2 +- test/algorithm_test/search_n.cpp | 107 ++++++++++++++++++++- 2 files changed, 106 insertions(+), 3 deletions(-) diff --git a/include/boost/range/algorithm/search_n.hpp b/include/boost/range/algorithm/search_n.hpp index c277aea..0941b1e 100755 --- a/include/boost/range/algorithm/search_n.hpp +++ b/include/boost/range/algorithm/search_n.hpp @@ -216,7 +216,7 @@ namespace range_detail BOOST_RANGE_CONCEPT_ASSERT(( BinaryPredicateConcept< BinaryPredicate, - typename std::iterator_traits::value_type, + typename std::iterator_traits::value_type, Value> )); diff --git a/test/algorithm_test/search_n.cpp b/test/algorithm_test/search_n.cpp index 3b0aa91..246d397 100644 --- a/test/algorithm_test/search_n.cpp +++ b/test/algorithm_test/search_n.cpp @@ -21,6 +21,104 @@ namespace { + template + inline ForwardIterator + reference_search_n(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value) + { + if (count <= 0) + return first; + else if (count == 1) + return std::find(first, last, value); + else + { + first = std::find(first, last, value); + while (first != last) + { + typename std::iterator_traits::difference_type n = count; + ForwardIterator i = first; + ++i; + while (i != last && n != 1 && *i==value) + { + ++i; + --n; + } + if (n == 1) + return first; + if (i == last) + return last; + first = std::find(++i, last, value); + } + } + return last; + } + + template + inline ForwardIterator + reference_search_n(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value, + BinaryPredicate pred) + { + typedef typename std::iterator_traits::iterator_category cat_t; + + if (count <= 0) + return first; + if (count == 1) + { + while (first != last && !static_cast(pred(*first, value))) + ++first; + return first; + } + else + { + typedef typename std::iterator_traits::difference_type difference_t; + + while (first != last && !static_cast(pred(*first, value))) + ++first; + + while (first != last) + { + difference_t n = count; + ForwardIterator i = first; + ++i; + while (i != last && n != 1 && static_cast(pred(*i, value))) + { + ++i; + --n; + } + if (n == 1) + return first; + if (i == last) + return last; + first = ++i; + while (first != last && !static_cast(pred(*first, value))) + ++first; + } + } + return last; + } + + template< class Container1, class Value, class Pred > + void test_search_n_pred_impl(Container1& cont1, Value value, Pred pred) + { + 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, pred); + BOOST_CHECK( it == boost::search_n(boost::make_iterator_range(cont1), n, value, pred) ); + BOOST_CHECK( it == reference_search_n(cont1.begin(), cont1.end(), n, value, pred) ); + + const_iterator1_t cit = boost::search_n(ccont1, n, value, pred); + BOOST_CHECK( cit == boost::search_n(boost::make_iterator_range(ccont1), n, value, pred) ); + BOOST_CHECK( cit == reference_search_n(ccont1.begin(), ccont1.end(), n, value, pred) ); + } + } + template< class Container1, class Value > void test_search_n_impl(Container1& cont1, Value value) { @@ -33,12 +131,17 @@ namespace { iterator1_t it = boost::search_n(cont1, n, value); BOOST_CHECK( it == boost::search_n(boost::make_iterator_range(cont1), n, value) ); - BOOST_CHECK( it == std::search_n(cont1.begin(), cont1.end(), n, value) ); + BOOST_CHECK( it == reference_search_n(cont1.begin(), cont1.end(), n, value) ); const_iterator1_t cit = boost::search_n(ccont1, n, value); BOOST_CHECK( cit == boost::search_n(boost::make_iterator_range(ccont1), n, value) ); - BOOST_CHECK( cit == std::search_n(ccont1.begin(), ccont1.end(), n, value) ); + BOOST_CHECK( cit == reference_search_n(ccont1.begin(), ccont1.end(), n, value) ); } + + test_search_n_pred_impl(cont1, value, std::less()); + test_search_n_pred_impl(cont1, value, std::greater()); + test_search_n_pred_impl(cont1, value, std::equal_to()); + test_search_n_pred_impl(cont1, value, std::not_equal_to()); } template< class Container1, class Container2 > From 3adf4d2869b80d4227be6cf872b4a0486181fbe1 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 23 Dec 2010 00:56:04 +0000 Subject: [PATCH 27/32] [boost][range] - Resolution of Trac item 4905 - Implementation of boost::range::map_keys should use boost::range_reference [SVN r67423] --- include/boost/range/adaptor/map.hpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/include/boost/range/adaptor/map.hpp b/include/boost/range/adaptor/map.hpp index 8c39eca..ff8b97e 100755 --- a/include/boost/range/adaptor/map.hpp +++ b/include/boost/range/adaptor/map.hpp @@ -14,6 +14,7 @@ #include #include #include +#include namespace boost { @@ -25,11 +26,10 @@ namespace boost template< class Map > struct select_first { - typedef BOOST_DEDUCED_TYPENAME range_value::type pair_t; - typedef const BOOST_DEDUCED_TYPENAME pair_t::first_type& - result_type; + typedef BOOST_DEDUCED_TYPENAME range_reference::type argument_type; + typedef const BOOST_DEDUCED_TYPENAME range_value::type::first_type& result_type; - result_type operator()( const pair_t& r ) const + result_type operator()( argument_type r ) const { return r.first; } @@ -38,10 +38,10 @@ namespace boost template< class Map > struct select_second_mutable { - typedef BOOST_DEDUCED_TYPENAME range_value::type pair_t; - typedef BOOST_DEDUCED_TYPENAME pair_t::second_type& result_type; + typedef BOOST_DEDUCED_TYPENAME range_reference::type argument_type; + typedef BOOST_DEDUCED_TYPENAME range_value::type::second_type& result_type; - result_type operator()( pair_t& r ) const + result_type operator()( argument_type r ) const { return r.second; } @@ -50,11 +50,10 @@ namespace boost template< class Map > struct select_second_const { - typedef BOOST_DEDUCED_TYPENAME range_value::type pair_t; - typedef const BOOST_DEDUCED_TYPENAME pair_t::second_type& - result_type; + typedef BOOST_DEDUCED_TYPENAME range_reference::type argument_type; + typedef const BOOST_DEDUCED_TYPENAME range_value::type::second_type& result_type; - result_type operator()( const pair_t& r ) const + result_type operator()( argument_type r ) const { return r.second; } From c66fb8e807ddeb3deda683f0bd2c3b0f5237a4f4 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 23 Dec 2010 09:59:53 +0000 Subject: [PATCH 28/32] [boost][range] - manually split the implementation calls to search_n _impl and search_n_pred_impl due to a function overload resolution issue with VC10. [SVN r67426] --- include/boost/range/algorithm/search_n.hpp | 32 ++++++++++++---------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/include/boost/range/algorithm/search_n.hpp b/include/boost/range/algorithm/search_n.hpp index 0941b1e..ca2b6ef 100755 --- a/include/boost/range/algorithm/search_n.hpp +++ b/include/boost/range/algorithm/search_n.hpp @@ -108,9 +108,9 @@ namespace range_detail template inline ForwardIterator - search_n_impl(ForwardIterator first, ForwardIterator last, - Integer count, const Value& value, - BinaryPredicate pred, std::forward_iterator_tag) + search_n_pred_impl(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value, + BinaryPredicate pred, std::forward_iterator_tag) { typedef typename std::iterator_traits::difference_type difference_t; @@ -143,9 +143,9 @@ namespace range_detail template inline RandomAccessIterator - search_n_impl(RandomAccessIterator first, RandomAccessIterator last, - Integer count, const Value& value, - BinaryPredicate pred, std::random_access_iterator_tag) + search_n_pred_impl(RandomAccessIterator first, RandomAccessIterator last, + Integer count, const Value& value, + BinaryPredicate pred, std::random_access_iterator_tag) { typedef typename std::iterator_traits::difference_type difference_t; @@ -208,9 +208,9 @@ namespace range_detail template inline ForwardIterator - search_n_impl(ForwardIterator first, ForwardIterator last, - Integer count, const Value& value, - BinaryPredicate pred) + search_n_pred_impl(ForwardIterator first, ForwardIterator last, + Integer count, const Value& value, + BinaryPredicate pred) { BOOST_RANGE_CONCEPT_ASSERT((ForwardIteratorConcept)); BOOST_RANGE_CONCEPT_ASSERT(( @@ -230,8 +230,8 @@ namespace range_detail ++first; return first; } - return range_detail::search_n_impl(first, last, count, - value, pred, cat_t()); + return range_detail::search_n_pred_impl(first, last, count, + value, pred, cat_t()); } } // namespace range_detail @@ -271,7 +271,7 @@ search_n(ForwardRange& rng, Integer count, const Value& value, BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); - return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), + return range_detail::search_n_pred_impl(boost::begin(rng), boost::end(rng), count, value, binary_pred); } @@ -285,7 +285,7 @@ search_n(const ForwardRange& rng, Integer count, const Value& value, BOOST_RANGE_CONCEPT_ASSERT((ForwardRangeConcept)); BOOST_RANGE_CONCEPT_ASSERT((BinaryPredicateConcept::type, const Value&>)); - return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), + return range_detail::search_n_pred_impl(boost::begin(rng), boost::end(rng), count, value, binary_pred); } @@ -329,7 +329,8 @@ search_n(ForwardRange& rng, Integer count, const Value& value, BOOST_DEDUCED_TYPENAME range_value::type, const Value&>)); return range_return:: - pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), + pack(range_detail::search_n_pred_impl(boost::begin(rng), + boost::end(rng), count, value, pred), rng); } @@ -346,7 +347,8 @@ search_n(const ForwardRange& rng, Integer count, const Value& value, BOOST_DEDUCED_TYPENAME range_value::type, const Value&>)); return range_return:: - pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng), + pack(range_detail::search_n_pred_impl(boost::begin(rng), + boost::end(rng), count, value, pred), rng); } From 48fc316156662d2ac351d269f1cba9efa48712ce Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 23 Dec 2010 10:56:23 +0000 Subject: [PATCH 29/32] [boost][range] - Added documentation for the join() function. This is to resolve Trac ticket 4740. [SVN r67428] --- doc/html/index.html | 4 +- .../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/history_ack.html | 4 +- doc/html/range/introduction.html | 6 +- doc/html/range/mfc_atl.html | 4 +- .../reference/adaptors/introduction.html | 6 +- .../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 ++-- .../concept_implementation/semantics.html | 2 +- .../reference/ranges/counting_range.html | 8 +-- doc/html/range/reference/ranges/irange.html | 10 +-- .../range/reference/ranges/istream_range.html | 6 +- .../reference/utilities/iterator_range.html | 6 +- doc/html/range/reference/utilities/join.html | 69 +++++++++++++++---- .../range/reference/utilities/sub_range.html | 2 +- doc/reference/utilities.qbk | 28 +++++--- 93 files changed, 543 insertions(+), 494 deletions(-) diff --git a/doc/html/index.html b/doc/html/index.html index 40f5c0c..73b0ae6 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)

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

    - +

    Last revised: December 22, 2010 at 23:30:58 GMT

    Last revised: December 23, 2010 at 10:34:45 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index b3a432b..7293e05 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 1edac0d..be1239a 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 b5272e8..206c6ee 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 8862cdd..fb29a9c 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 233f029..807b8df 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/history_ack.html b/doc/html/range/history_ack.html index 24ea577..cc686c4 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/introduction.html b/doc/html/range/introduction.html index 00e01d3..94e5871 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index 20d30ec..b628b9a 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/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 6e56256..291a09e 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

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

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

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index 825b9e3..d47a19b 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 570684f..ec9d0c2 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index 1af7617..a9d84aa 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 24be268..59a6430 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 38c191f..9baa650 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index 47031fb..5e9f509 100644 --- a/doc/html/range/reference/algorithms/mutating/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -27,7 +27,7 @@ copy_backward

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -59,14 +59,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/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index b460574..a4e612d 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index 68c77b3..09f3c89 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 9557ece..322b5c5 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index 725d90b..863cc2e 100644 --- a/doc/html/range/reference/algorithms/mutating/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -27,7 +27,7 @@ inplace_merge

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:
    - + For the non-predicate version:
    @@ -142,7 +142,7 @@
    - + For the predicate version:
    @@ -163,7 +163,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html index fc2ed3e..0ddba00 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:
    @@ -194,7 +194,7 @@
    - + For the predicate version:
    @@ -230,7 +230,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 39bff6f..cdd6990 100644 --- a/doc/html/range/reference/algorithms/mutating/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -27,7 +27,7 @@ nth_element

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

    @@ -69,14 +69,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

    @@ -127,7 +127,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 bacf128..5c3aaf9 100644 --- a/doc/html/range/reference/algorithms/mutating/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -27,7 +27,7 @@ partial_sort

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -132,7 +132,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html index 7807d04..f2279c4 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index 06d07ff..d31a11f 100644 --- a/doc/html/range/reference/algorithms/mutating/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -27,7 +27,7 @@ random_shuffle

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -98,7 +98,7 @@

    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index efdfd1b..292cfb8 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index e09785f..ce0c41c 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -27,7 +27,7 @@ remove_copy

    - + Prototype

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

    - + Description

    @@ -53,14 +53,14 @@ rng for which x == val is false.

    - + Definition

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

    - + Requirements
    - + 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 203eb6f..6b071b8 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -27,7 +27,7 @@ remove_copy_if

    - + Prototype

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

    - + Description

    @@ -54,14 +54,14 @@ is false.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 3c6f9c5..8a1547c 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index 8749215..30831b5 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index 0ece078..7eb03fc 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -27,7 +27,7 @@ replace_copy

    - + Prototype

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

    - + Description

    @@ -53,14 +53,14 @@ x.

    - + Definition

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

    - + Requirements
    - + 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 c13409d..63b79ac 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -27,7 +27,7 @@ replace_copy_if

    - + Prototype

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

    - + Description

    @@ -51,14 +51,14 @@ : x.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index 1f0d9a2..4d2c351 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -27,7 +27,7 @@ replace_if

    - + Prototype

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

    - + Description

    @@ -51,14 +51,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/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index 5abd321..01e7882 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index 5ebc47e..d5adcc1 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse_copy.html +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -27,7 +27,7 @@ reverse_copy

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -49,14 +49,14 @@ Returns the output iterator one passed the last copied element.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index e6bfd9d..6123e63 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index 9b20925..fc5cc12 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate_copy.html +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -27,7 +27,7 @@ rotate_copy

    - + Prototype

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

    - + Description

    @@ -51,14 +51,14 @@ and [middle, end(rng)) to out.

    - + Definition

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

    - + Requirements
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index 4f1728d..920a127 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 f70e72c..5d75d06 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -27,7 +27,7 @@ stable_partition

    - + Prototype

    @@ -60,7 +60,7 @@

    - + Description

    @@ -82,14 +82,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/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 0b0cb71..745f1d1 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -27,7 +27,7 @@ stable_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/stable_sort.hpp

    - + Requirements

    @@ -129,7 +129,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 f0502aa..0317892 100644 --- a/doc/html/range/reference/algorithms/mutating/swap_ranges.html +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -27,7 +27,7 @@ swap_ranges

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -49,14 +49,14 @@ Returns a reference to rng2.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index 97301b9..a36a2fb 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:

    @@ -203,7 +203,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 7e56d5a..1adc7a2 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 6e35b0f..48ae247 100644 --- a/doc/html/range/reference/algorithms/mutating/unique_copy.html +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -27,7 +27,7 @@ unique_copy

    - + Prototype

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

    - + Description

    @@ -55,14 +55,14 @@ value type.

    - + Definition

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

    - + Requirements

    @@ -116,7 +116,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 8c69156..839ad74 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 27e00b3..8027d73 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 9e93de0..8697b56 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 38acd81..68653aa 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 c5dcb93..eba2e33 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
      @@ -73,7 +73,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 8366898..7703eda 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 f7b55cb..6b2b24f 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
      @@ -88,7 +88,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 a2ec0c6..da8e423 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 16ca8fd..56afce3 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 5db4582..9b45d68 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 41eb516..4c04d25 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -27,7 +27,7 @@ remove_erase_if

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
      @@ -72,7 +72,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 4ad3a97..ae149a4 100644 --- a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -27,7 +27,7 @@ adjacent_find

    - + Prototype

    @@ -76,7 +76,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -142,7 +142,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 94c58ed..49bcfb2 100644 --- a/doc/html/range/reference/algorithms/non_mutating/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -27,7 +27,7 @@ binary_search

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -110,7 +110,7 @@

    - + Precondition:

    @@ -128,7 +128,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 6cf0344..a73dd0b 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
    - + 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 697052f..06a5aa6 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -27,7 +27,7 @@ count_if

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index eb53a39..ffd5ae2 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 5190a3c..7124d66 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -27,7 +27,7 @@ equal_range

    - + Prototype

    @@ -70,7 +70,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -154,7 +154,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 dca2863..2661a08 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
    - + 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 9921541..1d05609 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -27,7 +27,7 @@ find_end

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -147,7 +147,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 b0031b6..547048f 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 @@ -27,7 +27,7 @@ find_first_of

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -146,7 +146,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 7131c6b..54dc03d 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -27,7 +27,7 @@ find_if

    - + Prototype

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

    - + Description

    @@ -63,14 +63,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:

    @@ -97,7 +97,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 368055c..4079be9 100644 --- a/doc/html/range/reference/algorithms/non_mutating/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -27,7 +27,7 @@ for_each

    - + Prototype

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

    - + Description

    @@ -58,14 +58,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/non_mutating/lexicographical_compare.html b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html index 59c54a9..1229836 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -27,7 +27,7 @@ lexicographical_compare

    - + Prototype

    @@ -52,7 +52,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -144,7 +144,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 02e5abf..2e187a2 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -27,7 +27,7 @@ lower_bound

    - + Prototype

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

    - + Description

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

    - + Definition

    Defined in the header file boost/range/algorithm/lower_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/non_mutating/max_element.html b/doc/html/range/reference/algorithms/non_mutating/max_element.html index 7b2939f..b7d3211 100644 --- a/doc/html/range/reference/algorithms/non_mutating/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -27,7 +27,7 @@ max_element

    - + Prototype

    @@ -83,7 +83,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -141,7 +141,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 53c55a1..c27eb96 100644 --- a/doc/html/range/reference/algorithms/non_mutating/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -27,7 +27,7 @@ min_element

    - + Prototype

    @@ -83,7 +83,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -141,7 +141,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 3a29e78..7f07ee4 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -27,7 +27,7 @@ mismatch

    - + Prototype

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

    - + Description

    @@ -117,14 +117,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

    @@ -185,14 +185,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 213e25e..96ef82d 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -27,7 +27,7 @@ search

    - + Prototype

    @@ -95,7 +95,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -182,7 +182,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 2f97f43..21c5cec 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search_n.html +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -27,7 +27,7 @@ search_n

    - + Prototype

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

    - + Description

    @@ -63,14 +63,14 @@ and by a predicate when one is supplied.

    - + Definition

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

    - + Requirements

    @@ -124,7 +124,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 1c74d0c..1370435 100644 --- a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -27,7 +27,7 @@ upper_bound

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -128,7 +128,7 @@

    - + Precondition:

    @@ -146,7 +146,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 b2337f4..7115a5a 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 31d590e..56dc87c 100644 --- a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -27,7 +27,7 @@ adjacent_difference

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -110,7 +110,7 @@
    - + For the second version
    @@ -145,7 +145,7 @@
    - + Precondition:

    @@ -153,7 +153,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 489f9d4..43a5eae 100644 --- a/doc/html/range/reference/algorithms/numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -27,7 +27,7 @@ inner_product

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -112,7 +112,7 @@
    - + For the second version
    @@ -161,14 +161,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 406ce7f..c9a9bf6 100644 --- a/doc/html/range/reference/algorithms/numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -27,7 +27,7 @@ partial_sum

    - + Prototype

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

    - + Description

    @@ -57,18 +57,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
    @@ -98,7 +98,7 @@
    - + For the second version
    @@ -127,7 +127,7 @@
    - + Precondition:

    @@ -135,7 +135,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 d2c118c..40d1519 100644 --- a/doc/html/range/reference/algorithms/permutation/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -27,7 +27,7 @@ next_permutation

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -124,7 +124,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 43f6cb3..d119983 100644 --- a/doc/html/range/reference/algorithms/permutation/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -27,7 +27,7 @@ prev_permutation

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index dee7293..e31c201 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 65e9742..a5de7e8 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 21da1a2..8648f22 100644 --- a/doc/html/range/reference/algorithms/set/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -27,7 +27,7 @@ set_intersection

    - + 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_symmetric_difference.html b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html index 2fb5e1e..e8f7531 100644 --- a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -27,7 +27,7 @@ set_symmetric_difference

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -167,7 +167,7 @@

    - + Precondition:

    @@ -185,7 +185,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 55b3e8f..4351a81 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 0e23fd7..1eae4fe 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index df9ec6b..fdc9f29 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 bf1a46e..b3e1737 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
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 765f7ea..1612c04 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index d6e31ee..9d7d209 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
    @@ -207,7 +207,7 @@ ==r.end();

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index c2b69f5..6d95b3c 100644 --- a/doc/html/range/reference/utilities/join.html +++ b/doc/html/range/reference/utilities/join.html @@ -39,33 +39,76 @@ 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>
    ->
    +joined_range<const SinglePassRange1, const SinglePassRange2>
     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>
    ->
    +joined_range<SinglePassRange1, SinglePassRange2>
     join(SinglePassRange1& rng1, SinglePassRange2& rng2);
     

    +

    + For the const version: +

    +
      +
    • + Precondition: The range_value<SinglePassRange2>::type + must be convertible to range_value<SinglePassRange1>::type. + The range_reference<const + SinglePassRange2>::type must be convertible to range_reference<const SinglePassRange1>::type. +
    • +
    • + Range Category: Both rng1 and rng2 + must be a model of Single + Pass Range or better. +
    • +
    • + Range Return Type: joined_range<const + SinglePassRange1, + const SinglePassRange2> which is a model of the lesser + of the two range concepts passed. +
    • +
    • + Returned Range Category: The minimum + of the range category of rng1 + and rng2. +
    • +
    +

    + For the mutable version: +

    +
      +
    • + Precondition: The range_value<SinglePassRange2>::type + must be convertible to range_value<SinglePassRange1>::type. + The range_reference<SinglePassRange2>::type + must be convertible to range_reference<SinglePassRange1>::type. +
    • +
    • + Range Category: Both rng1 and rng2 + must be a model of Single + Pass Range or better. +
    • +
    • + Range Return Type: joined_range<SinglePassRange1, SinglePassRange2> which is a model of the lesser + of the two range concepts passed. +
    • +
    • + Returned Range Category: The minimum + of the range category of rng1 + and rng2. +
    • +
    - + Example

    diff --git a/doc/html/range/reference/utilities/sub_range.html b/doc/html/range/reference/utilities/sub_range.html index 7251a24..7705422 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/reference/utilities.qbk b/doc/reference/utilities.qbk index dd30fbd..94d4699 100644 --- a/doc/reference/utilities.qbk +++ b/doc/reference/utilities.qbk @@ -271,25 +271,31 @@ The resultant range will have the lowest common traversal of the two ranges supp 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. [h4 Synposis] + `` template -iterator_range::type, - typename range_iterator::type, - typename add_const< - typename range_value::type>::type> -> +joined_range join(const SinglePassRange1& rng1, const SinglePassRange2& rng2) template -iterator_range::type, - typename range_iterator::type, - typename range_value::type> -> +joined_range join(SinglePassRange1& rng1, SinglePassRange2& rng2); `` +For the const version: + +* [*Precondition:] The `range_value::type` must be convertible to `range_value::type`. The `range_reference::type` must be convertible to `range_reference::type`. +* [*Range Category:] Both `rng1` and `rng2` must be a model of __single_pass_range__ or better. +* [*Range Return Type:] `joined_range` which is a model of the lesser of the two range concepts passed. +* [*Returned Range Category:] The minimum of the range category of `rng1` and `rng2`. + +For the mutable version: + +* [*Precondition:] The `range_value::type` must be convertible to `range_value::type`. The `range_reference::type` must be convertible to `range_reference::type`. +* [*Range Category:] Both `rng1` and `rng2` must be a model of __single_pass_range__ or better. +* [*Range Return Type:] `joined_range` which is a model of the lesser of the two range concepts passed. +* [*Returned Range Category:] The minimum of the range category of `rng1` and `rng2`. + [h4 Example] The expression `join(irange(0,5), irange(5,10))` would evaluate to a range representing an integer range `[0,10)` From 4fc942f45e37d7ea9ee0f2e81f1aaf1a6036a214 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 23 Dec 2010 11:56:27 +0000 Subject: [PATCH 30/32] [boost][range] - Resolved Trac ticket 4355 - Concepts did not check that iterators must be dereferencable. [SVN r67430] --- include/boost/range/concepts.hpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/include/boost/range/concepts.hpp b/include/boost/range/concepts.hpp index 8e4d2cf..d9f9bfc 100644 --- a/include/boost/range/concepts.hpp +++ b/include/boost/range/concepts.hpp @@ -98,8 +98,9 @@ namespace boost { // classes: // // The Range algorithms often do not require that the iterators are - // Assignable, but the correct standard conformant iterators - // do require the iterators to be a model of the Assignable concept. + // Assignable or default constructable, but the correct standard + // conformant iterators do require the iterators to be a model of the + // Assignable concept. // Iterators that contains a functor that is not assignable therefore // are not correct models of the standard iterator concepts, // despite being adequate for most algorithms. An example of this @@ -141,6 +142,23 @@ namespace boost { BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category, single_pass_traversal_tag >)); + + BOOST_CONCEPT_USAGE(SinglePassIteratorConcept) + { + Iterator i2(++i); + boost::ignore_unused_variable_warning(i2); + + Iterator i3(i++); + boost::ignore_unused_variable_warning(i3); + + BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits::reference r1(*i); + boost::ignore_unused_variable_warning(r1); + + BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits::reference r2(*i++); + boost::ignore_unused_variable_warning(r2); + } + private: + Iterator i; #endif }; From 9cf925c079054813dbe017b34262923d214ca447 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 23 Dec 2010 18:10:09 +0000 Subject: [PATCH 31/32] [boost][range] - Added has_range_iterator and has_range_const_iterator. Trac ticket 4296. [SVN r67433] --- doc/html/index.html | 4 +- .../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/history_ack.html | 4 +- doc/html/range/introduction.html | 6 +- doc/html/range/mfc_atl.html | 4 +- .../reference/adaptors/introduction.html | 6 +- .../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 ++-- .../concept_implementation/semantics.html | 2 +- .../semantics/metafunctions.html | 38 ++++++++++++ .../reference/ranges/counting_range.html | 8 +-- doc/html/range/reference/ranges/irange.html | 10 +-- .../range/reference/ranges/istream_range.html | 6 +- .../reference/utilities/iterator_range.html | 6 +- doc/html/range/reference/utilities/join.html | 4 +- .../range/reference/utilities/sub_range.html | 2 +- doc/reference/semantics.qbk | 10 +++ include/boost/range/has_range_iterator.hpp | 62 +++++++++++++++++++ include/boost/range/metafunctions.hpp | 1 + test/Jamfile.v2 | 1 + test/has_range_iterator.cpp | 57 +++++++++++++++++ 98 files changed, 641 insertions(+), 472 deletions(-) create mode 100644 include/boost/range/has_range_iterator.hpp mode change 100755 => 100644 include/boost/range/metafunctions.hpp create mode 100644 test/has_range_iterator.cpp diff --git a/doc/html/index.html b/doc/html/index.html index 73b0ae6..8b74c06 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)

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

    - +

    Last revised: December 23, 2010 at 10:34:45 GMT

    Last revised: December 23, 2010 at 17:58:25 GMT


    diff --git a/doc/html/range/concepts/bidirectional_range.html b/doc/html/range/concepts/bidirectional_range.html index 7293e05..ba06db0 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 be1239a..db21dbb 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 206c6ee..95b7dac 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 fb29a9c..fa49539 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 807b8df..a9acb72 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/history_ack.html b/doc/html/range/history_ack.html index cc686c4..8c99a63 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/introduction.html b/doc/html/range/introduction.html index 94e5871..07af796 100644 --- a/doc/html/range/introduction.html +++ b/doc/html/range/introduction.html @@ -70,7 +70,7 @@

    - + Example - Iterate over the values in a map

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

    - + Example - Iterate over the keys in a map

    @@ -98,7 +98,7 @@

    - + Example - Push the even values from a map in reverse order into the container target

    diff --git a/doc/html/range/mfc_atl.html b/doc/html/range/mfc_atl.html index b628b9a..91938cc 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/introduction.html b/doc/html/range/reference/adaptors/introduction.html index 291a09e..d3e606b 100644 --- a/doc/html/range/reference/adaptors/introduction.html +++ b/doc/html/range/reference/adaptors/introduction.html @@ -122,7 +122,7 @@ situations, you will really appreciate the succinctness of operator|().

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

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

    - + Range Adaptor alternative to count_if algorithm
    diff --git a/doc/html/range/reference/algorithms/heap/make_heap.html b/doc/html/range/reference/algorithms/heap/make_heap.html index d47a19b..a7a201c 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 ec9d0c2..4926fa5 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/push_heap.html b/doc/html/range/reference/algorithms/heap/push_heap.html index a9d84aa..976aece 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:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/heap/sort_heap.html b/doc/html/range/reference/algorithms/heap/sort_heap.html index 59a6430..4366d76 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 9baa650..bfa49dc 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/copy_backward.html b/doc/html/range/reference/algorithms/mutating/copy_backward.html index 5e9f509..2c79bf9 100644 --- a/doc/html/range/reference/algorithms/mutating/copy_backward.html +++ b/doc/html/range/reference/algorithms/mutating/copy_backward.html @@ -27,7 +27,7 @@ copy_backward

    - + Prototype

    @@ -41,7 +41,7 @@

    - + Description

    @@ -59,14 +59,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/mutating/fill.html b/doc/html/range/reference/algorithms/mutating/fill.html index a4e612d..77c78c6 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/fill_n.html b/doc/html/range/reference/algorithms/mutating/fill_n.html index 09f3c89..5a7fb40 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/generate.html b/doc/html/range/reference/algorithms/mutating/generate.html index 322b5c5..d28c8ca 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/inplace_merge.html b/doc/html/range/reference/algorithms/mutating/inplace_merge.html index 863cc2e..a14c627 100644 --- a/doc/html/range/reference/algorithms/mutating/inplace_merge.html +++ b/doc/html/range/reference/algorithms/mutating/inplace_merge.html @@ -27,7 +27,7 @@ inplace_merge

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:
    - + For the non-predicate version:
    @@ -142,7 +142,7 @@
    - + For the predicate version:
    @@ -163,7 +163,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/merge.html b/doc/html/range/reference/algorithms/mutating/merge.html index 0ddba00..f847d5d 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:
    @@ -194,7 +194,7 @@
    - + For the predicate version:
    @@ -230,7 +230,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 cdd6990..624dfb2 100644 --- a/doc/html/range/reference/algorithms/mutating/nth_element.html +++ b/doc/html/range/reference/algorithms/mutating/nth_element.html @@ -27,7 +27,7 @@ nth_element

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

    @@ -69,14 +69,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

    @@ -127,7 +127,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 5c3aaf9..12a4024 100644 --- a/doc/html/range/reference/algorithms/mutating/partial_sort.html +++ b/doc/html/range/reference/algorithms/mutating/partial_sort.html @@ -27,7 +27,7 @@ partial_sort

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -132,7 +132,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/partition.html b/doc/html/range/reference/algorithms/mutating/partition.html index f2279c4..0cd0c73 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/random_shuffle.html b/doc/html/range/reference/algorithms/mutating/random_shuffle.html index d31a11f..f1a3c6c 100644 --- a/doc/html/range/reference/algorithms/mutating/random_shuffle.html +++ b/doc/html/range/reference/algorithms/mutating/random_shuffle.html @@ -27,7 +27,7 @@ random_shuffle

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -98,7 +98,7 @@

    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove.html b/doc/html/range/reference/algorithms/mutating/remove.html index 292cfb8..618d087 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_copy.html b/doc/html/range/reference/algorithms/mutating/remove_copy.html index ce0c41c..410848d 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy.html @@ -27,7 +27,7 @@ remove_copy

    - + Prototype

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

    - + Description

    @@ -53,14 +53,14 @@ rng for which x == val is false.

    - + Definition

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

    - + Requirements
    - + 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 6b071b8..ed95b13 100644 --- a/doc/html/range/reference/algorithms/mutating/remove_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/remove_copy_if.html @@ -27,7 +27,7 @@ remove_copy_if

    - + Prototype

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

    - + Description

    @@ -54,14 +54,14 @@ is false.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/remove_if.html b/doc/html/range/reference/algorithms/mutating/remove_if.html index 8a1547c..113d9dd 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace.html b/doc/html/range/reference/algorithms/mutating/replace.html index 30831b5..9055f9a 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_copy.html b/doc/html/range/reference/algorithms/mutating/replace_copy.html index 7eb03fc..267f594 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy.html @@ -27,7 +27,7 @@ replace_copy

    - + Prototype

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

    - + Description

    @@ -53,14 +53,14 @@ x.

    - + Definition

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

    - + Requirements
    - + 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 63b79ac..b053c1e 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_copy_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_copy_if.html @@ -27,7 +27,7 @@ replace_copy_if

    - + Prototype

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

    - + Description

    @@ -51,14 +51,14 @@ : x.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/replace_if.html b/doc/html/range/reference/algorithms/mutating/replace_if.html index 4d2c351..f63c30e 100644 --- a/doc/html/range/reference/algorithms/mutating/replace_if.html +++ b/doc/html/range/reference/algorithms/mutating/replace_if.html @@ -27,7 +27,7 @@ replace_if

    - + Prototype

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

    - + Description

    @@ -51,14 +51,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/mutating/reverse.html b/doc/html/range/reference/algorithms/mutating/reverse.html index 01e7882..2e8262b 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
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/reverse_copy.html b/doc/html/range/reference/algorithms/mutating/reverse_copy.html index d5adcc1..ea0d3e9 100644 --- a/doc/html/range/reference/algorithms/mutating/reverse_copy.html +++ b/doc/html/range/reference/algorithms/mutating/reverse_copy.html @@ -27,7 +27,7 @@ reverse_copy

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -49,14 +49,14 @@ Returns the output iterator one passed the last copied element.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate.html b/doc/html/range/reference/algorithms/mutating/rotate.html index 6123e63..4b55abb 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
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/rotate_copy.html b/doc/html/range/reference/algorithms/mutating/rotate_copy.html index fc5cc12..497fa1d 100644 --- a/doc/html/range/reference/algorithms/mutating/rotate_copy.html +++ b/doc/html/range/reference/algorithms/mutating/rotate_copy.html @@ -27,7 +27,7 @@ rotate_copy

    - + Prototype

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

    - + Description

    @@ -51,14 +51,14 @@ and [middle, end(rng)) to out.

    - + Definition

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

    - + Requirements
    - + Precondition:
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/sort.html b/doc/html/range/reference/algorithms/mutating/sort.html index 920a127..db9444b 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 5d75d06..bd77f3c 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_partition.html +++ b/doc/html/range/reference/algorithms/mutating/stable_partition.html @@ -27,7 +27,7 @@ stable_partition

    - + Prototype

    @@ -60,7 +60,7 @@

    - + Description

    @@ -82,14 +82,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/mutating/stable_sort.html b/doc/html/range/reference/algorithms/mutating/stable_sort.html index 745f1d1..6196114 100644 --- a/doc/html/range/reference/algorithms/mutating/stable_sort.html +++ b/doc/html/range/reference/algorithms/mutating/stable_sort.html @@ -27,7 +27,7 @@ stable_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/stable_sort.hpp

    - + Requirements

    @@ -129,7 +129,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 0317892..2e818ce 100644 --- a/doc/html/range/reference/algorithms/mutating/swap_ranges.html +++ b/doc/html/range/reference/algorithms/mutating/swap_ranges.html @@ -27,7 +27,7 @@ swap_ranges

    - + Prototype

    @@ -39,7 +39,7 @@

    - + Description

    @@ -49,14 +49,14 @@ Returns a reference to rng2.

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/transform.html b/doc/html/range/reference/algorithms/mutating/transform.html index a36a2fb..068db05 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:

    @@ -203,7 +203,7 @@

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/mutating/unique.html b/doc/html/range/reference/algorithms/mutating/unique.html index 1adc7a2..e36cbfe 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 48ae247..432191e 100644 --- a/doc/html/range/reference/algorithms/mutating/unique_copy.html +++ b/doc/html/range/reference/algorithms/mutating/unique_copy.html @@ -27,7 +27,7 @@ unique_copy

    - + Prototype

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

    - + Description

    @@ -55,14 +55,14 @@ value type.

    - + Definition

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

    - + Requirements

    @@ -116,7 +116,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 839ad74..dedfad3 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 8027d73..ef49c5f 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 8697b56..15ec17b 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 68653aa..dec9b6a 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 eba2e33..b3c8c06 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
      @@ -73,7 +73,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 7703eda..93e9ee9 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 6b2b24f..914a4e8 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
      @@ -88,7 +88,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 da8e423..58dd060 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 56afce3..8650468 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 9b45d68..b28ecfe 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 4c04d25..f66b732 100644 --- a/doc/html/range/reference/algorithms/new/remove_erase_if.html +++ b/doc/html/range/reference/algorithms/new/remove_erase_if.html @@ -27,7 +27,7 @@ remove_erase_if

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
      @@ -72,7 +72,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 ae149a4..b4e1ec3 100644 --- a/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html +++ b/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html @@ -27,7 +27,7 @@ adjacent_find

    - + Prototype

    @@ -76,7 +76,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -142,7 +142,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 49bcfb2..b48a47e 100644 --- a/doc/html/range/reference/algorithms/non_mutating/binary_search.html +++ b/doc/html/range/reference/algorithms/non_mutating/binary_search.html @@ -27,7 +27,7 @@ binary_search

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -110,7 +110,7 @@

    - + Precondition:

    @@ -128,7 +128,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 a73dd0b..75b364e 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
    - + 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 06a5aa6..b50203b 100644 --- a/doc/html/range/reference/algorithms/non_mutating/count_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/count_if.html @@ -27,7 +27,7 @@ count_if

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/non_mutating/equal.html b/doc/html/range/reference/algorithms/non_mutating/equal.html index ffd5ae2..d70859b 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 7124d66..0594865 100644 --- a/doc/html/range/reference/algorithms/non_mutating/equal_range.html +++ b/doc/html/range/reference/algorithms/non_mutating/equal_range.html @@ -27,7 +27,7 @@ equal_range

    - + Prototype

    @@ -70,7 +70,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Precondition:

    @@ -154,7 +154,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 2661a08..76086a8 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
    - + 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 1d05609..95cb212 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_end.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_end.html @@ -27,7 +27,7 @@ find_end

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -147,7 +147,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 547048f..2751651 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 @@ -27,7 +27,7 @@ find_first_of

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -146,7 +146,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 54dc03d..18d83c4 100644 --- a/doc/html/range/reference/algorithms/non_mutating/find_if.html +++ b/doc/html/range/reference/algorithms/non_mutating/find_if.html @@ -27,7 +27,7 @@ find_if

    - + Prototype

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

    - + Description

    @@ -63,14 +63,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:

    @@ -97,7 +97,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 4079be9..b7f8384 100644 --- a/doc/html/range/reference/algorithms/non_mutating/for_each.html +++ b/doc/html/range/reference/algorithms/non_mutating/for_each.html @@ -27,7 +27,7 @@ for_each

    - + Prototype

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

    - + Description

    @@ -58,14 +58,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/non_mutating/lexicographical_compare.html b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html index 1229836..25ace1b 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html +++ b/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html @@ -27,7 +27,7 @@ lexicographical_compare

    - + Prototype

    @@ -52,7 +52,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -144,7 +144,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 2e187a2..b4419b1 100644 --- a/doc/html/range/reference/algorithms/non_mutating/lower_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/lower_bound.html @@ -27,7 +27,7 @@ lower_bound

    - + Prototype

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

    - + Description

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

    - + Definition

    Defined in the header file boost/range/algorithm/lower_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/non_mutating/max_element.html b/doc/html/range/reference/algorithms/non_mutating/max_element.html index b7d3211..7202da9 100644 --- a/doc/html/range/reference/algorithms/non_mutating/max_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/max_element.html @@ -27,7 +27,7 @@ max_element

    - + Prototype

    @@ -83,7 +83,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -141,7 +141,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 c27eb96..50260c5 100644 --- a/doc/html/range/reference/algorithms/non_mutating/min_element.html +++ b/doc/html/range/reference/algorithms/non_mutating/min_element.html @@ -27,7 +27,7 @@ min_element

    - + Prototype

    @@ -83,7 +83,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -141,7 +141,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 7f07ee4..30f2acd 100644 --- a/doc/html/range/reference/algorithms/non_mutating/mismatch.html +++ b/doc/html/range/reference/algorithms/non_mutating/mismatch.html @@ -27,7 +27,7 @@ mismatch

    - + Prototype

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

    - + Description

    @@ -117,14 +117,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

    @@ -185,14 +185,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 96ef82d..6e68396 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search.html +++ b/doc/html/range/reference/algorithms/non_mutating/search.html @@ -27,7 +27,7 @@ search

    - + Prototype

    @@ -95,7 +95,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -182,7 +182,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 21c5cec..aa1e621 100644 --- a/doc/html/range/reference/algorithms/non_mutating/search_n.html +++ b/doc/html/range/reference/algorithms/non_mutating/search_n.html @@ -27,7 +27,7 @@ search_n

    - + Prototype

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

    - + Description

    @@ -63,14 +63,14 @@ and by a predicate when one is supplied.

    - + Definition

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

    - + Requirements

    @@ -124,7 +124,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 1370435..6e75ef7 100644 --- a/doc/html/range/reference/algorithms/non_mutating/upper_bound.html +++ b/doc/html/range/reference/algorithms/non_mutating/upper_bound.html @@ -27,7 +27,7 @@ upper_bound

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -128,7 +128,7 @@

    - + Precondition:

    @@ -146,7 +146,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 7115a5a..e3accc8 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 56dc87c..b5b3f49 100644 --- a/doc/html/range/reference/algorithms/numeric/adjacent_difference.html +++ b/doc/html/range/reference/algorithms/numeric/adjacent_difference.html @@ -27,7 +27,7 @@ adjacent_difference

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -110,7 +110,7 @@
    - + For the second version
    @@ -145,7 +145,7 @@
    - + Precondition:

    @@ -153,7 +153,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 43a5eae..9567a89 100644 --- a/doc/html/range/reference/algorithms/numeric/inner_product.html +++ b/doc/html/range/reference/algorithms/numeric/inner_product.html @@ -27,7 +27,7 @@ inner_product

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements
    - + For the first version
    @@ -112,7 +112,7 @@
    - + For the second version
    @@ -161,14 +161,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 c9a9bf6..50fa44b 100644 --- a/doc/html/range/reference/algorithms/numeric/partial_sum.html +++ b/doc/html/range/reference/algorithms/numeric/partial_sum.html @@ -27,7 +27,7 @@ partial_sum

    - + Prototype

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

    - + Description

    @@ -57,18 +57,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
    @@ -98,7 +98,7 @@
    - + For the second version
    @@ -127,7 +127,7 @@
    - + Precondition:

    @@ -135,7 +135,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 40d1519..78626e7 100644 --- a/doc/html/range/reference/algorithms/permutation/next_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/next_permutation.html @@ -27,7 +27,7 @@ next_permutation

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -124,7 +124,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 d119983..c87dadb 100644 --- a/doc/html/range/reference/algorithms/permutation/prev_permutation.html +++ b/doc/html/range/reference/algorithms/permutation/prev_permutation.html @@ -27,7 +27,7 @@ prev_permutation

    - + Prototype

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

    - + Description

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

    - + Definition

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

    - + Requirements

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

    - + Complexity

    diff --git a/doc/html/range/reference/algorithms/set/includes.html b/doc/html/range/reference/algorithms/set/includes.html index e31c201..9090779 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 a5de7e8..6aa68d8 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 8648f22..0c4705e 100644 --- a/doc/html/range/reference/algorithms/set/set_intersection.html +++ b/doc/html/range/reference/algorithms/set/set_intersection.html @@ -27,7 +27,7 @@ set_intersection

    - + 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_symmetric_difference.html b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html index e8f7531..aab6c38 100644 --- a/doc/html/range/reference/algorithms/set/set_symmetric_difference.html +++ b/doc/html/range/reference/algorithms/set/set_symmetric_difference.html @@ -27,7 +27,7 @@ set_symmetric_difference

    - + Prototype

    @@ -58,7 +58,7 @@

    - + Description

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

    - + Definition

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

    - + Requirements

    @@ -167,7 +167,7 @@

    - + Precondition:

    @@ -185,7 +185,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 4351a81..f89ab11 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/semantics.html b/doc/html/range/reference/concept_implementation/semantics.html index 1eae4fe..10f57ad 100644 --- a/doc/html/range/reference/concept_implementation/semantics.html +++ b/doc/html/range/reference/concept_implementation/semantics.html @@ -31,7 +31,7 @@

    Functions
    - + notation
    diff --git a/doc/html/range/reference/concept_implementation/semantics/metafunctions.html b/doc/html/range/reference/concept_implementation/semantics/metafunctions.html index 1a03534..bafa0af 100644 --- a/doc/html/range/reference/concept_implementation/semantics/metafunctions.html +++ b/doc/html/range/reference/concept_implementation/semantics/metafunctions.html @@ -217,6 +217,44 @@

    + + + + + + + + + +
    +

    + has_range_iterator<X>::type +

    +
    +

    + mpl::true_ if range_mutable_iterator<X>::type + is a valid expression, mpl::false_ + otherwise +

    +
    +

    + compile time +

    +
    +

    + has_range_const_iterator<X>::type +

    +
    +

    + mpl::true_ if range_const_iterator<X>::type + is a valid expression, mpl::false_ + otherwise +

    +
    +

    + compile time +

    +
    diff --git a/doc/html/range/reference/ranges/counting_range.html b/doc/html/range/reference/ranges/counting_range.html index fdc9f29..01355b0 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 b3e1737..291a416 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
      @@ -80,7 +80,7 @@
    - + Complexity

    diff --git a/doc/html/range/reference/ranges/istream_range.html b/doc/html/range/reference/ranges/istream_range.html index 1612c04..3e704f2 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/utilities/iterator_range.html b/doc/html/range/reference/utilities/iterator_range.html index 9d7d209..b2b1923 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
    @@ -207,7 +207,7 @@ == r.end();

    - + Details functions
    diff --git a/doc/html/range/reference/utilities/join.html b/doc/html/range/reference/utilities/join.html index 6d95b3c..8fc0d82 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

    @@ -108,7 +108,7 @@

    - + Example

    diff --git a/doc/html/range/reference/utilities/sub_range.html b/doc/html/range/reference/utilities/sub_range.html index 7705422..e82e7f5 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/reference/semantics.qbk b/doc/reference/semantics.qbk index 4f15721..6276e9d 100644 --- a/doc/reference/semantics.qbk +++ b/doc/reference/semantics.qbk @@ -73,6 +73,16 @@ [`boost::reverse_iterator::type`] [compile time] ] + [ + [`has_range_iterator::type`] + [`mpl::true_` if `range_mutable_iterator::type` is a valid expression, `mpl::false_` otherwise] + [compile time] + ] + [ + [`has_range_const_iterator::type`] + [`mpl::true_` if `range_const_iterator::type` is a valid expression, `mpl::false_` otherwise] + [compile time] + ] ] [endsect] diff --git a/include/boost/range/has_range_iterator.hpp b/include/boost/range/has_range_iterator.hpp new file mode 100644 index 0000000..b2bca39 --- /dev/null +++ b/include/boost/range/has_range_iterator.hpp @@ -0,0 +1,62 @@ +// 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/ +// +#ifndef BOOST_RANGE_HAS_ITERATOR_HPP_INCLUDED +#define BOOST_RANGE_HAS_ITERATOR_HPP_INCLUDED + +#include +#include +#include +#include + +namespace boost +{ + namespace range_detail + { + BOOST_MPL_HAS_XXX_TRAIT_DEF(type); + + template + struct has_range_iterator_impl + : boost::mpl::false_ + { + }; + + template + struct has_range_iterator_impl > >::type> + : boost::mpl::true_ + { + }; + + template + struct has_range_const_iterator_impl + : boost::mpl::false_ + { + }; + + template + struct has_range_const_iterator_impl > >::type> + : boost::mpl::true_ + { + }; + + } // namespace range_detail + + template + struct has_range_iterator + : range_detail::has_range_iterator_impl + {}; + + template + struct has_range_const_iterator + : range_detail::has_range_const_iterator_impl + {}; +} // namespace boost + +#endif // include guard + diff --git a/include/boost/range/metafunctions.hpp b/include/boost/range/metafunctions.hpp old mode 100755 new mode 100644 index 5b25a8f..469d9ae --- a/include/boost/range/metafunctions.hpp +++ b/include/boost/range/metafunctions.hpp @@ -16,6 +16,7 @@ #endif #include +#include #include #include #include diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2b8106a..b52d869 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -138,6 +138,7 @@ test-suite range : [ range-test counting_range ] [ range-test extension_mechanism ] [ range-test extension_size ] + [ range-test has_range_iterator ] [ range-test irange ] [ range-test istream_range ] [ range-test iterator_pair ] diff --git a/test/has_range_iterator.cpp b/test/has_range_iterator.cpp new file mode 100644 index 0000000..eabb630 --- /dev/null +++ b/test/has_range_iterator.cpp @@ -0,0 +1,57 @@ +// 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 + +namespace +{ + class MockClassWithoutIterators {}; + + template + void test_has_range_iterator_impl(const bool expected_value) + { + BOOST_CHECK_EQUAL( boost::has_range_iterator::value, expected_value ); + } + + template + void test_has_range_const_iterator_impl(const bool expected_value) + { + BOOST_CHECK_EQUAL( boost::has_range_const_iterator::value, expected_value ); + } + + void test_has_range_iterator() + { + test_has_range_iterator_impl< std::vector >(true); + test_has_range_iterator_impl< MockClassWithoutIterators >(false); + } + + void test_has_range_const_iterator() + { + test_has_range_const_iterator_impl< std::vector >(true); + test_has_range_const_iterator_impl< MockClassWithoutIterators >(false); + } +} + +boost::unit_test::test_suite* +init_unit_test_suite(int argc, char* argv[]) +{ + boost::unit_test::test_suite* test + = BOOST_TEST_SUITE( "RangeTestSuite.has_range_iterator" ); + + test->add(BOOST_TEST_CASE(&test_has_range_iterator)); + test->add(BOOST_TEST_CASE(&test_has_range_const_iterator)); + + return test; +} From 014fdb8ace11d1f18066b838a708a83eba067ce0 Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Fri, 24 Dec 2010 15:00:08 +0000 Subject: [PATCH 32/32] [boost][range] - Corrected yesterdays erroneous modifications to the strided adaptor. [SVN r67445] --- include/boost/range/adaptor/strided.hpp | 123 +++++++++++++++++------- test/adaptor_test/strided.cpp | 118 +++++++++++++++++++++-- 2 files changed, 197 insertions(+), 44 deletions(-) diff --git a/include/boost/range/adaptor/strided.hpp b/include/boost/range/adaptor/strided.hpp index ab86e46..9bbd8ca 100755 --- a/include/boost/range/adaptor/strided.hpp +++ b/include/boost/range/adaptor/strided.hpp @@ -16,68 +16,119 @@ #include #include +#include + namespace boost { namespace range_detail { - template + template class strided_iterator : public iterator_adaptor< - strided_iterator, - BaseIterator> + 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; + typedef BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type difference_type; - strided_iterator() : m_stride() { } + strided_iterator() + : m_stride(), m_offset(), m_max_offset() + { + } - strided_iterator(const strided_iterator& other) - : super_t(other), m_stride(other.m_stride) { } + explicit strided_iterator(BaseIterator base_it, + difference_type stride, + difference_type offset, + difference_type max_offset) + : super_t(base_it) + , m_stride(stride) + , m_offset(offset) + , m_max_offset(max_offset) + { + } - explicit strided_iterator(BaseIterator base_it, difference_type stride) - : super_t(base_it), m_stride(stride) { } + template + strided_iterator(const strided_iterator& other, + BOOST_DEDUCED_TYPENAME enable_if_convertible::type* = 0) + : super_t(other) + , m_stride(other.m_stride) + , m_offset(other.m_offset) + , m_max_offset(other.m_max_offset) + { + } strided_iterator& operator=(const strided_iterator& other) { super_t::operator=(other); - - // Is the interoperation of the stride safe? m_stride = other.m_stride; + m_offset = other.m_offset; + m_max_offset = other.m_max_offset; return *this; } - void increment() { std::advance(this->base_reference(), m_stride); } + void increment() + { + m_offset += m_stride; + if (m_offset <= m_max_offset) + std::advance(this->base_reference(), m_stride); + } - void decrement() { std::advance(this->base_reference(), -m_stride); } + void decrement() + { + m_offset -= m_stride; + if (m_offset >= 0) + std::advance(this->base_reference(), -m_stride); + } - void advance(difference_type n) { std::advance(this->base_reference(), n * m_stride); } + void advance(difference_type n) + { + n *= m_stride; + m_offset += n; + + if (m_offset >= 0 && m_offset <= m_max_offset) + std::advance(this->base_reference(), n); + } + + template + bool equal(const strided_iterator& other, + BOOST_DEDUCED_TYPENAME enable_if_convertible::type* = 0) const + { + return m_offset == other.m_offset; + } difference_type distance_to(const strided_iterator& other) const { - return std::distance(this->base_reference(), other.base_reference()) / m_stride; + return (other.m_offset - m_offset) / m_stride; } - // Using the compiler generated copy constructor and - // and assignment operator - private: difference_type m_stride; + difference_type m_offset; + difference_type m_max_offset; }; - template inline + template inline strided_iterator make_strided_iterator( const BaseIterator& first, - BOOST_DEDUCED_TYPENAME std::iterator_traits::difference_type stride) + Difference stride, + typename std::iterator_traits::difference_type offset, + typename std::iterator_traits::difference_type max_offset + ) { - return strided_iterator(first, stride); + BOOST_ASSERT( stride >= 0 ); + BOOST_ASSERT( (stride == 0) || (offset % stride == 0) ); + BOOST_ASSERT( (stride == 0) || (max_offset % stride == 0) ); + BOOST_ASSERT( offset <= max_offset ); + return strided_iterator(first, stride, offset, max_offset); } template< class Rng > @@ -87,33 +138,33 @@ namespace boost typedef range_detail::strided_iterator::type> iter_type; typedef iterator_range super_t; public: - template< typename Difference > + template strided_range(Difference stride, Rng& rng) - : super_t(make_first(rng, stride), make_last(rng, stride)) + : super_t(make_super(stride, rng)) { BOOST_ASSERT( stride >= 0 ); } + private: - template - static iter_type make_first(Rng& rng, Difference stride) + template + static super_t make_super(const Difference stride, Rng& rng) { - return make_strided_iterator(boost::begin(rng), stride); + const Difference count = boost::size(rng); + const Difference max_count = max_offset(count, stride); + return super_t(make_strided_iterator(boost::begin(rng), stride, 0, max_count), + make_strided_iterator(boost::end(rng), stride, max_count, max_count)); } - template - static iter_type make_last(Rng& rng, Difference stride) + template + static Difference max_offset(Difference sz, const Stride stride) { - typedef BOOST_DEDUCED_TYPENAME range_iterator::type raw_iter_t; - typedef BOOST_DEDUCED_TYPENAME range_difference::type diff_t; - if (stride > 0) { - raw_iter_t it = boost::end(rng); - const diff_t count = boost::size(rng); - std::advance(it, -(count % stride)); - return iter_type(it, stride); + sz += stride - 1; + sz /= stride; + sz *= stride; } - return make_strided_iterator(boost::end(rng), stride); + return sz; } }; diff --git a/test/adaptor_test/strided.cpp b/test/adaptor_test/strided.cpp index 6f4d1ef..2131cd7 100644 --- a/test/adaptor_test/strided.cpp +++ b/test/adaptor_test/strided.cpp @@ -44,15 +44,13 @@ namespace boost typedef BOOST_DEDUCED_TYPENAME Container::size_type size_type; iterator_t it = c.begin(); - size_type count = c.size(); - size_type unreachable_element_count = c.size() - ((count / stride_size) * stride_size); - diff_t offset = -static_cast(unreachable_element_count); iterator_t last = c.end(); - std::advance(last, offset); - - for (; it != last; std::advance(it, stride_size)) + for (; it != last; ) { reference.push_back(*it); + + for (int i = 0; (it != last) && (i < stride_size); ++i) + ++it; } } @@ -129,8 +127,8 @@ namespace boost strided_range_t rng( boost::adaptors::stride(c, 0) ); typedef typename boost::range_iterator::type iter_t; - iter_t first(boost::begin(c), 0); - iter_t last(boost::end(c), 0); + iter_t first(boost::begin(c), 0, 0, boost::size(c)); + iter_t last(boost::end(c), 0, boost::size(c), boost::size(c)); iter_t it = first; for (int i = 0; i < 10; ++i, ++it) @@ -157,6 +155,108 @@ namespace boost strided_test_impl< std::deque >(); strided_test_impl< std::list >(); } + + void strided_defect_Trac5014() + { + using namespace boost::assign; + + std::vector v; + for (int i = 0; i < 30; ++i) + v.push_back(i); + + std::vector reference; + reference += 0,4,8,12,16,20,24,28; + + std::vector output; + boost::push_back(output, v | boost::adaptors::strided(4)); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + output.begin(), output.end() ); + + BOOST_CHECK_EQUAL( output.back(), 28 ); + } + + template + class strided_mock_iterator + : public boost::iterator_adaptor< + strided_mock_iterator + , BaseIterator + , boost::use_default + , Category + > + { + typedef boost::iterator_adaptor< + strided_mock_iterator + , BaseIterator + , boost::use_default + , Category + > super_t; + public: + explicit strided_mock_iterator(BaseIterator it) + : super_t(it) + { + } + + private: + void increment() + { + ++(this->base_reference()); + } + + bool equal(const strided_mock_iterator& other) const + { + return this->base() == other.base(); + } + + BOOST_DEDUCED_TYPENAME super_t::reference dereference() const + { + return *(this->base()); + } + + friend class boost::iterator_core_access; + }; + + template + boost::iterator_range::type, Category> > + as_mock_range(Range& rng) + { + typedef BOOST_DEDUCED_TYPENAME boost::range_iterator::type range_iter_t; + typedef strided_mock_iterator mock_iter_t; + + return boost::iterator_range( + mock_iter_t(boost::begin(rng)), + mock_iter_t(boost::end(rng))); + } + + void strided_test_traversal() + { + using namespace boost::assign; + + std::vector v; + for (int i = 0; i < 30; ++i) + v.push_back(i); + + std::vector reference; + reference += 0,4,8,12,16,20,24,28; + + std::vector output; + boost::push_back(output, as_mock_range(v) | boost::adaptors::strided(4)); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + output.begin(), output.end() ); + + output.clear(); + boost::push_back(output, as_mock_range(v) | boost::adaptors::strided(4)); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + output.begin(), output.end() ); + + output.clear(); + boost::push_back(output, as_mock_range(v) | boost::adaptors::strided(4)); + + BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(), + output.begin(), output.end() ); + } } } @@ -167,6 +267,8 @@ init_unit_test_suite(int argc, char* argv[]) = BOOST_TEST_SUITE( "RangeTestSuite.adaptor.strided" ); test->add( BOOST_TEST_CASE( &boost::strided_test ) ); + test->add( BOOST_TEST_CASE( &boost::strided_defect_Trac5014 ) ); + test->add( BOOST_TEST_CASE( &boost::strided_test_traversal ) ); return test; }