Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r67541 - in trunk: boost/range boost/range/adaptor boost/range/detail libs/range/doc libs/range/doc/html libs/range/doc/html/range libs/range/doc/html/range/concepts libs/range/doc/html/range/reference libs/range/doc/html/range/reference/adaptors libs/range/doc/html/range/reference/adaptors/reference libs/range/doc/html/range/reference/algorithms/heap libs/range/doc/html/range/reference/algorithms/mutating libs/range/doc/html/range/reference/algorithms/new libs/range/doc/html/range/reference/algorithms/non_mutating libs/range/doc/html/range/reference/algorithms/numeric libs/range/doc/html/range/reference/algorithms/permutation libs/range/doc/html/range/reference/algorithms/set libs/range/doc/html/range/reference/concept_implementation libs/range/doc/html/range/reference/ranges libs/range/doc/html/range/reference/utilities libs/range/doc/reference libs/range/doc/reference/adaptors libs/range/doc/reference/ranges libs/range/test libs/range/test/adaptor_test
From: neil_at_[hidden]
Date: 2011-01-01 11:46:44


Author: neilgroves
Date: 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
New Revision: 67541
URL: http://svn.boost.org/trac/boost/changeset/67541

Log:
[boost][range] - Updated begin/end to be protected against accidental ADL to improve compatibility with C++0x. Added any_range which adds type erasure support. Added a type_erased adaptor to utilise the any_range. Implemented the any_iterator using a small buffer optimization to avoid heap usage.
Added:
   trunk/boost/range/any_range.hpp (contents, props changed)
   trunk/boost/range/detail/any_iterator.hpp (contents, props changed)
   trunk/boost/range/detail/any_iterator_buffer.hpp (contents, props changed)
   trunk/boost/range/detail/any_iterator_interface.hpp (contents, props changed)
   trunk/boost/range/detail/any_iterator_wrapper.hpp (contents, props changed)
   trunk/libs/range/doc/html/range/reference/adaptors/reference/type_erased.html (contents, props changed)
   trunk/libs/range/doc/html/range/reference/ranges/any_range.html (contents, props changed)
   trunk/libs/range/doc/reference/adaptors/type_erased.qbk (contents, props changed)
   trunk/libs/range/doc/reference/ranges/any_range.qbk (contents, props changed)
   trunk/libs/range/test/adaptor_test/type_erased.cpp (contents, props changed)
   trunk/libs/range/test/adaptor_test/type_erased_example.cpp (contents, props changed)
   trunk/libs/range/test/begin.cpp (contents, props changed)
   trunk/libs/range/test/end.cpp (contents, props changed)
Text files modified:
   trunk/boost/range/adaptor/sliced.hpp | 1
   trunk/boost/range/adaptor/type_erased.hpp | 210 ++++++++++++++++++++++++++++-----------
   trunk/boost/range/begin.hpp | 23 +++-
   trunk/boost/range/concepts.hpp | 23 +++
   trunk/boost/range/detail/begin.hpp | 28 ++--
   trunk/boost/range/detail/end.hpp | 37 +++---
   trunk/boost/range/end.hpp | 23 ++-
   trunk/libs/range/doc/boost_range.qbk | 2
   trunk/libs/range/doc/html/index.html | 5
   trunk/libs/range/doc/html/quickbook_HTML.manifest | 2
   trunk/libs/range/doc/html/range/concepts/bidirectional_range.html | 16 +-
   trunk/libs/range/doc/html/range/concepts/concept_checking.html | 2
   trunk/libs/range/doc/html/range/concepts/forward_range.html | 10
   trunk/libs/range/doc/html/range/concepts/random_access_range.html | 12 +-
   trunk/libs/range/doc/html/range/concepts/single_pass_range.html | 16 +-
   trunk/libs/range/doc/html/range/history_ack.html | 4
   trunk/libs/range/doc/html/range/introduction.html | 6
   trunk/libs/range/doc/html/range/mfc_atl.html | 4
   trunk/libs/range/doc/html/range/reference.html | 1
   trunk/libs/range/doc/html/range/reference/adaptors/introduction.html | 6
   trunk/libs/range/doc/html/range/reference/adaptors/reference.html | 1
   trunk/libs/range/doc/html/range/reference/adaptors/reference/strided.html | 6
   trunk/libs/range/doc/html/range/reference/adaptors/reference/tokenized.html | 6
   trunk/libs/range/doc/html/range/reference/algorithms/heap/make_heap.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/heap/pop_heap.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/heap/push_heap.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/heap/sort_heap.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy_backward.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill_n.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/generate.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/inplace_merge.html | 16 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/merge.html | 16 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/nth_element.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/partial_sort.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/partition.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/random_shuffle.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy_if.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_if.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy_if.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_if.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse_copy.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate_copy.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/sort.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_partition.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_sort.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/swap_ranges.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/transform.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique_copy.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/copy_n.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/erase.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/for_each.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/insert.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/iota.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/is_sorted.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/overwrite.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/push_back.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/push_front.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase_if.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/binary_search.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count_if.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal_range.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_end.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_first_of.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_if.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/for_each.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lower_bound.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/max_element.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/min_element.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/mismatch.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search_n.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/upper_bound.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/numeric/accumulate.html | 14 +-
   trunk/libs/range/doc/html/range/reference/algorithms/numeric/adjacent_difference.html | 16 +-
   trunk/libs/range/doc/html/range/reference/algorithms/numeric/inner_product.html | 16 +-
   trunk/libs/range/doc/html/range/reference/algorithms/numeric/partial_sum.html | 16 +-
   trunk/libs/range/doc/html/range/reference/algorithms/permutation/next_permutation.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/permutation/prev_permutation.html | 10
   trunk/libs/range/doc/html/range/reference/algorithms/set/includes.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/set/set_difference.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/set/set_intersection.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/set/set_symmetric_difference.html | 12 +-
   trunk/libs/range/doc/html/range/reference/algorithms/set/set_union.html | 12 +-
   trunk/libs/range/doc/html/range/reference/concept_implementation/semantics.html | 2
   trunk/libs/range/doc/html/range/reference/ranges.html | 7
   trunk/libs/range/doc/html/range/reference/ranges/counting_range.html | 14 +-
   trunk/libs/range/doc/html/range/reference/ranges/irange.html | 10
   trunk/libs/range/doc/html/range/reference/ranges/istream_range.html | 6
   trunk/libs/range/doc/html/range/reference/utilities/iterator_range.html | 6
   trunk/libs/range/doc/html/range/reference/utilities/join.html | 4
   trunk/libs/range/doc/html/range/reference/utilities/sub_range.html | 2
   trunk/libs/range/doc/reference/adaptors.qbk | 1
   trunk/libs/range/doc/reference/ranges.qbk | 1
   trunk/libs/range/test/Jamfile.v2 | 4
   109 files changed, 737 insertions(+), 590 deletions(-)

Modified: trunk/boost/range/adaptor/sliced.hpp
==============================================================================
--- trunk/boost/range/adaptor/sliced.hpp (original)
+++ trunk/boost/range/adaptor/sliced.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -76,6 +76,7 @@
         }
 
     } // namespace adaptors
+ using adaptors::sliced_range;
 } // namespace boost
 
 #endif

Modified: trunk/boost/range/adaptor/type_erased.hpp
==============================================================================
--- trunk/boost/range/adaptor/type_erased.hpp (original)
+++ trunk/boost/range/adaptor/type_erased.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -1,6 +1,6 @@
 // Boost.Range library
 //
-// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and
+// 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)
@@ -10,79 +10,173 @@
 #ifndef BOOST_RANGE_ADAPTOR_TYPE_ERASED_HPP_INCLUDED
 #define BOOST_RANGE_ADAPTOR_TYPE_ERASED_HPP_INCLUDED
 
-#include <boost/iterator/iterator_facade.hpp>
-#include <boost/range/range_reference.hpp>
-#include <boost/range/range_value.hpp>
+#include <boost/range/reference.hpp>
+#include <boost/range/value_type.hpp>
+#include <boost/range/iterator_range_core.hpp>
+#include <boost/range/any_range.hpp>
+#include <boost/cast.hpp>
 
 namespace boost
 {
- namespace range_detail
+ namespace adaptors
     {
         template<
- class Value,
- class CategoryOrTraversal,
- class Reference,
- class Difference
- >
- class any_range
- : public iterator_range<
- IteratorTypeErasure::any_iterator<
- Value, CategoryOrTraversal, Reference, Difference> >
+ class Value = use_default
+ , class Traversal = use_default
+ , class Reference = use_default
+ , class Difference = use_default
+ , class Buffer = use_default
+ >
+ struct type_erased
         {
- typedef typename IteratorTypeErasure::any_iterator<
- Value, CategoryOrTraversal, Reference, Difference> iterator_t;
-
- typedef iterator_range<iterator_t> base_t;
- public:
- template<class Range>
- explicit any_range(Range& r) : base_t(r) {}
-
- template<class Range>
- explicit any_range(const Range& r) : base_t(r) {}
         };
 
- template<class Range>
- class any_range_generator
- {
- public:
- typedef any_range<
- BOOST_DEDUCED_TYPENAME range_value<Range>::type,
- BOOST_DEDUCED_TYPENAME iterator_traversal<
- BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
- >::type,
- BOOST_DEDUCED_TYPENAME range_reference<Range>::type,
- BOOST_DEDUCED_TYPENAME range_difference<Range>::type
- > type;
- };
-
- class type_erased_tag {};
-
-
- } // namespace range_detail
-
- using range_detail::any_range;
+ template<
+ class SinglePassRange
+ , class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ typename any_range_type_generator<
+ SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type
+ operator|(SinglePassRange& rng,
+ type_erased<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >)
+ {
+ typedef typename any_range_type_generator<
+ SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type range_type;
+ return range_type(boost::begin(rng), boost::end(rng));
+ }
 
- namespace adaptors
- {
- namespace
+ template<
+ class SinglePassRange
+ , class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ typename any_range_type_generator<
+ const SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type
+ operator|(const SinglePassRange& rng,
+ type_erased<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >)
         {
- const range_detail::type_erased_tag type_erased = range_detail::type_erased_tag();
+ typedef typename any_range_type_generator<
+ const SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type range_type;
+ return range_type(boost::begin(rng), boost::end(rng));
         }
 
- template<class SinglePassRange>
- typename range_detail::any_range_generator<SinglePassRange>::type
- operator|(SinglePassRange& rng, range_detail::type_erased_tag)
+ template<
+ class SinglePassRange
+ , class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ typename any_range_type_generator<
+ SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type
+ type_erase(SinglePassRange& rng
+ , type_erased<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ > = type_erased<>()
+ )
         {
- typedef typename range_detail::any_range_generator<SinglePassRange>::type range_t;
- return range_t(rng);
+ typedef typename any_range_type_generator<
+ SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type range_type;
+
+ return range_type(boost::begin(rng), boost::end(rng));
         }
 
- template<class SinglePassRange>
- typename range_detail::any_range_generator<const SinglePassRange>::type
- operator|(const SinglePassRange& rng, range_detail::type_erased_tag)
+ template<
+ class SinglePassRange
+ , class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ typename any_range_type_generator<
+ const SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type
+ type_erase(const SinglePassRange& rng
+ , type_erased<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ > = type_erased<>()
+ )
         {
- typedef typename range_detail::any_range_generator<const SinglePassRange>::type range_t;
- return range_t(rng);
+ typedef typename any_range_type_generator<
+ const SinglePassRange
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type range_type;
+
+ return range_type(boost::begin(rng), boost::end(rng));
         }
     }
 } // namespace boost

Added: trunk/boost/range/any_range.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/range/any_range.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,204 @@
+// 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_ANY_RANGE_HPP_INCLUDED
+#define BOOST_RANGE_ANY_RANGE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/range/detail/any_iterator.hpp>
+#include <boost/range/reference.hpp>
+#include <boost/range/value_type.hpp>
+#include <boost/range/iterator_range_core.hpp>
+#include <boost/cast.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ // If T is use_default, return the result of Default, otherwise
+ // return T.
+ //
+ // This is an implementation artifact used to pick intelligent default
+ // values when the user specified boost::use_default as a template
+ // parameter.
+ template<
+ class T,
+ class Default
+ >
+ struct any_range_default_help
+ : mpl::eval_if<
+ is_same<T, use_default>
+ , Default
+ , mpl::identity<T>
+ >
+ {
+ };
+
+ template<
+ class WrappedRange
+ , class Value
+ , class Reference
+ >
+ struct any_range_value_type
+ {
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+ typedef typename any_range_default_help<
+ Value
+ , mpl::eval_if<
+ is_same<Reference, use_default>
+ , range_value<
+ typename remove_const<WrappedRange>
+ ::type>
+ , remove_reference<Reference>
+ >
+ >::type type;
+# else
+ typedef typename any_range_default_help<
+ Value
+ , range_value<
+ typename remove_const<WrappedRange>
+ ::type>
+ >::type type;
+# endif
+ };
+
+ template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer = use_default
+ >
+ class any_range
+ : public iterator_range<
+ any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , typename any_range_default_help<
+ Buffer
+ , mpl::identity<any_iterator_default_buffer>
+ >::type
+ >
+ >
+ {
+ typedef iterator_range<
+ any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , typename any_range_default_help<
+ Buffer
+ , mpl::identity<any_iterator_default_buffer>
+ >::type
+ >
+ > base_type;
+
+ struct enabler {};
+ struct disabler {};
+ public:
+ any_range()
+ {
+ }
+
+ any_range(const any_range& other)
+ : base_type(other)
+ {
+ }
+
+ template<class WrappedRange>
+ any_range(WrappedRange& wrapped_range)
+ : base_type(boost::begin(wrapped_range),
+ boost::end(wrapped_range))
+ {
+ }
+
+ template<class WrappedRange>
+ any_range(const WrappedRange& wrapped_range)
+ : base_type(boost::begin(wrapped_range),
+ boost::end(wrapped_range))
+ {
+ }
+
+ template<
+ class OtherValue
+ , class OtherTraversal
+ , class OtherReference
+ , class OtherDifference
+ >
+ any_range(const any_range<
+ OtherValue
+ , OtherTraversal
+ , OtherReference
+ , OtherDifference
+ , Buffer
+ >& other)
+ : base_type(boost::begin(other), boost::end(other))
+ {
+ }
+
+ template<class Iterator>
+ any_range(Iterator first, Iterator last)
+ : base_type(first, last)
+ {
+ }
+ };
+
+ template<
+ class WrappedRange
+ , class Value = use_default
+ , class Traversal = use_default
+ , class Reference = use_default
+ , class Difference = use_default
+ , class Buffer = use_default
+ >
+ struct any_range_type_generator
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<WrappedRange> ));
+ typedef any_range<
+ typename any_range_value_type<
+ WrappedRange
+ , Value
+ , typename any_range_default_help<
+ Reference
+ , range_reference<WrappedRange>
+ >::type
+ >::type
+ , typename any_range_default_help<
+ Traversal
+ , iterator_traversal<
+ typename range_iterator<WrappedRange>::type
+ >
+ >::type
+ , typename any_range_default_help<
+ Reference
+ , range_reference<WrappedRange>
+ >::type
+ , typename any_range_default_help<
+ Difference
+ , range_difference<WrappedRange>
+ >::type
+ , typename any_range_default_help<
+ Buffer
+ , mpl::identity<any_iterator_default_buffer>
+ >::type
+ > type;
+ };
+ } // namespace range_detail
+
+ using range_detail::any_range;
+ using range_detail::any_range_type_generator;
+} // namespace boost
+
+#endif // include guard

Modified: trunk/boost/range/begin.hpp
==============================================================================
--- trunk/boost/range/begin.hpp (original)
+++ trunk/boost/range/begin.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -91,6 +91,11 @@
 } // namespace 'range_detail'
 #endif
 
+// Use a ADL namespace barrier to avoid ambiguity with other unqualified
+// calls. This is particularly important with C++0x encouraging
+// unqualified calls to begin/end.
+namespace range_adl_barrier
+{
 
 template< class T >
 inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
@@ -114,19 +119,25 @@
     return range_begin( r );
 }
 
+ } // namespace range_adl_barrier
 } // namespace boost
 
 #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 
 namespace boost
 {
- template< class T >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
- const_begin( const T& r )
+ namespace range_adl_barrier
     {
- return boost::begin( r );
- }
-}
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ const_begin( const T& r )
+ {
+ return boost::range_adl_barrier::begin( r );
+ }
+ } // namespace range_adl_barrier
+
+ using namespace range_adl_barrier;
+} // namespace boost
 
 #endif
 

Modified: trunk/boost/range/concepts.hpp
==============================================================================
--- trunk/boost/range/concepts.hpp (original)
+++ trunk/boost/range/concepts.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -148,13 +148,16 @@
                 Iterator i2(++i);
                 boost::ignore_unused_variable_warning(i2);
 
- Iterator i3(i++);
- boost::ignore_unused_variable_warning(i3);
+ // deliberately we are loose with the postfix version for the single pass
+ // iterator due to the commonly poor adherence to the specification means that
+ // many algorithms would be unusable, whereas actually without the check they
+ // work
+ (void)(i++);
 
                 BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r1(*i);
                 boost::ignore_unused_variable_warning(r1);
 
- BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r2(*i++);
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r2(*(++i));
                 boost::ignore_unused_variable_warning(r2);
             }
         private:
@@ -178,6 +181,20 @@
                     BOOST_DEDUCED_TYPENAME ForwardIteratorConcept::traversal_category,
                     forward_traversal_tag
>));
+
+ BOOST_CONCEPT_USAGE(ForwardIteratorConcept)
+ {
+ // See the above note in the SinglePassIteratorConcept about the handling of the
+ // postfix increment. Since with forward and better iterators there is no need
+ // for a proxy, we can sensibly require that the dereference result
+ // is convertible to reference.
+ Iterator i2(i++);
+ boost::ignore_unused_variable_warning(i2);
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r(*(i++));
+ boost::ignore_unused_variable_warning(r);
+ }
+ private:
+ Iterator i;
 #endif
          };
 

Added: trunk/boost/range/detail/any_iterator.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/range/detail/any_iterator.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,587 @@
+// 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_DETAIL_ANY_ITERATOR_HPP_INCLUDED
+#define BOOST_RANGE_DETAIL_ANY_ITERATOR_HPP_INCLUDED
+
+#include <boost/cast.hpp>
+#include <boost/utility.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/range/detail/any_iterator_buffer.hpp>
+#include <boost/range/detail/any_iterator_interface.hpp>
+#include <boost/range/detail/any_iterator_wrapper.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ // metafunction to determine if T is a const reference
+ template<class T>
+ struct is_const_reference
+ {
+ typedef typename mpl::and_<
+ typename is_reference<T>::type,
+ typename is_const<
+ typename remove_reference<T>::type
+ >::type
+ >::type type;
+ };
+
+ // metafunction to determine if T is a mutable reference
+ template<class T>
+ struct is_mutable_reference
+ {
+ typedef typename mpl::and_<
+ typename is_reference<T>::type,
+ typename mpl::not_<
+ typename is_const<
+ typename remove_reference<T>::type
+ >::type
+ >::type
+ >::type type;
+ };
+
+ // metafunction to evaluate if a source 'reference' can be
+ // converted to a target 'reference' as a value.
+ //
+ // This is true, when the target reference type is actually
+ // not a reference, and the source reference is convertible
+ // to the target type.
+ template<class SourceReference, class TargetReference>
+ struct is_convertible_to_value_as_reference
+ {
+ typedef typename mpl::and_<
+ typename mpl::not_<
+ typename is_reference<TargetReference>::type
+ >::type
+ , typename is_convertible<
+ SourceReference
+ , TargetReference
+ >::type
+ >::type type;
+ };
+
+ template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer = any_iterator_default_buffer
+ >
+ class any_iterator;
+
+ // metafunction to determine if SomeIterator is an
+ // any_iterator.
+ //
+ // This is the general implementation which evaluates to false.
+ template<class SomeIterator>
+ struct is_any_iterator
+ : mpl::bool_<false>
+ {
+ };
+
+ // specialization of is_any_iterator to return true for
+ // any_iterator classes regardless of template parameters.
+ template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct is_any_iterator<
+ any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >
+ >
+ : mpl::bool_<true>
+ {
+ };
+ } // namespace range_detail
+
+ namespace detail
+ {
+ // Rationale:
+ // These are specialized since the iterator_facade versions lack
+ // the requisite typedefs to allow wrapping to determine the types
+ // if a user copy constructs from a postfix increment.
+
+ template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ class postfix_increment_proxy<
+ range_detail::any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >
+ >
+ {
+ typedef range_detail::any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ > any_iterator_type;
+
+ public:
+ typedef Value value_type;
+ typedef typename std::iterator_traits<any_iterator_type>::iterator_category iterator_category;
+ typedef Difference difference_type;
+ typedef typename iterator_pointer<any_iterator_type>::type pointer;
+ typedef Reference reference;
+
+ explicit postfix_increment_proxy(any_iterator_type const& x)
+ : stored_value(*x)
+ {}
+
+ value_type&
+ operator*() const
+ {
+ return this->stored_value;
+ }
+ private:
+ mutable value_type stored_value;
+ };
+
+ template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ class writable_postfix_increment_proxy<
+ range_detail::any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >
+ >
+ {
+ typedef range_detail::any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ > any_iterator_type;
+ public:
+ typedef Value value_type;
+ typedef typename std::iterator_traits<any_iterator_type>::iterator_category iterator_category;
+ typedef Difference difference_type;
+ typedef typename iterator_pointer<any_iterator_type>::type pointer;
+ typedef Reference reference;
+
+ explicit writable_postfix_increment_proxy(any_iterator_type const& x)
+ : stored_value(*x)
+ , stored_iterator(x)
+ {}
+
+ // Dereferencing must return a proxy so that both *r++ = o and
+ // value_type(*r++) can work. In this case, *r is the same as
+ // *r++, and the conversion operator below is used to ensure
+ // readability.
+ writable_postfix_increment_proxy const&
+ operator*() const
+ {
+ return *this;
+ }
+
+ // Provides readability of *r++
+ operator value_type&() const
+ {
+ return stored_value;
+ }
+
+ // Provides writability of *r++
+ template <class T>
+ T const& operator=(T const& x) const
+ {
+ *this->stored_iterator = x;
+ return x;
+ }
+
+ // This overload just in case only non-const objects are writable
+ template <class T>
+ T& operator=(T& x) const
+ {
+ *this->stored_iterator = x;
+ return x;
+ }
+
+ // Provides X(r++)
+ operator any_iterator_type const&() const
+ {
+ return stored_iterator;
+ }
+
+ private:
+ mutable value_type stored_value;
+ any_iterator_type stored_iterator;
+ };
+
+
+ }
+
+ namespace range_detail
+ {
+ template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ class any_iterator
+ : public iterator_facade<
+ any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ >
+ {
+ template<
+ class OtherValue
+ , class OtherTraversal
+ , class OtherReference
+ , class OtherDifference
+ , class OtherBuffer
+ >
+ friend class any_iterator;
+
+ struct enabler {};
+ struct disabler {};
+
+ typedef typename any_iterator_interface_type_generator<
+ Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type abstract_base_type;
+
+ typedef iterator_facade<
+ any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >
+ , Value
+ , Traversal
+ , Reference
+ , Difference
+ > base_type;
+
+ typedef Buffer buffer_type;
+
+ public:
+ typedef typename base_type::value_type value_type;
+ typedef typename base_type::reference reference;
+ typedef typename base_type::difference_type difference_type;
+
+ // Default constructor
+ any_iterator()
+ : m_impl(0) {}
+
+ // Simple copy construction without conversion
+ any_iterator(const any_iterator& other)
+ : base_type(other)
+ , m_impl(other.m_impl
+ ? other.m_impl->clone(m_buffer)
+ : 0)
+ {
+ }
+
+ // Simple assignment operator without conversion
+ any_iterator& operator=(const any_iterator& other)
+ {
+ if (this != &other)
+ {
+ if (m_impl)
+ m_impl->~abstract_base_type();
+ m_buffer.deallocate();
+ m_impl = 0;
+ if (other.m_impl)
+ m_impl = other.m_impl->clone(m_buffer);
+ }
+ return *this;
+ }
+
+ // Implicit conversion from another any_iterator where the
+ // conversion is from a non-const reference to a const reference
+ template<
+ class OtherValue
+ , class OtherTraversal
+ , class OtherReference
+ , class OtherDifference
+ >
+ any_iterator(const any_iterator<
+ OtherValue,
+ OtherTraversal,
+ OtherReference,
+ OtherDifference,
+ Buffer
+ >& other,
+ typename enable_if<
+ typename mpl::and_<
+ typename is_mutable_reference<OtherReference>::type,
+ typename is_const_reference<Reference>::type
+ >::type,
+ enabler
+ >::type* = 0
+ )
+ : m_impl(other.m_impl
+ ? other.m_impl->clone_const_ref(m_buffer)
+ : 0
+ )
+ {
+ }
+
+ // Implicit conversion from another any_iterator where the
+ // reference types of the source and the target are references
+ // that are either both const, or both non-const.
+ template<
+ class OtherValue
+ , class OtherTraversal
+ , class OtherReference
+ , class OtherDifference
+ >
+ any_iterator(const any_iterator<
+ OtherValue
+ , OtherTraversal
+ , OtherReference
+ , OtherDifference
+ , Buffer
+ >& other,
+ typename enable_if<
+ typename mpl::or_<
+ typename mpl::and_<
+ typename is_mutable_reference<OtherReference>::type,
+ typename is_mutable_reference<Reference>::type
+ >::type,
+ typename mpl::and_<
+ typename is_const_reference<OtherReference>::type,
+ typename is_const_reference<Reference>::type
+ >::type
+ >::type,
+ enabler
+ >::type* = 0
+ )
+ : m_impl(other.m_impl
+ ? other.m_impl->clone(m_buffer)
+ : 0
+ )
+ {
+ }
+
+ // Implicit conversion to an any_iterator that uses a value for
+ // the reference type.
+ template<
+ class OtherValue
+ , class OtherTraversal
+ , class OtherReference
+ , class OtherDifference
+ >
+ any_iterator(const any_iterator<
+ OtherValue
+ , OtherTraversal
+ , OtherReference
+ , OtherDifference
+ , Buffer
+ >& other,
+ typename enable_if<
+ typename is_convertible_to_value_as_reference<
+ OtherReference
+ , Reference
+ >::type,
+ enabler
+ >::type* = 0
+ )
+ : m_impl(other.m_impl
+ ? other.m_impl->clone_reference_as_value(m_buffer)
+ : 0
+ )
+ {
+ }
+
+ any_iterator clone() const
+ {
+ any_iterator result;
+ if (m_impl)
+ result.m_impl = m_impl->clone(result.m_buffer);
+ return result;
+ }
+
+ any_iterator<
+ Value
+ , Traversal
+ , typename abstract_base_type::const_reference
+ , Difference
+ , Buffer
+ >
+ clone_const_ref() const
+ {
+ typedef any_iterator<
+ Value
+ , Traversal
+ , typename abstract_base_type::const_reference
+ , Difference
+ , Buffer
+ > result_type;
+
+ result_type result;
+
+ if (m_impl)
+ result.m_impl = m_impl->clone_const_ref(result.m_buffer);
+
+ return result;
+ }
+
+ // implicit conversion and construction from type-erasure-compatible
+ // iterators
+ template<class WrappedIterator>
+ explicit any_iterator(
+ const WrappedIterator& wrapped_iterator,
+ typename disable_if<
+ typename is_any_iterator<WrappedIterator>::type
+ , disabler
+ >::type* = 0
+ )
+ {
+ typedef typename any_iterator_wrapper_type_generator<
+ WrappedIterator
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >::type wrapper_type;
+
+ void* ptr = m_buffer.allocate(sizeof(wrapper_type));
+ m_impl = new(ptr) wrapper_type(wrapped_iterator);
+ }
+
+ ~any_iterator()
+ {
+ // manually run the destructor, the deallocation is automatically
+ // handled by the any_iterator_small_buffer base class.
+ if (m_impl)
+ m_impl->~abstract_base_type();
+ }
+
+ private:
+ friend class ::boost::iterator_core_access;
+
+ Reference dereference() const
+ {
+ BOOST_ASSERT( m_impl );
+ return m_impl->dereference();
+ }
+
+ bool equal(const any_iterator& other) const
+ {
+ return (m_impl == other.m_impl)
+ || (m_impl && other.m_impl && m_impl->equal(*other.m_impl));
+ }
+
+ void increment()
+ {
+ BOOST_ASSERT( m_impl );
+ m_impl->increment();
+ }
+
+ void decrement()
+ {
+ BOOST_ASSERT( m_impl );
+ m_impl->decrement();
+ }
+
+ Difference distance_to(const any_iterator& other) const
+ {
+ return m_impl && other.m_impl
+ ? m_impl->distance_to(*other.m_impl)
+ : 0;
+ }
+
+ void advance(Difference offset)
+ {
+ BOOST_ASSERT( m_impl );
+ m_impl->advance(offset);
+ }
+
+ any_iterator& swap(any_iterator& other)
+ {
+ BOOST_ASSERT( this != &other );
+ // grab a temporary copy of the other iterator
+ any_iterator tmp(other);
+
+ // deallocate the other iterator, taking care to obey the
+ // class-invariants in-case of exceptions later
+ if (other.m_impl)
+ {
+ other.m_impl->~abstract_base_type();
+ other.m_buffer.deallocate();
+ other.m_impl = 0;
+ }
+
+ // If this is a non-null iterator then we need to put
+ // a clone of this iterators impementation into the other
+ // iterator.
+ // We can't just swap because of the small buffer optimization.
+ if (m_impl)
+ {
+ other.m_impl = m_impl->clone(other.m_buffer);
+ m_impl->~abstract_base_type();
+ m_buffer.deallocate();
+ m_impl = 0;
+ }
+
+ // assign to this instance a clone of the temporarily held
+ // tmp which represents the input other parameter at the
+ // start of execution of this function.
+ if (tmp.m_impl)
+ m_impl = tmp.m_impl->clone(m_buffer);
+
+ return *this;
+ }
+
+ buffer_type m_buffer;
+ abstract_base_type* m_impl;
+ };
+
+ } // namespace range_detail
+} // namespace boost
+
+#endif // include guard

Added: trunk/boost/range/detail/any_iterator_buffer.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/range/detail/any_iterator_buffer.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,119 @@
+// 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_DETAIL_ANY_ITERATOR_BUFFER_HPP_INCLUDED
+#define BOOST_RANGE_DETAIL_ANY_ITERATOR_BUFFER_HPP_INCLUDED
+
+#include <boost/array.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/utility.hpp>
+
+namespace boost
+{
+ template<std::size_t StackBufferSize>
+ class any_iterator_buffer
+ : noncopyable
+ {
+ BOOST_STATIC_ASSERT(( StackBufferSize > 0 ));
+ public:
+ any_iterator_buffer()
+ : m_ptr()
+ {
+ }
+
+ ~any_iterator_buffer()
+ {
+ delete [] m_ptr;
+ }
+
+ void* allocate(std::size_t bytes)
+ {
+ BOOST_ASSERT( !m_ptr );
+ if (bytes <= StackBufferSize)
+ return m_buffer.data();
+
+ m_ptr = new char[bytes];
+ return m_ptr;
+ }
+
+ void deallocate()
+ {
+ delete [] m_ptr;
+ m_ptr = 0;
+ }
+
+ private:
+ // Rationale:
+ // Do not use inheritance from noncopyable because this causes
+ // the concepts to erroneous detect the derived any_iterator
+ // as noncopyable.
+ any_iterator_buffer(const any_iterator_buffer&);
+ void operator=(const any_iterator_buffer&);
+
+ char* m_ptr;
+ boost::array<char, StackBufferSize> m_buffer;
+ };
+
+ class any_iterator_heap_only_buffer
+ : noncopyable
+ {
+ public:
+ any_iterator_heap_only_buffer()
+ : m_ptr()
+ {
+ }
+
+ ~any_iterator_heap_only_buffer()
+ {
+ delete [] m_ptr;
+ }
+
+ void* allocate(std::size_t bytes)
+ {
+ BOOST_ASSERT( !m_ptr );
+ m_ptr = new char[bytes];
+ return m_ptr;
+ }
+
+ void deallocate()
+ {
+ delete [] m_ptr;
+ m_ptr = 0;
+ }
+
+ private:
+ char* m_ptr;
+ };
+
+ template<std::size_t StackBufferSize>
+ class any_iterator_stack_only_buffer
+ {
+ BOOST_STATIC_ASSERT(( StackBufferSize > 0 ));
+ public:
+ void* allocate(std::size_t bytes)
+ {
+ BOOST_ASSERT( bytes <= m_buffer.size() );
+ return m_buffer.data();
+ }
+
+ void deallocate()
+ {
+ }
+
+ private:
+ boost::array<char, StackBufferSize> m_buffer;
+ };
+
+ typedef any_iterator_buffer<64> any_iterator_default_buffer;
+} // namespace boost
+
+#undef BOOST_TEST_MESSAGE
+
+#endif // include guard

Added: trunk/boost/range/detail/any_iterator_interface.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/range/detail/any_iterator_interface.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,258 @@
+// 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_DETAIL_ANY_ITERATOR_INTERFACE_HPP_INCLUDED
+#define BOOST_RANGE_DETAIL_ANY_ITERATOR_INTERFACE_HPP_INCLUDED
+
+#include <boost/range/detail/any_iterator_buffer.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template<class T>
+ struct const_reference_type_generator
+ {
+ typedef typename mpl::if_<
+ typename is_reference<T>::type,
+ typename add_reference<
+ typename add_const<
+ typename remove_reference<T>::type
+ >::type
+ >::type,
+ T
+ >::type type;
+ };
+
+ template<
+ class Reference
+ , class Buffer
+ >
+ struct any_incrementable_iterator_interface
+ {
+ typedef Reference reference;
+ typedef typename const_reference_type_generator<
+ Reference
+ >::type const_reference;
+ typedef typename remove_const<
+ typename remove_reference<Reference>::type
+ >::type reference_as_value_type;
+
+ typedef Buffer buffer_type;
+
+ virtual ~any_incrementable_iterator_interface() {}
+
+ virtual any_incrementable_iterator_interface*
+ clone(buffer_type& buffer) const = 0;
+
+ virtual any_incrementable_iterator_interface<const_reference, Buffer>*
+ clone_const_ref(buffer_type& buffer) const = 0;
+
+ virtual any_incrementable_iterator_interface<reference_as_value_type, Buffer>*
+ clone_reference_as_value(buffer_type& buffer) const = 0;
+
+ virtual void increment() = 0;
+ };
+
+ template<
+ class Reference
+ , class Buffer
+ >
+ struct any_single_pass_iterator_interface
+ : any_incrementable_iterator_interface<Reference, Buffer>
+ {
+ typedef typename any_incrementable_iterator_interface<Reference, Buffer>::reference reference;
+ typedef typename any_incrementable_iterator_interface<Reference, Buffer>::const_reference const_reference;
+ typedef typename any_incrementable_iterator_interface<Reference, Buffer>::buffer_type buffer_type;
+ typedef typename any_incrementable_iterator_interface<Reference, Buffer>::reference_as_value_type reference_as_value_type;
+
+ virtual any_single_pass_iterator_interface*
+ clone(buffer_type& buffer) const = 0;
+
+ virtual any_single_pass_iterator_interface<const_reference, Buffer>*
+ clone_const_ref(buffer_type& buffer) const = 0;
+
+ virtual any_single_pass_iterator_interface<reference_as_value_type, Buffer>*
+ clone_reference_as_value(buffer_type& buffer) const = 0;
+
+ virtual Reference dereference() const = 0;
+
+ virtual bool equal(const any_single_pass_iterator_interface& other) const = 0;
+ };
+
+ template<
+ class Reference
+ , class Buffer
+ >
+ struct any_forward_iterator_interface
+ : any_single_pass_iterator_interface<Reference, Buffer>
+ {
+ typedef typename any_single_pass_iterator_interface<Reference, Buffer>::reference reference;
+ typedef typename any_single_pass_iterator_interface<Reference, Buffer>::const_reference const_reference;
+ typedef typename any_single_pass_iterator_interface<Reference, Buffer>::buffer_type buffer_type;
+ typedef typename any_single_pass_iterator_interface<Reference, Buffer>::reference_as_value_type reference_as_value_type;
+
+ virtual any_forward_iterator_interface*
+ clone(buffer_type& buffer) const = 0;
+
+ virtual any_forward_iterator_interface<const_reference, Buffer>*
+ clone_const_ref(buffer_type& buffer) const = 0;
+
+ virtual any_forward_iterator_interface<reference_as_value_type, Buffer>*
+ clone_reference_as_value(buffer_type& buffer) const = 0;
+ };
+
+ template<
+ class Reference
+ , class Buffer
+ >
+ struct any_bidirectional_iterator_interface
+ : any_forward_iterator_interface<Reference, Buffer>
+ {
+ typedef typename any_forward_iterator_interface<Reference, Buffer>::reference reference;
+ typedef typename any_forward_iterator_interface<Reference, Buffer>::const_reference const_reference;
+ typedef typename any_forward_iterator_interface<Reference, Buffer>::buffer_type buffer_type;
+ typedef typename any_forward_iterator_interface<Reference, Buffer>::reference_as_value_type reference_as_value_type;
+
+ virtual any_bidirectional_iterator_interface*
+ clone(buffer_type& buffer) const = 0;
+
+ virtual any_bidirectional_iterator_interface<const_reference, Buffer>*
+ clone_const_ref(buffer_type& buffer) const = 0;
+
+ virtual any_bidirectional_iterator_interface<reference_as_value_type, Buffer>*
+ clone_reference_as_value(buffer_type& buffer) const = 0;
+
+ virtual void decrement() = 0;
+ };
+
+ template<
+ class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_random_access_iterator_interface
+ : any_bidirectional_iterator_interface<
+ Reference
+ , Buffer
+ >
+ {
+ typedef typename any_bidirectional_iterator_interface<Reference, Buffer>::reference reference;
+ typedef typename any_bidirectional_iterator_interface<Reference, Buffer>::const_reference const_reference;
+ typedef typename any_bidirectional_iterator_interface<Reference, Buffer>::buffer_type buffer_type;
+ typedef typename any_bidirectional_iterator_interface<Reference, Buffer>::reference_as_value_type reference_as_value_type;
+ typedef Difference difference_type;
+
+ virtual any_random_access_iterator_interface*
+ clone(buffer_type& buffer) const = 0;
+
+ virtual any_random_access_iterator_interface<const_reference, Difference, Buffer>*
+ clone_const_ref(buffer_type& buffer) const = 0;
+
+ virtual any_random_access_iterator_interface<reference_as_value_type, Difference, Buffer>*
+ clone_reference_as_value(buffer_type& buffer) const = 0;
+
+ virtual void advance(Difference offset) = 0;
+
+ virtual Difference distance_to(const any_random_access_iterator_interface& other) const = 0;
+ };
+
+ template<
+ class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_interface_type_generator;
+
+ template<
+ class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_interface_type_generator<
+ incrementable_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_incrementable_iterator_interface<Reference, Buffer> type;
+ };
+
+ template<
+ class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_interface_type_generator<
+ single_pass_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_single_pass_iterator_interface<Reference, Buffer> type;
+ };
+
+ template<
+ class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_interface_type_generator<
+ forward_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_forward_iterator_interface<Reference, Buffer> type;
+ };
+
+ template<
+ class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_interface_type_generator<
+ bidirectional_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_bidirectional_iterator_interface<Reference, Buffer> type;
+ };
+
+ template<
+ class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_interface_type_generator<
+ random_access_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_random_access_iterator_interface<
+ Reference
+ , Difference
+ , Buffer
+ > type;
+ };
+
+ } // namespace range_detail
+} // namespace boost
+
+#endif // include guard

Added: trunk/boost/range/detail/any_iterator_wrapper.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/range/detail/any_iterator_wrapper.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,590 @@
+// 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_DETAIL_ANY_ITERATOR_WRAPPER_HPP_INCLUDED
+#define BOOST_RANGE_DETAIL_ANY_ITERATOR_WRAPPER_HPP_INCLUDED
+
+#include <boost/range/config.hpp>
+#include <boost/range/detail/any_iterator_interface.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Buffer
+ >
+ class any_incrementable_iterator_wrapper
+ : public any_incrementable_iterator_interface<
+ Reference
+ , Buffer
+ >
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( IncrementableIteratorConcept<WrappedIterator> ));
+ public:
+ typedef WrappedIterator wrapped_type;
+
+ BOOST_STATIC_ASSERT(( is_convertible<
+ typename iterator_reference<WrappedIterator>::type
+ , Reference
+ >::value ));
+
+ any_incrementable_iterator_wrapper()
+ : m_it()
+ {}
+
+ explicit any_incrementable_iterator_wrapper(wrapped_type it)
+ : m_it(it)
+ {}
+
+ // any_incrementable_iterator implementation
+ virtual any_incrementable_iterator_wrapper* clone(
+ typename any_incrementable_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ return new (buffer.allocate(sizeof(*this)))
+ any_incrementable_iterator_wrapper(m_it);
+ }
+
+ virtual any_incrementable_iterator_wrapper<
+ WrappedIterator
+ , typename any_incrementable_iterator_wrapper::const_reference
+ , Buffer
+ >* clone_const_ref(
+ typename any_incrementable_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_incrementable_iterator_wrapper<
+ WrappedIterator
+ , typename any_incrementable_iterator_wrapper::const_reference
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual any_incrementable_iterator_wrapper<
+ WrappedIterator
+ , typename any_incrementable_iterator_wrapper::reference_as_value_type
+ , Buffer
+ >* clone_reference_as_value(
+ typename any_incrementable_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_incrementable_iterator_wrapper<
+ WrappedIterator
+ , typename any_incrementable_iterator_wrapper::reference_as_value_type
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual void increment()
+ {
+ ++m_it;
+ }
+
+ private:
+ wrapped_type m_it;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Buffer
+ >
+ class any_single_pass_iterator_wrapper
+ : public any_single_pass_iterator_interface<
+ Reference
+ , Buffer
+ >
+ {
+ struct disabler {};
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassIteratorConcept<WrappedIterator> ));
+ public:
+
+ any_single_pass_iterator_wrapper()
+ : m_it()
+ {}
+
+ explicit any_single_pass_iterator_wrapper(const WrappedIterator& it)
+ : m_it(it)
+ {}
+ // any_single_pass_iterator_interface<Reference> implementation
+ virtual any_single_pass_iterator_wrapper* clone(
+ typename any_single_pass_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ return new (buffer.allocate(sizeof(*this)))
+ any_single_pass_iterator_wrapper(m_it);
+ }
+
+ virtual any_single_pass_iterator_wrapper<
+ WrappedIterator
+ , typename any_single_pass_iterator_wrapper::const_reference
+ , Buffer
+ >* clone_const_ref(
+ typename any_single_pass_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_single_pass_iterator_wrapper<
+ WrappedIterator
+ , typename any_single_pass_iterator_wrapper::const_reference
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual any_single_pass_iterator_wrapper<
+ WrappedIterator
+ , typename any_single_pass_iterator_wrapper::reference_as_value_type
+ , Buffer
+ >* clone_reference_as_value(
+ typename any_single_pass_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_single_pass_iterator_wrapper<
+ WrappedIterator
+ , typename any_single_pass_iterator_wrapper::reference_as_value_type
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual void increment()
+ {
+ ++m_it;
+ }
+
+ virtual bool equal(const any_single_pass_iterator_interface<Reference, Buffer>& other) const
+ {
+ return m_it == boost::polymorphic_downcast<const any_single_pass_iterator_wrapper*>(&other)->m_it;
+ }
+
+ virtual Reference dereference() const
+ {
+ return *m_it;
+ }
+
+ private:
+ WrappedIterator m_it;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Buffer
+ >
+ class any_forward_iterator_wrapper
+ : public any_forward_iterator_interface<
+ Reference
+ , Buffer
+ >
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( ForwardIteratorConcept<WrappedIterator> ));
+ public:
+ any_forward_iterator_wrapper()
+ : m_it()
+ {}
+
+ explicit any_forward_iterator_wrapper(const WrappedIterator& it)
+ : m_it(it)
+ {}
+
+ // any_forward_iterator_interface<Reference> implementation
+ virtual any_forward_iterator_wrapper* clone(
+ typename any_forward_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ return new (buffer.allocate(sizeof(*this)))
+ any_forward_iterator_wrapper(m_it);
+ }
+
+ virtual any_forward_iterator_wrapper<
+ WrappedIterator
+ , typename any_forward_iterator_wrapper::const_reference
+ , Buffer
+ >* clone_const_ref(
+ typename any_forward_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_forward_iterator_wrapper<
+ WrappedIterator
+ , typename any_forward_iterator_wrapper::const_reference
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual any_forward_iterator_wrapper<
+ WrappedIterator
+ , typename any_forward_iterator_wrapper::reference_as_value_type
+ , Buffer
+ >* clone_reference_as_value(
+ typename any_forward_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_forward_iterator_wrapper<
+ WrappedIterator
+ , typename any_forward_iterator_wrapper::reference_as_value_type
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual void increment()
+ {
+ ++m_it;
+ }
+
+ virtual bool equal(const any_single_pass_iterator_interface<Reference, Buffer>& other) const
+ {
+ return m_it == boost::polymorphic_downcast<const any_forward_iterator_wrapper*>(&other)->m_it;
+ }
+
+ virtual Reference dereference() const
+ {
+ return *m_it;
+ }
+ private:
+ WrappedIterator m_it;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Buffer
+ >
+ class any_bidirectional_iterator_wrapper
+ : public any_bidirectional_iterator_interface<
+ Reference
+ , Buffer
+ >
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( BidirectionalIteratorConcept<WrappedIterator> ));
+ public:
+ any_bidirectional_iterator_wrapper()
+ : m_it()
+ {
+ }
+
+ explicit any_bidirectional_iterator_wrapper(const WrappedIterator& it)
+ : m_it(it)
+ {
+ }
+
+ virtual any_bidirectional_iterator_wrapper* clone(
+ typename any_bidirectional_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ return new (buffer.allocate(sizeof(*this)))
+ any_bidirectional_iterator_wrapper(*this);
+ }
+
+ virtual any_bidirectional_iterator_wrapper<
+ WrappedIterator
+ , typename any_bidirectional_iterator_wrapper::const_reference
+ , Buffer
+ >* clone_const_ref(
+ typename any_bidirectional_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_bidirectional_iterator_wrapper<
+ WrappedIterator
+ , typename any_bidirectional_iterator_wrapper::const_reference
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual any_bidirectional_iterator_wrapper<
+ WrappedIterator
+ , typename any_bidirectional_iterator_wrapper::reference_as_value_type
+ , Buffer
+ >* clone_reference_as_value(
+ typename any_bidirectional_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_bidirectional_iterator_wrapper<
+ WrappedIterator
+ , typename any_bidirectional_iterator_wrapper::reference_as_value_type
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual void increment()
+ {
+ ++m_it;
+ }
+
+ virtual void decrement()
+ {
+ --m_it;
+ }
+
+ virtual bool equal(const any_single_pass_iterator_interface<Reference, Buffer>& other) const
+ {
+ return m_it == boost::polymorphic_downcast<const any_bidirectional_iterator_wrapper*>(&other)->m_it;
+ }
+
+ virtual Reference dereference() const
+ {
+ return *m_it;
+ }
+
+ private:
+ WrappedIterator m_it;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ class any_random_access_iterator_wrapper
+ : public any_random_access_iterator_interface<
+ Reference
+ , Difference
+ , Buffer
+ >
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( RandomAccessIteratorConcept<WrappedIterator> ));
+ public:
+ typedef Difference difference_type;
+
+ any_random_access_iterator_wrapper()
+ : m_it()
+ {
+ }
+
+ explicit any_random_access_iterator_wrapper(const WrappedIterator& other)
+ : m_it(other)
+ {
+ }
+
+ virtual any_random_access_iterator_wrapper* clone(
+ typename any_random_access_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ return new (buffer.allocate(sizeof(*this)))
+ any_random_access_iterator_wrapper(*this);
+ }
+
+ virtual any_random_access_iterator_wrapper<
+ WrappedIterator
+ , typename any_random_access_iterator_wrapper::const_reference
+ , Difference
+ , Buffer
+ >* clone_const_ref(
+ typename any_random_access_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_random_access_iterator_wrapper<
+ WrappedIterator
+ , typename any_random_access_iterator_wrapper::const_reference
+ , Difference
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual any_random_access_iterator_wrapper<
+ WrappedIterator
+ , typename any_random_access_iterator_wrapper::reference_as_value_type
+ , Difference
+ , Buffer
+ >* clone_reference_as_value(
+ typename any_random_access_iterator_wrapper::buffer_type& buffer
+ ) const
+ {
+ typedef any_random_access_iterator_wrapper<
+ WrappedIterator
+ , typename any_random_access_iterator_wrapper::reference_as_value_type
+ , Difference
+ , Buffer
+ > result_type;
+
+ return new (buffer.allocate(sizeof(result_type)))
+ result_type(m_it);
+ }
+
+ virtual void increment()
+ {
+ ++m_it;
+ }
+
+ virtual bool equal(const any_single_pass_iterator_interface<Reference, Buffer>& other) const
+ {
+ return m_it == boost::polymorphic_downcast<const any_random_access_iterator_wrapper*>(&other)->m_it;
+ }
+
+ virtual void decrement()
+ {
+ --m_it;
+ }
+
+ virtual void advance(Difference offset)
+ {
+ m_it += offset;
+ }
+
+ virtual Reference dereference() const
+ {
+ return *m_it;
+ }
+
+ virtual Difference distance_to(const any_random_access_iterator_interface<Reference, Difference, Buffer>& other) const
+ {
+ return boost::polymorphic_downcast<const any_random_access_iterator_wrapper*>(&other)->m_it - m_it;
+ }
+
+ private:
+ WrappedIterator m_it;
+ };
+
+ template<
+ class WrappedIterator
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_wrapper_type_generator;
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_wrapper_type_generator<
+ WrappedIterator
+ , incrementable_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_incrementable_iterator_wrapper<
+ WrappedIterator
+ , Reference
+ , Buffer
+ > type;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_wrapper_type_generator<
+ WrappedIterator
+ , single_pass_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_single_pass_iterator_wrapper<
+ WrappedIterator
+ , Reference
+ , Buffer
+ > type;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_wrapper_type_generator<
+ WrappedIterator
+ , forward_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_forward_iterator_wrapper<
+ WrappedIterator
+ , Reference
+ , Buffer
+ > type;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_wrapper_type_generator<
+ WrappedIterator
+ , bidirectional_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_bidirectional_iterator_wrapper<
+ WrappedIterator
+ , Reference
+ , Buffer
+ > type;
+ };
+
+ template<
+ class WrappedIterator
+ , class Reference
+ , class Difference
+ , class Buffer
+ >
+ struct any_iterator_wrapper_type_generator<
+ WrappedIterator
+ , random_access_traversal_tag
+ , Reference
+ , Difference
+ , Buffer
+ >
+ {
+ typedef any_random_access_iterator_wrapper<
+ WrappedIterator
+ , Reference
+ , Difference
+ , Buffer
+ > type;
+ };
+
+ } // namespace range_detail
+} // namespace boost
+
+#endif // include guard

Modified: trunk/boost/range/detail/begin.hpp
==============================================================================
--- trunk/boost/range/detail/begin.hpp (original)
+++ trunk/boost/range/detail/begin.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -19,9 +19,9 @@
 # include <boost/range/value_type.hpp>
 #endif
 
-namespace boost
+namespace boost
 {
-
+
     namespace range_detail
     {
         template< typename T >
@@ -30,7 +30,7 @@
         //////////////////////////////////////////////////////////////////////
         // default
         //////////////////////////////////////////////////////////////////////
-
+
         template<>
         struct range_begin<std_container_>
         {
@@ -40,11 +40,11 @@
                 return c.begin();
             };
         };
-
+
         //////////////////////////////////////////////////////////////////////
         // pair
         //////////////////////////////////////////////////////////////////////
-
+
         template<>
         struct range_begin<std_pair_>
         {
@@ -54,11 +54,11 @@
                 return p.first;
             }
         };
-
+
         //////////////////////////////////////////////////////////////////////
         // array
         //////////////////////////////////////////////////////////////////////
-
+
         template<>
         struct range_begin<array_>
         {
@@ -78,14 +78,16 @@
         };
 
     } // namespace 'range_detail'
-
- template< typename C >
- inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
- begin( C& c )
+
+ namespace range_adl_barrier
     {
- return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ begin( C& c )
+ {
+ return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ }
     }
-
 } // namespace 'boost'
 
 

Modified: trunk/boost/range/detail/end.hpp
==============================================================================
--- trunk/boost/range/detail/end.hpp (original)
+++ trunk/boost/range/detail/end.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -24,7 +24,7 @@
 # include <boost/range/detail/remove_extent.hpp>
 # endif
 
-namespace boost
+namespace boost
 {
     namespace range_detail
     {
@@ -34,39 +34,39 @@
         //////////////////////////////////////////////////////////////////////
         // default
         //////////////////////////////////////////////////////////////////////
-
+
         template<>
         struct range_end<std_container_>
         {
             template< typename C >
- static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
             fun( C& c )
             {
                 return c.end();
             };
         };
-
+
         //////////////////////////////////////////////////////////////////////
         // pair
         //////////////////////////////////////////////////////////////////////
-
+
         template<>
         struct range_end<std_pair_>
         {
             template< typename P >
- static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
             fun( const P& p )
             {
                 return p.second;
             }
         };
-
+
         //////////////////////////////////////////////////////////////////////
         // array
         //////////////////////////////////////////////////////////////////////
-
+
         template<>
- struct range_end<array_>
+ struct range_end<array_>
         {
         #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
             template< typename T, std::size_t sz >
@@ -82,16 +82,19 @@
             }
         #endif
         };
-
+
     } // namespace 'range_detail'
-
- template< typename C >
- inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
- end( C& c )
+
+ namespace range_adl_barrier
     {
- return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
- }
-
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ end( C& c )
+ {
+ return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ }
+ } // namespace range_adl_barrier
+
 } // namespace 'boost'
 
 # endif // VC6

Modified: trunk/boost/range/end.hpp
==============================================================================
--- trunk/boost/range/end.hpp (original)
+++ trunk/boost/range/end.hpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -88,6 +88,9 @@
 } // namespace 'range_detail'
 #endif
 
+namespace range_adl_barrier
+{
+
 template< class T >
 inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
 {
@@ -110,22 +113,24 @@
     return range_end( r );
 }
 
+ } // namespace range_adl_barrier
 } // namespace 'boost'
 
-
-
 #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 
-
 namespace boost
 {
- template< class T >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
- const_end( const T& r )
+ namespace range_adl_barrier
     {
- return boost::end( r );
- }
-}
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ const_end( const T& r )
+ {
+ return boost::range_adl_barrier::end( r );
+ }
+ } // namespace range_adl_barrier
+ using namespace range_adl_barrier;
+} // namespace boost
 
 #endif
 

Modified: trunk/libs/range/doc/boost_range.qbk
==============================================================================
--- trunk/libs/range/doc/boost_range.qbk (original)
+++ trunk/libs/range/doc/boost_range.qbk 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -78,6 +78,7 @@
 [def __range_adaptors_reversed__ [link range.reference.adaptors.reference.reversed reversed]]
 [def __range_adaptors_sliced__ [link range.reference.adaptors.reference.sliced sliced]]
 [def __range_adaptors_strided__ [link range.reference.adaptors.reference.strided strided]]
+[def __range_adaptors_type_erased__ [link range.reference.adaptors.reference.type_erased type_erased]]
 [def __range_adaptors_tokenized__ [link range.reference.adaptors.reference.tokenized tokenized]]
 [def __range_adaptors_transformed__ [link range.reference.adaptors.reference.transformed transformed]]
 [def __range_adaptors_uniqued__ [link range.reference.adaptors.reference.uniqued uniqued]]
@@ -174,6 +175,7 @@
 
 [def __sgi_inner_product__ [@http://www.sgi.com/tech/stl/inner_product.html inner_product]]
 [def __sgi_partial_sum__ [@http://www.sgi.com/tech/stl/partial_sum.html partial_sum]]
+[def __type_erasure_article__ [@http://www.artima.com/cppsource/type_erasure.html type erasure article]]
 
 Boost.Range is a collection of concepts and utilities, range-based algorithms,
 as well as range adaptors that allow for efficient and expressive code.

Modified: trunk/libs/range/doc/html/index.html
==============================================================================
--- trunk/libs/range/doc/html/index.html (original)
+++ trunk/libs/range/doc/html/index.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -30,7 +30,7 @@
 </h3></div></div>
 <div><p class="copyright">Copyright &#169; 2003 -2010 Thorsten Ottosen, Neil Groves</p></div>
 <div><div class="legalnotice">
-<a name="id631480"></a><p>
+<a name="id607962"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -82,6 +82,7 @@
 </dl></dd>
 <dt><span class="section">Provided Ranges</span></dt>
 <dd><dl>
+<dt><span class="section">any_range</span></dt>
 <dt><span class="section">counting_range</span></dt>
 <dt><span class="section">istream_range</span></dt>
 <dt><span class="section">irange</span></dt>
@@ -143,7 +144,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: December 26, 2010 at 20:24:07 GMT</small></p></td>
+<td align="left"><p><small>Last revised: January 01, 2011 at 16:31:27 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/range/doc/html/quickbook_HTML.manifest
==============================================================================
--- trunk/libs/range/doc/html/quickbook_HTML.manifest (original)
+++ trunk/libs/range/doc/html/quickbook_HTML.manifest 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -30,6 +30,7 @@
 range/reference/adaptors/reference/reversed.html
 range/reference/adaptors/reference/sliced.html
 range/reference/adaptors/reference/strided.html
+range/reference/adaptors/reference/type_erased.html
 range/reference/adaptors/reference/tokenized.html
 range/reference/adaptors/reference/transformed.html
 range/reference/adaptors/reference/uniqued.html
@@ -118,6 +119,7 @@
 range/reference/algorithms/numeric/inner_product.html
 range/reference/algorithms/numeric/partial_sum.html
 range/reference/ranges.html
+range/reference/ranges/any_range.html
 range/reference/ranges/counting_range.html
 range/reference/ranges/istream_range.html
 range/reference/ranges/irange.html

Modified: trunk/libs/range/doc/html/range/concepts/bidirectional_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/concepts/bidirectional_range.html (original)
+++ trunk/libs/range/doc/html/range/concepts/bidirectional_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.concepts.bidirectional_range"></a><a class="link" href="bidirectional_range.html" title="Bidirectional Range">Bidirectional Range</a>
 </h3></div></div></div>
 <a name="range.concepts.bidirectional_range.notation"></a><h5>
-<a name="id673774"></a>
+<a name="id650256"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.notation">Notation</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.description"></a><h5>
-<a name="id673862"></a>
+<a name="id650345"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.description">Description</a>
       </h5>
 <p>
@@ -75,7 +75,7 @@
         Traversal Iterator</a>.
       </p>
 <a name="range.concepts.bidirectional_range.refinement_of"></a><h5>
-<a name="id673921"></a>
+<a name="id650403"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.refinement_of">Refinement
         of</a>
       </h5>
@@ -83,7 +83,7 @@
         <a class="link" href="forward_range.html" title="Forward Range">Forward Range</a>
       </p>
 <a name="range.concepts.bidirectional_range.associated_types"></a><h5>
-<a name="id673944"></a>
+<a name="id650426"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.associated_types">Associated
         types</a>
       </h5>
@@ -136,7 +136,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.valid_expressions"></a><h5>
-<a name="id674099"></a>
+<a name="id650581"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.valid_expressions">Valid
         expressions</a>
       </h5>
@@ -221,7 +221,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.complexity_guarantees"></a><h5>
-<a name="id674560"></a>
+<a name="id651042"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.complexity_guarantees">Complexity
         guarantees</a>
       </h5>
@@ -232,7 +232,7 @@
         <a class="link" href="forward_range.html" title="Forward Range">Forward Range</a>.
       </p>
 <a name="range.concepts.bidirectional_range.invariants"></a><h5>
-<a name="id674700"></a>
+<a name="id651182"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.invariants">Invariants</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -272,7 +272,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.bidirectional_range.see_also"></a><h5>
-<a name="id674949"></a>
+<a name="id651431"></a>
         <a class="link" href="bidirectional_range.html#range.concepts.bidirectional_range.see_also">See also</a>
       </h5>
 <p>

Modified: trunk/libs/range/doc/html/range/concepts/concept_checking.html
==============================================================================
--- trunk/libs/range/doc/html/range/concepts/concept_checking.html (original)
+++ trunk/libs/range/doc/html/range/concepts/concept_checking.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -79,7 +79,7 @@
           </li>
 </ul></div>
 <a name="range.concepts.concept_checking.see_also"></a><h5>
-<a name="id675895"></a>
+<a name="id652377"></a>
         <a class="link" href="concept_checking.html#range.concepts.concept_checking.see_also">See also</a>
       </h5>
 <p>

Modified: trunk/libs/range/doc/html/range/concepts/forward_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/concepts/forward_range.html (original)
+++ trunk/libs/range/doc/html/range/concepts/forward_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.concepts.forward_range"></a><a class="link" href="forward_range.html" title="Forward Range">Forward Range</a>
 </h3></div></div></div>
 <a name="range.concepts.forward_range.notation"></a><h5>
-<a name="id673403"></a>
+<a name="id649886"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.notation">Notation</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.forward_range.description"></a><h5>
-<a name="id673492"></a>
+<a name="id649974"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.description">Description</a>
       </h5>
 <p>
@@ -73,14 +73,14 @@
         Traversal Iterator</a>.
       </p>
 <a name="range.concepts.forward_range.refinement_of"></a><h5>
-<a name="id673557"></a>
+<a name="id650039"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.refinement_of">Refinement of</a>
       </h5>
 <p>
         <a class="link" href="single_pass_range.html" title="Single Pass Range">Single Pass Range</a>
       </p>
 <a name="range.concepts.forward_range.associated_types"></a><h5>
-<a name="id673580"></a>
+<a name="id650062"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.associated_types">Associated
         types</a>
       </h5>
@@ -132,7 +132,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.forward_range.see_also"></a><h5>
-<a name="id673729"></a>
+<a name="id650211"></a>
         <a class="link" href="forward_range.html#range.concepts.forward_range.see_also">See also</a>
       </h5>
 <p>

Modified: trunk/libs/range/doc/html/range/concepts/random_access_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/concepts/random_access_range.html (original)
+++ trunk/libs/range/doc/html/range/concepts/random_access_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.concepts.random_access_range"></a><a class="link" href="random_access_range.html" title="Random Access Range">Random Access Range</a>
 </h3></div></div></div>
 <a name="range.concepts.random_access_range.description"></a><h5>
-<a name="id674995"></a>
+<a name="id651477"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.description">Description</a>
       </h5>
 <p>
@@ -35,7 +35,7 @@
         Access Traversal Iterator</a>.
       </p>
 <a name="range.concepts.random_access_range.refinement_of"></a><h5>
-<a name="id675061"></a>
+<a name="id651543"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.refinement_of">Refinement
         of</a>
       </h5>
@@ -43,7 +43,7 @@
         <a class="link" href="bidirectional_range.html" title="Bidirectional Range">Bidirectional Range</a>
       </p>
 <a name="range.concepts.random_access_range.valid_expressions"></a><h5>
-<a name="id675084"></a>
+<a name="id651566"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.valid_expressions">Valid
         expressions</a>
       </h5>
@@ -89,7 +89,7 @@
 </tr></tbody>
 </table></div>
 <a name="range.concepts.random_access_range.expression_semantics"></a><h5>
-<a name="id675222"></a>
+<a name="id651704"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.expression_semantics">Expression
         semantics</a>
       </h5>
@@ -139,7 +139,7 @@
 </tr></tbody>
 </table></div>
 <a name="range.concepts.random_access_range.complexity_guarantees"></a><h5>
-<a name="id675437"></a>
+<a name="id651919"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.complexity_guarantees">Complexity
         guarantees</a>
       </h5>
@@ -147,7 +147,7 @@
         <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">size</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code> completes in amortized constant time.
       </p>
 <a name="range.concepts.random_access_range.invariants"></a><h5>
-<a name="id675485"></a>
+<a name="id651967"></a>
         <a class="link" href="random_access_range.html#range.concepts.random_access_range.invariants">Invariants</a>
       </h5>
 <div class="informaltable"><table class="table">

Modified: trunk/libs/range/doc/html/range/concepts/single_pass_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/concepts/single_pass_range.html (original)
+++ trunk/libs/range/doc/html/range/concepts/single_pass_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.concepts.single_pass_range"></a><a class="link" href="single_pass_range.html" title="Single Pass Range">Single Pass Range</a>
 </h3></div></div></div>
 <a name="range.concepts.single_pass_range.notation"></a><h5>
-<a name="id672111"></a>
+<a name="id648593"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.notation">Notation</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.description"></a><h5>
-<a name="id672203"></a>
+<a name="id648686"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.description">Description</a>
       </h5>
 <p>
@@ -73,7 +73,7 @@
         Pass Iterator</a>.
       </p>
 <a name="range.concepts.single_pass_range.associated_types"></a><h5>
-<a name="id672269"></a>
+<a name="id648751"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.associated_types">Associated
         types</a>
       </h5>
@@ -126,7 +126,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.valid_expressions"></a><h5>
-<a name="id672432"></a>
+<a name="id648914"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.valid_expressions">Valid
         expressions</a>
       </h5>
@@ -198,7 +198,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.expression_semantics"></a><h5>
-<a name="id672751"></a>
+<a name="id649233"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.expression_semantics">Expression
         semantics</a>
       </h5>
@@ -266,7 +266,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.complexity_guarantees"></a><h5>
-<a name="id673008"></a>
+<a name="id649490"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.complexity_guarantees">Complexity
         guarantees</a>
       </h5>
@@ -276,7 +276,7 @@
         constant time.
       </p>
 <a name="range.concepts.single_pass_range.invariants"></a><h5>
-<a name="id673084"></a>
+<a name="id649567"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.invariants">Invariants</a>
       </h5>
 <div class="informaltable"><table class="table">
@@ -316,7 +316,7 @@
 </tbody>
 </table></div>
 <a name="range.concepts.single_pass_range.see_also"></a><h5>
-<a name="id673341"></a>
+<a name="id649823"></a>
         <a class="link" href="single_pass_range.html#range.concepts.single_pass_range.see_also">See also</a>
       </h5>
 <p>

Modified: trunk/libs/range/doc/html/range/history_ack.html
==============================================================================
--- trunk/libs/range/doc/html/range/history_ack.html (original)
+++ trunk/libs/range/doc/html/range/history_ack.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -26,7 +26,7 @@
 <a name="range.history_ack"></a><a class="link" href="history_ack.html" title="History and Acknowledgement">History and Acknowledgement</a>
 </h2></div></div></div>
 <a name="range.history_ack.version_1___before_boost_1_43"></a><h4>
-<a name="id805720"></a>
+<a name="id786758"></a>
       <a class="link" href="history_ack.html#range.history_ack.version_1___before_boost_1_43">Version 1 -
       before Boost 1.43</a>
     </h4>
@@ -79,7 +79,7 @@
       The concept checks and their documentation was provided by Daniel Walker.
     </p>
 <a name="range.history_ack.version_2___boost_1_43_and_beyond"></a><h4>
-<a name="id805821"></a>
+<a name="id786859"></a>
       <a class="link" href="history_ack.html#range.history_ack.version_2___boost_1_43_and_beyond">Version
       2 - Boost 1.43 and beyond</a>
     </h4>

Modified: trunk/libs/range/doc/html/range/introduction.html
==============================================================================
--- trunk/libs/range/doc/html/range/introduction.html (original)
+++ trunk/libs/range/doc/html/range/introduction.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -70,7 +70,7 @@
         </li>
 </ul></div>
 <a name="range.introduction.example___iterate_over_the_values_in_a_map"></a><h4>
-<a name="id630758"></a>
+<a name="id607240"></a>
       <a class="link" href="introduction.html#range.introduction.example___iterate_over_the_values_in_a_map">Example
       - Iterate over the values in a map</a>
     </h4>
@@ -84,7 +84,7 @@
 <p>
     </p>
 <a name="range.introduction.example___iterate_over_the_keys_in_a_map"></a><h4>
-<a name="id630878"></a>
+<a name="id607360"></a>
       <a class="link" href="introduction.html#range.introduction.example___iterate_over_the_keys_in_a_map">Example
       - Iterate over the keys in a map</a>
     </h4>
@@ -98,7 +98,7 @@
 <p>
     </p>
 <a name="range.introduction.example___push_the_even_values_from_a_map_in_reverse_order_into_the_container__code__phrase_role__identifier__target__phrase___code_"></a><h4>
-<a name="id671831"></a>
+<a name="id648314"></a>
       <a class="link" href="introduction.html#range.introduction.example___push_the_even_values_from_a_map_in_reverse_order_into_the_container__code__phrase_role__identifier__target__phrase___code_">Example
       - Push the even values from a map in reverse order into the container <code class="computeroutput"><span class="identifier">target</span></code></a>
     </h4>

Modified: trunk/libs/range/doc/html/range/mfc_atl.html
==============================================================================
--- trunk/libs/range/doc/html/range/mfc_atl.html (original)
+++ trunk/libs/range/doc/html/range/mfc_atl.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -34,7 +34,7 @@
 <dt><span class="section">References</span></dt>
 </dl></div>
 <a name="range.mfc_atl.introduction"></a><h5>
-<a name="id799247"></a>
+<a name="id780286"></a>
       <a class="link" href="mfc_atl.html#range.mfc_atl.introduction">Introduction</a>
     </h5>
 <p>
@@ -100,7 +100,7 @@
 </tbody>
 </table></div>
 <a name="range.mfc_atl.overview"></a><h5>
-<a name="id799381"></a>
+<a name="id780420"></a>
       <a class="link" href="mfc_atl.html#range.mfc_atl.overview">Overview</a>
     </h5>
 <p>

Modified: trunk/libs/range/doc/html/range/reference.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference.html (original)
+++ trunk/libs/range/doc/html/range/reference.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -58,6 +58,7 @@
 </dl></dd>
 <dt><span class="section">Provided Ranges</span></dt>
 <dd><dl>
+<dt><span class="section">any_range</span></dt>
 <dt><span class="section">counting_range</span></dt>
 <dt><span class="section">istream_range</span></dt>
 <dt><span class="section">irange</span></dt>

Modified: trunk/libs/range/doc/html/range/reference/adaptors/introduction.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/adaptors/introduction.html (original)
+++ trunk/libs/range/doc/html/range/reference/adaptors/introduction.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -122,7 +122,7 @@
           situations, you will really appreciate the succinctness of <code class="computeroutput"><span class="keyword">operator</span><span class="special">|()</span></code>.
         </p>
 <a name="range.reference.adaptors.introduction.composition_of_adaptors"></a><h6>
-<a name="id683148"></a>
+<a name="id659630"></a>
           <a class="link" href="introduction.html#range.reference.adaptors.introduction.composition_of_adaptors">Composition
           of Adaptors</a>
         </h6>
@@ -169,7 +169,7 @@
           is the design solution to this problem.
         </p>
 <a name="range.reference.adaptors.introduction.range_adaptor_alternative_to_copy_if_algorithm"></a><h6>
-<a name="id683457"></a>
+<a name="id659939"></a>
           <a class="link" href="introduction.html#range.reference.adaptors.introduction.range_adaptor_alternative_to_copy_if_algorithm">Range
           Adaptor alternative to copy_if algorithm</a>
         </h6>
@@ -186,7 +186,7 @@
 <p>
         </p>
 <a name="range.reference.adaptors.introduction.range_adaptor_alternative_to_count_if_algorithm"></a><h6>
-<a name="id683621"></a>
+<a name="id660104"></a>
           <a class="link" href="introduction.html#range.reference.adaptors.introduction.range_adaptor_alternative_to_count_if_algorithm">Range
           Adaptor alternative to count_if algorithm</a>
         </h6>

Modified: trunk/libs/range/doc/html/range/reference/adaptors/reference.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/adaptors/reference.html (original)
+++ trunk/libs/range/doc/html/range/reference/adaptors/reference.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -39,6 +39,7 @@
 <dt><span class="section">reversed</span></dt>
 <dt><span class="section">sliced</span></dt>
 <dt><span class="section">strided</span></dt>
+<dt><span class="section">type_erased</span></dt>
 <dt><span class="section">tokenized</span></dt>
 <dt><span class="section">transformed</span></dt>
 <dt><span class="section">uniqued</span></dt>

Modified: trunk/libs/range/doc/html/range/reference/adaptors/reference/strided.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/adaptors/reference/strided.html (original)
+++ trunk/libs/range/doc/html/range/reference/adaptors/reference/strided.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Range 2.0">
 <link rel="up" href="../reference.html" title="Reference">
 <link rel="prev" href="sliced.html" title="sliced">
-<link rel="next" href="tokenized.html" title="tokenized">
+<link rel="next" href="type_erased.html" title="type_erased">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="sliced.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tokenized.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="sliced.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="type_erased.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h5 class="title">
@@ -143,7 +143,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="sliced.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tokenized.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="sliced.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="type_erased.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/range/doc/html/range/reference/adaptors/reference/tokenized.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/adaptors/reference/tokenized.html (original)
+++ trunk/libs/range/doc/html/range/reference/adaptors/reference/tokenized.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Range 2.0">
 <link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="strided.html" title="strided">
+<link rel="prev" href="type_erased.html" title="type_erased">
 <link rel="next" href="transformed.html" title="transformed">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="strided.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transformed.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="type_erased.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transformed.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h5 class="title">
@@ -149,7 +149,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="strided.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transformed.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="type_erased.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transformed.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Added: trunk/libs/range/doc/html/range/reference/adaptors/reference/type_erased.html
==============================================================================
--- (empty file)
+++ trunk/libs/range/doc/html/range/reference/adaptors/reference/type_erased.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,305 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>type_erased</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Range 2.0">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="strided.html" title="strided">
+<link rel="next" href="tokenized.html" title="tokenized">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strided.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tokenized.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="range.reference.adaptors.reference.type_erased"></a><a class="link" href="type_erased.html" title="type_erased">type_erased</a>
+</h5></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="type_erased.html#range.reference.adaptors.reference.type_erased.type_erased_example">type-erased
+ example</a></span></dt></dl></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Syntax
+ </p>
+ </th>
+<th>
+ <p>
+ Code
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Pipe
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rng</span> <span class="special">|</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">type_erased</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Traversal</span><span class="special">,</span>
+ <span class="identifier">Reference</span><span class="special">,</span>
+ <span class="identifier">Difference</span><span class="special">,</span>
+ <span class="identifier">Buffer</span><span class="special">&gt;()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Function
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">type_erase</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">type_erased</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Traversal</span><span class="special">,</span>
+ <span class="identifier">Reference</span><span class="special">,</span>
+ <span class="identifier">Difference</span><span class="special">,</span>
+ <span class="identifier">Buffer</span><span class="special">&gt;)</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Please note that it is frequently unnecessary to use the <code class="computeroutput"><span class="identifier">type_erased</span></code> adaptor. It is often better
+ to use the implicit conversion to <code class="computeroutput"><span class="identifier">any_range</span></code>.
+ </p>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Rng</span></code> be the type of
+ <code class="computeroutput"><span class="identifier">rng</span></code>.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<p class="simpara">
+ <span class="bold"><strong>Template parameters:</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="circle">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Value</span></code> is the
+ <code class="computeroutput"><span class="identifier">value_type</span></code> for
+ the <code class="computeroutput"><span class="identifier">any_range</span></code>.
+ If this is set to boost::use_default, <code class="computeroutput"><span class="identifier">Value</span></code>
+ will be calculated from the range type when the adaptor is applied.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Traversal</span></code> is
+ the tag used to identify the traversal of the resultant range.
+ Frequently it is desireable to set a traversal category lower
+ than the source container or range to maximize the number of
+ ranges that can convert to the <code class="computeroutput"><span class="identifier">any_range</span></code>.
+ If this is left as boost::use_default then <code class="computeroutput"><span class="identifier">Traversal</span></code>
+ will be <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">Rng</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Reference</span></code> is
+ the <code class="computeroutput"><span class="identifier">reference</span></code>
+ for the <code class="computeroutput"><span class="identifier">any_range</span></code>.
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span></code> will equate to
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">range_reference</span><span class="special">&lt;</span><span class="identifier">Rng</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Difference</span></code> is
+ the <code class="computeroutput"><span class="identifier">difference_type</span></code>
+ for the any_range. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span></code>
+ will equate to <code class="computeroutput"><span class="keyword">typename</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_difference</span><span class="special">&lt;</span><span class="identifier">Rng</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Buffer</span></code> is the
+ storage used to allocate the underlying iterator wrappers. This
+ can typically be ignored, but is available as a template parameter
+ for customization. Buffer must be a model of the <code class="computeroutput"><span class="identifier">AnyIteratorBufferConcept</span></code>.
+ </li>
+</ul></div>
+</li>
+<li class="listitem">
+ <span class="bold"><strong>Precondition:</strong></span> <code class="computeroutput"><span class="identifier">Traversal</span></code>
+ is one of <code class="computeroutput"><span class="special">{</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">single_pass_traversal_tag</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bidirectional_traversal_tag</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">random_access_traversal_tag</span>
+ <span class="special">}</span></code>
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Returns:</strong></span> The returned value is the
+ same as <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">any_range_type_generator</span><span class="special">&lt;</span> <span class="identifier">Rng</span><span class="special">,</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Traversal</span><span class="special">,</span> <span class="identifier">Reference</span><span class="special">,</span> <span class="identifier">Difference</span><span class="special">,</span> <span class="identifier">Buffer</span>
+ <span class="special">&gt;</span></code> that represents <code class="computeroutput"><span class="identifier">rng</span></code> in a type-erased manner.
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Range Category:</strong></span> <a class="link" href="../../../concepts/single_pass_range.html" title="Single Pass Range">Single
+ Pass Range</a>
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Returned Range Category:</strong></span> if <code class="computeroutput"><span class="identifier">Traversal</span></code> was specified as <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span></code> then <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">Rng</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">type</span></code>,
+ otherwise <code class="computeroutput"><span class="identifier">Traversal</span></code>.
+ </li>
+</ul></div>
+<a name="range.reference.adaptors.reference.type_erased.anyiteratorbufferconcept"></a><h6>
+<a name="id677095"></a>
+ <a class="link" href="type_erased.html#range.reference.adaptors.reference.type_erased.anyiteratorbufferconcept">AnyIteratorBufferConcept</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">AnyIteratorBufferConcept</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">AnyIteratorBufferConcept</span><span class="special">();</span>
+ <span class="special">~</span><span class="identifier">AnyIteratorBufferConcept</span><span class="special">();</span>
+
+ <span class="comment">// bytes is the requested size to allocate. This function
+</span> <span class="comment">// must return a pointer to an adequate area of memory.
+</span> <span class="comment">// throws: bad_alloc
+</span> <span class="comment">//
+</span> <span class="comment">// The buffer will only ever have zero or one
+</span> <span class="comment">// outstanding memory allocations.
+</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">bytes</span><span class="special">);</span>
+
+ <span class="comment">// deallocate this buffer
+</span> <span class="keyword">void</span> <span class="identifier">deallocate</span><span class="special">();</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="range.reference.adaptors.reference.type_erased.type_erased_example"></a><a class="link" href="type_erased.html#range.reference.adaptors.reference.type_erased.type_erased_example" title="type-erased example">type-erased
+ example</a>
+</h6></div></div></div>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">adaptor</span><span class="special">/</span><span class="identifier">type_erased</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">copy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">list</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="comment">// The client interface from an OO perspective merely requires a sequence
+</span><span class="comment">// of integers that can be forward traversed
+</span><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">any_range</span><span class="special">&lt;</span>
+ <span class="keyword">int</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">,</span> <span class="keyword">int</span>
+ <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
+<span class="special">&gt;</span> <span class="identifier">integer_range</span><span class="special">;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">server</span>
+<span class="special">{</span>
+ <span class="keyword">void</span> <span class="identifier">display_integers</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">integer_range</span><span class="special">&amp;</span> <span class="identifier">rng</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">","</span><span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">client</span>
+<span class="special">{</span>
+ <span class="keyword">void</span> <span class="identifier">run</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">assign</span><span class="special">;</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">;</span>
+
+ <span class="comment">// Under most conditions one would simply use an appropriate
+</span> <span class="comment">// any_range as a function parameter. The type_erased adaptor
+</span> <span class="comment">// is often superfluous. However because the type_erased
+</span> <span class="comment">// adaptor is applied to a range, we can use default template
+</span> <span class="comment">// arguments that are generated in conjunction with the
+</span> <span class="comment">// range type to which we are applying the adaptor.
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">input</span><span class="special">;</span>
+ <span class="identifier">input</span> <span class="special">+=</span> <span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">4</span><span class="special">,</span><span class="number">5</span><span class="special">;</span>
+
+ <span class="comment">// Note that this call is to a non-template function
+</span> <span class="identifier">server</span><span class="special">::</span><span class="identifier">display_integers</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">input2</span><span class="special">;</span>
+ <span class="identifier">input2</span> <span class="special">+=</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">;</span>
+
+ <span class="comment">// Note that this call is to the same non-tempate function
+</span> <span class="identifier">server</span><span class="special">::</span><span class="identifier">display_integers</span><span class="special">(</span><span class="identifier">input2</span><span class="special">);</span>
+
+ <span class="identifier">input2</span><span class="special">.</span><span class="identifier">clear</span><span class="special">();</span>
+ <span class="identifier">input2</span> <span class="special">+=</span> <span class="number">11</span><span class="special">,</span><span class="number">12</span><span class="special">,</span><span class="number">13</span><span class="special">,</span><span class="number">14</span><span class="special">,</span><span class="number">15</span><span class="special">;</span>
+
+ <span class="comment">// Calling using the adaptor looks like this:
+</span> <span class="comment">// Notice that here I have a type_erased that would be a
+</span> <span class="comment">// bidirectional_traversal_tag, but this is convertible
+</span> <span class="comment">// to the forward_traversal_tag equivalent hence this
+</span> <span class="comment">// works.
+</span> <span class="identifier">server</span><span class="special">::</span><span class="identifier">display_integers</span><span class="special">(</span><span class="identifier">input2</span> <span class="special">|</span> <span class="identifier">type_erased</span><span class="special">&lt;&gt;());</span>
+
+ <span class="comment">// However we may simply wish to define an adaptor that
+</span> <span class="comment">// takes a range and makes it into an appropriate
+</span> <span class="comment">// forward_traversal any_range...
+</span> <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">type_erased</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">&gt;</span> <span class="identifier">type_erased_forward</span><span class="special">;</span>
+
+ <span class="comment">// This adaptor can turn other containers with different
+</span> <span class="comment">// value_types and reference_types into the appropriate
+</span> <span class="comment">// any_range.
+</span>
+ <span class="identifier">server</span><span class="special">::</span><span class="identifier">display_integers</span><span class="special">(</span><span class="identifier">input2</span> <span class="special">|</span> <span class="identifier">type_erased_forward</span><span class="special">());</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+ <span class="identifier">client</span><span class="special">::</span><span class="identifier">run</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+</div>
+<p>
+ This would produce the output:
+</p>
+<pre class="programlisting"><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">4</span><span class="special">,</span><span class="number">5</span>
+<span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span>
+<span class="number">11</span><span class="special">,</span><span class="number">12</span><span class="special">,</span><span class="number">13</span><span class="special">,</span><span class="number">14</span><span class="special">,</span><span class="number">15</span>
+<span class="number">11</span><span class="special">,</span><span class="number">12</span><span class="special">,</span><span class="number">13</span><span class="special">,</span><span class="number">14</span><span class="special">,</span><span class="number">15</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2003 -2010 Thorsten Ottosen, Neil Groves<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strided.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tokenized.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/heap/make_heap.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/heap/make_heap.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/heap/make_heap.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.heap.make_heap"></a><a class="link" href="make_heap.html" title="make_heap">make_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap.make_heap.prototype"></a><h6>
-<a name="id761889"></a>
+<a name="id741272"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap.make_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap.make_heap.description"></a><h6>
-<a name="id762263"></a>
+<a name="id741648"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap.make_heap.description">Description</a>
           </h6>
 <p>
@@ -60,14 +60,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap.make_heap.definition"></a><h6>
-<a name="id762338"></a>
+<a name="id741722"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap.make_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap.make_heap.requirements"></a><h6>
-<a name="id762407"></a>
+<a name="id741791"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap.make_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -118,7 +118,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.heap.make_heap.complexity"></a><h6>
-<a name="id762655"></a>
+<a name="id742039"></a>
             <a class="link" href="make_heap.html#range.reference.algorithms.heap.make_heap.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/heap/pop_heap.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/heap/pop_heap.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/heap/pop_heap.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.heap.pop_heap"></a><a class="link" href="pop_heap.html" title="pop_heap">pop_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap.pop_heap.prototype"></a><h6>
-<a name="id760883"></a>
+<a name="id740266"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap.pop_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap.pop_heap.description"></a><h6>
-<a name="id761259"></a>
+<a name="id740642"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap.pop_heap.description">Description</a>
           </h6>
 <p>
@@ -62,14 +62,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap.pop_heap.definition"></a><h6>
-<a name="id761413"></a>
+<a name="id740796"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap.pop_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap.pop_heap.requirements"></a><h6>
-<a name="id761483"></a>
+<a name="id740866"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap.pop_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -120,7 +120,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.heap.pop_heap.precondition_"></a><h6>
-<a name="id761730"></a>
+<a name="id741114"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap.pop_heap.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -132,7 +132,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.heap.pop_heap.complexity"></a><h6>
-<a name="id761805"></a>
+<a name="id741189"></a>
             <a class="link" href="pop_heap.html#range.reference.algorithms.heap.pop_heap.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/heap/push_heap.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/heap/push_heap.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/heap/push_heap.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.heap.push_heap"></a><a class="link" href="push_heap.html" title="push_heap">push_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap.push_heap.prototype"></a><h6>
-<a name="id759838"></a>
+<a name="id739222"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap.push_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap.push_heap.description"></a><h6>
-<a name="id760214"></a>
+<a name="id739596"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap.push_heap.description">Description</a>
           </h6>
 <p>
@@ -62,14 +62,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap.push_heap.definition"></a><h6>
-<a name="id760372"></a>
+<a name="id739755"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap.push_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap.push_heap.requirements"></a><h6>
-<a name="id760442"></a>
+<a name="id739825"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap.push_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -120,7 +120,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.heap.push_heap.precondition_"></a><h6>
-<a name="id760690"></a>
+<a name="id740073"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap.push_heap.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -132,7 +132,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.heap.push_heap.complexity"></a><h6>
-<a name="id760810"></a>
+<a name="id740193"></a>
             <a class="link" href="push_heap.html#range.reference.algorithms.heap.push_heap.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/heap/sort_heap.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/heap/sort_heap.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/heap/sort_heap.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.heap.sort_heap"></a><a class="link" href="sort_heap.html" title="sort_heap">sort_heap</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.heap.sort_heap.prototype"></a><h6>
-<a name="id762731"></a>
+<a name="id742115"></a>
             <a class="link" href="sort_heap.html#range.reference.algorithms.heap.sort_heap.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.heap.sort_heap.description"></a><h6>
-<a name="id763106"></a>
+<a name="id742491"></a>
             <a class="link" href="sort_heap.html#range.reference.algorithms.heap.sort_heap.description">Description</a>
           </h6>
 <p>
@@ -61,14 +61,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.heap.sort_heap.definition"></a><h6>
-<a name="id763171"></a>
+<a name="id742555"></a>
             <a class="link" href="sort_heap.html#range.reference.algorithms.heap.sort_heap.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">heap_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.heap.sort_heap.requirements"></a><h6>
-<a name="id763242"></a>
+<a name="id742626"></a>
             <a class="link" href="sort_heap.html#range.reference.algorithms.heap.sort_heap.requirements">Requirements</a>
           </h6>
 <p>
@@ -119,14 +119,14 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.heap.sort_heap.precondition_"></a><h6>
-<a name="id763489"></a>
+<a name="id742873"></a>
             <a class="link" href="sort_heap.html#range.reference.algorithms.heap.sort_heap.precondition_">Precondition:</a>
           </h6>
 <p>
             <code class="computeroutput"><span class="identifier">rng</span></code> is a heap.
           </p>
 <a name="range.reference.algorithms.heap.sort_heap.complexity"></a><h6>
-<a name="id763522"></a>
+<a name="id742906"></a>
             <a class="link" href="sort_heap.html#range.reference.algorithms.heap.sort_heap.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.copy"></a><a class="link" href="copy.html" title="copy">copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.copy.prototype"></a><h6>
-<a name="id704821"></a>
+<a name="id684203"></a>
             <a class="link" href="copy.html#range.reference.algorithms.mutating.copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.copy.description"></a><h6>
-<a name="id704949"></a>
+<a name="id684330"></a>
             <a class="link" href="copy.html#range.reference.algorithms.mutating.copy.description">Description</a>
           </h6>
 <p>
@@ -50,14 +50,14 @@
             <span class="identifier">distance</span><span class="special">(</span><span class="identifier">source_rng</span><span class="special">)</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.copy.definition"></a><h6>
-<a name="id705077"></a>
+<a name="id684459"></a>
             <a class="link" href="copy.html#range.reference.algorithms.mutating.copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.copy.requirements"></a><h6>
-<a name="id705146"></a>
+<a name="id684528"></a>
             <a class="link" href="copy.html#range.reference.algorithms.mutating.copy.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -78,7 +78,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.copy.precondition_"></a><h6>
-<a name="id705256"></a>
+<a name="id684638"></a>
             <a class="link" href="copy.html#range.reference.algorithms.mutating.copy.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -92,7 +92,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.copy.complexity"></a><h6>
-<a name="id705363"></a>
+<a name="id684744"></a>
             <a class="link" href="copy.html#range.reference.algorithms.mutating.copy.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy_backward.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy_backward.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/copy_backward.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.copy_backward"></a><a class="link" href="copy_backward.html" title="copy_backward">copy_backward</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.copy_backward.prototype"></a><h6>
-<a name="id705426"></a>
+<a name="id684808"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.mutating.copy_backward.prototype">Prototype</a>
           </h6>
 <p>
@@ -41,7 +41,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.copy_backward.description"></a><h6>
-<a name="id705554"></a>
+<a name="id684936"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.mutating.copy_backward.description">Description</a>
           </h6>
 <p>
@@ -59,14 +59,14 @@
             denotes the <span class="bold"><strong>end</strong></span> of the output sequence.
           </p>
 <a name="range.reference.algorithms.mutating.copy_backward.definition"></a><h6>
-<a name="id705709"></a>
+<a name="id685090"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.mutating.copy_backward.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">copy_backward</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.copy_backward.requirements"></a><h6>
-<a name="id705779"></a>
+<a name="id685160"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.mutating.copy_backward.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -87,7 +87,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.copy_backward.precondition_"></a><h6>
-<a name="id705889"></a>
+<a name="id685270"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.mutating.copy_backward.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -101,7 +101,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.copy_backward.complexity"></a><h6>
-<a name="id705996"></a>
+<a name="id685378"></a>
             <a class="link" href="copy_backward.html#range.reference.algorithms.mutating.copy_backward.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.fill"></a><a class="link" href="fill.html" title="fill">fill</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.fill.prototype"></a><h6>
-<a name="id706061"></a>
+<a name="id685443"></a>
             <a class="link" href="fill.html#range.reference.algorithms.mutating.fill.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.fill.description"></a><h6>
-<a name="id706199"></a>
+<a name="id685579"></a>
             <a class="link" href="fill.html#range.reference.algorithms.mutating.fill.description">Description</a>
           </h6>
 <p>
@@ -48,14 +48,14 @@
             in the range <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.fill.definition"></a><h6>
-<a name="id706253"></a>
+<a name="id685634"></a>
             <a class="link" href="fill.html#range.reference.algorithms.mutating.fill.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">fill</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.fill.requirements"></a><h6>
-<a name="id706322"></a>
+<a name="id685703"></a>
             <a class="link" href="fill.html#range.reference.algorithms.mutating.fill.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -78,7 +78,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.fill.complexity"></a><h6>
-<a name="id706442"></a>
+<a name="id685823"></a>
             <a class="link" href="fill.html#range.reference.algorithms.mutating.fill.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill_n.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill_n.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/fill_n.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.fill_n"></a><a class="link" href="fill_n.html" title="fill_n">fill_n</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.fill_n.prototype"></a><h6>
-<a name="id706506"></a>
+<a name="id685887"></a>
             <a class="link" href="fill_n.html#range.reference.algorithms.mutating.fill_n.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.fill_n.description"></a><h6>
-<a name="id706675"></a>
+<a name="id686056"></a>
             <a class="link" href="fill_n.html#range.reference.algorithms.mutating.fill_n.description">Description</a>
           </h6>
 <p>
@@ -47,14 +47,14 @@
             <code class="computeroutput"><span class="identifier">val</span></code> to <code class="computeroutput"><span class="identifier">n</span></code> elements in the range <code class="computeroutput"><span class="identifier">rng</span></code> begining with <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">)</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.fill_n.definition"></a><h6>
-<a name="id706770"></a>
+<a name="id686152"></a>
             <a class="link" href="fill_n.html#range.reference.algorithms.mutating.fill_n.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">fill_n</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.fill_n.requirements"></a><h6>
-<a name="id706840"></a>
+<a name="id686222"></a>
             <a class="link" href="fill_n.html#range.reference.algorithms.mutating.fill_n.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -77,7 +77,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.fill_n.complexity"></a><h6>
-<a name="id706960"></a>
+<a name="id686341"></a>
             <a class="link" href="fill_n.html#range.reference.algorithms.mutating.fill_n.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/generate.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/generate.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/generate.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.generate"></a><a class="link" href="generate.html" title="generate">generate</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.generate.prototype"></a><h6>
-<a name="id707009"></a>
+<a name="id686391"></a>
             <a class="link" href="generate.html#range.reference.algorithms.mutating.generate.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.generate.description"></a><h6>
-<a name="id707248"></a>
+<a name="id686629"></a>
             <a class="link" href="generate.html#range.reference.algorithms.mutating.generate.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             Returns the resultant range.
           </p>
 <a name="range.reference.algorithms.mutating.generate.definition"></a><h6>
-<a name="id707308"></a>
+<a name="id686689"></a>
             <a class="link" href="generate.html#range.reference.algorithms.mutating.generate.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">generate</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.generate.requirements"></a><h6>
-<a name="id707376"></a>
+<a name="id686758"></a>
             <a class="link" href="generate.html#range.reference.algorithms.mutating.generate.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -83,7 +83,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.generate.precondition_"></a><h6>
-<a name="id707508"></a>
+<a name="id686889"></a>
             <a class="link" href="generate.html#range.reference.algorithms.mutating.generate.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -97,7 +97,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.generate.complexity"></a><h6>
-<a name="id707614"></a>
+<a name="id686995"></a>
             <a class="link" href="generate.html#range.reference.algorithms.mutating.generate.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/inplace_merge.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/inplace_merge.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/inplace_merge.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.inplace_merge"></a><a class="link" href="inplace_merge.html" title="inplace_merge">inplace_merge</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.inplace_merge.prototype"></a><h6>
-<a name="id707676"></a>
+<a name="id687058"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.prototype">Prototype</a>
           </h6>
 <p>
@@ -58,7 +58,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.inplace_merge.description"></a><h6>
-<a name="id708233"></a>
+<a name="id687615"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.description">Description</a>
           </h6>
 <p>
@@ -71,14 +71,14 @@
             input range is preserved.
           </p>
 <a name="range.reference.algorithms.mutating.inplace_merge.definition"></a><h6>
-<a name="id708451"></a>
+<a name="id687833"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">inplace_merge</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.inplace_merge.requirements"></a><h6>
-<a name="id708521"></a>
+<a name="id687903"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.requirements">Requirements</a>
           </h6>
 <p>
@@ -115,11 +115,11 @@
             argument types.
           </p>
 <a name="range.reference.algorithms.mutating.inplace_merge.precondition_"></a><h6>
-<a name="id708776"></a>
+<a name="id688158"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.precondition_">Precondition:</a>
           </h6>
 <a name="range.reference.algorithms.mutating.inplace_merge.for_the_non_predicate_version_"></a><h6>
-<a name="id708796"></a>
+<a name="id688178"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.for_the_non_predicate_version_">For
             the non-predicate version:</a>
           </h6>
@@ -142,7 +142,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.inplace_merge.for_the_predicate_version_"></a><h6>
-<a name="id709058"></a>
+<a name="id688439"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.for_the_predicate_version_">For
             the predicate version:</a>
           </h6>
@@ -163,7 +163,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.inplace_merge.complexity"></a><h6>
-<a name="id709343"></a>
+<a name="id688724"></a>
             <a class="link" href="inplace_merge.html#range.reference.algorithms.mutating.inplace_merge.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/merge.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/merge.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/merge.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.merge"></a><a class="link" href="merge.html" title="merge">merge</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.merge.prototype"></a><h6>
-<a name="id709422"></a>
+<a name="id688803"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.prototype">Prototype</a>
           </h6>
 <p>
@@ -56,7 +56,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.merge.description"></a><h6>
-<a name="id709769"></a>
+<a name="id689149"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.description">Description</a>
           </h6>
 <p>
@@ -75,14 +75,14 @@
             version uses the predicate instead of <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;()</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.merge.definition"></a><h6>
-<a name="id709943"></a>
+<a name="id689324"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">merge</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.merge.requirements"></a><h6>
-<a name="id710012"></a>
+<a name="id689393"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.requirements">Requirements</a>
           </h6>
 <p>
@@ -150,11 +150,11 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.merge.precondition_"></a><h6>
-<a name="id710533"></a>
+<a name="id689915"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.precondition_">Precondition:</a>
           </h6>
 <a name="range.reference.algorithms.mutating.merge.for_the_non_predicate_version_"></a><h6>
-<a name="id710553"></a>
+<a name="id689935"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.for_the_non_predicate_version_">For
             the non-predicate version:</a>
           </h6>
@@ -194,7 +194,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.merge.for_the_predicate_version_"></a><h6>
-<a name="id711019"></a>
+<a name="id690400"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.for_the_predicate_version_">For
             the predicate version:</a>
           </h6>
@@ -230,7 +230,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.merge.complexity"></a><h6>
-<a name="id711508"></a>
+<a name="id690889"></a>
             <a class="link" href="merge.html#range.reference.algorithms.mutating.merge.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/nth_element.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/nth_element.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/nth_element.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.nth_element"></a><a class="link" href="nth_element.html" title="nth_element">nth_element</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.nth_element.prototype"></a><h6>
-<a name="id711629"></a>
+<a name="id691010"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.mutating.nth_element.prototype">Prototype</a>
           </h6>
 <p>
@@ -58,7 +58,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.nth_element.description"></a><h6>
-<a name="id712149"></a>
+<a name="id691529"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.mutating.nth_element.description">Description</a>
           </h6>
 <p>
@@ -69,14 +69,14 @@
             is the same as the element that would be in that position if <code class="computeroutput"><span class="identifier">rng</span></code> has been sorted.
           </p>
 <a name="range.reference.algorithms.mutating.nth_element.definition"></a><h6>
-<a name="id712225"></a>
+<a name="id691606"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.mutating.nth_element.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">nth_element</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.nth_element.requirements"></a><h6>
-<a name="id712294"></a>
+<a name="id691676"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.mutating.nth_element.requirements">Requirements</a>
           </h6>
 <p>
@@ -127,7 +127,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.nth_element.complexity"></a><h6>
-<a name="id712542"></a>
+<a name="id691923"></a>
             <a class="link" href="nth_element.html#range.reference.algorithms.mutating.nth_element.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/partial_sort.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/partial_sort.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/partial_sort.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.partial_sort"></a><a class="link" href="partial_sort.html" title="partial_sort">partial_sort</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.partial_sort.prototype"></a><h6>
-<a name="id712607"></a>
+<a name="id691988"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.mutating.partial_sort.prototype">Prototype</a>
           </h6>
 <p>
@@ -58,7 +58,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.partial_sort.description"></a><h6>
-<a name="id713128"></a>
+<a name="id692508"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.mutating.partial_sort.description">Description</a>
           </h6>
 <p>
@@ -74,14 +74,14 @@
             predicate instead.
           </p>
 <a name="range.reference.algorithms.mutating.partial_sort.definition"></a><h6>
-<a name="id713304"></a>
+<a name="id692685"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.mutating.partial_sort.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">partial_sort</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.partial_sort.requirements"></a><h6>
-<a name="id713375"></a>
+<a name="id692756"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.mutating.partial_sort.requirements">Requirements</a>
           </h6>
 <p>
@@ -132,7 +132,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.partial_sort.complexity"></a><h6>
-<a name="id713622"></a>
+<a name="id693003"></a>
             <a class="link" href="partial_sort.html#range.reference.algorithms.mutating.partial_sort.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/partition.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/partition.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/partition.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.partition"></a><a class="link" href="partition.html" title="partition">partition</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.partition.prototype"></a><h6>
-<a name="id713738"></a>
+<a name="id693119"></a>
             <a class="link" href="partition.html#range.reference.algorithms.mutating.partition.prototype">Prototype</a>
           </h6>
 <p>
@@ -66,7 +66,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.partition.description"></a><h6>
-<a name="id714315"></a>
+<a name="id693695"></a>
             <a class="link" href="partition.html#range.reference.algorithms.mutating.partition.description">Description</a>
           </h6>
 <p>
@@ -80,14 +80,14 @@
             corresponds to the middle iterator.
           </p>
 <a name="range.reference.algorithms.mutating.partition.definition"></a><h6>
-<a name="id714393"></a>
+<a name="id693774"></a>
             <a class="link" href="partition.html#range.reference.algorithms.mutating.partition.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">partition</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.partition.requirements"></a><h6>
-<a name="id714464"></a>
+<a name="id693845"></a>
             <a class="link" href="partition.html#range.reference.algorithms.mutating.partition.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -107,7 +107,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.partition.complexity"></a><h6>
-<a name="id714566"></a>
+<a name="id693947"></a>
             <a class="link" href="partition.html#range.reference.algorithms.mutating.partition.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/random_shuffle.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/random_shuffle.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/random_shuffle.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.random_shuffle"></a><a class="link" href="random_shuffle.html" title="random_shuffle">random_shuffle</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.random_shuffle.prototype"></a><h6>
-<a name="id714676"></a>
+<a name="id694058"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.mutating.random_shuffle.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.random_shuffle.description"></a><h6>
-<a name="id715061"></a>
+<a name="id694442"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.mutating.random_shuffle.description">Description</a>
           </h6>
 <p>
@@ -60,14 +60,14 @@
             the shuffles range.
           </p>
 <a name="range.reference.algorithms.mutating.random_shuffle.definition"></a><h6>
-<a name="id715149"></a>
+<a name="id694530"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.mutating.random_shuffle.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">random_shuffle</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.random_shuffle.requirements"></a><h6>
-<a name="id715220"></a>
+<a name="id694601"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.mutating.random_shuffle.requirements">Requirements</a>
           </h6>
 <p>
@@ -98,7 +98,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.random_shuffle.precondition_"></a><h6>
-<a name="id715370"></a>
+<a name="id694751"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.mutating.random_shuffle.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
@@ -107,7 +107,7 @@
                 maximum value.
               </li></ul></div>
 <a name="range.reference.algorithms.mutating.random_shuffle.complexity"></a><h6>
-<a name="id715434"></a>
+<a name="id694815"></a>
             <a class="link" href="random_shuffle.html#range.reference.algorithms.mutating.random_shuffle.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.remove"></a><a class="link" href="remove.html" title="remove">remove</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.remove.prototype"></a><h6>
-<a name="id715538"></a>
+<a name="id694919"></a>
             <a class="link" href="remove.html#range.reference.algorithms.mutating.remove.prototype">Prototype</a>
           </h6>
 <p>
@@ -66,7 +66,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.remove.description"></a><h6>
-<a name="id716153"></a>
+<a name="id695536"></a>
             <a class="link" href="remove.html#range.reference.algorithms.mutating.remove.description">Description</a>
           </h6>
 <p>
@@ -83,14 +83,14 @@
             are dereferenceable, but the elements are unspecified.
           </p>
 <a name="range.reference.algorithms.mutating.remove.definition"></a><h6>
-<a name="id716381"></a>
+<a name="id695762"></a>
             <a class="link" href="remove.html#range.reference.algorithms.mutating.remove.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">remove</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.remove.requirements"></a><h6>
-<a name="id716452"></a>
+<a name="id695833"></a>
             <a class="link" href="remove.html#range.reference.algorithms.mutating.remove.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -113,7 +113,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.remove.complexity"></a><h6>
-<a name="id716574"></a>
+<a name="id695954"></a>
             <a class="link" href="remove.html#range.reference.algorithms.mutating.remove.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.remove_copy"></a><a class="link" href="remove_copy.html" title="remove_copy">remove_copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.remove_copy.prototype"></a><h6>
-<a name="id716648"></a>
+<a name="id696029"></a>
             <a class="link" href="remove_copy.html#range.reference.algorithms.mutating.remove_copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.remove_copy.description"></a><h6>
-<a name="id716950"></a>
+<a name="id696332"></a>
             <a class="link" href="remove_copy.html#range.reference.algorithms.mutating.remove_copy.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             <code class="computeroutput"><span class="identifier">rng</span></code> for which <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span> <span class="identifier">val</span></code> is <code class="computeroutput"><span class="keyword">false</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.remove_copy.definition"></a><h6>
-<a name="id717037"></a>
+<a name="id696418"></a>
             <a class="link" href="remove_copy.html#range.reference.algorithms.mutating.remove_copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">remove_copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.remove_copy.requirements"></a><h6>
-<a name="id717107"></a>
+<a name="id696488"></a>
             <a class="link" href="remove_copy.html#range.reference.algorithms.mutating.remove_copy.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -83,7 +83,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.remove_copy.complexity"></a><h6>
-<a name="id717228"></a>
+<a name="id696609"></a>
             <a class="link" href="remove_copy.html#range.reference.algorithms.mutating.remove_copy.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_copy_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.remove_copy_if"></a><a class="link" href="remove_copy_if.html" title="remove_copy_if">remove_copy_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.remove_copy_if.prototype"></a><h6>
-<a name="id717302"></a>
+<a name="id696683"></a>
             <a class="link" href="remove_copy_if.html#range.reference.algorithms.mutating.remove_copy_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.remove_copy_if.description"></a><h6>
-<a name="id717584"></a>
+<a name="id696964"></a>
             <a class="link" href="remove_copy_if.html#range.reference.algorithms.mutating.remove_copy_if.description">Description</a>
           </h6>
 <p>
@@ -54,14 +54,14 @@
             is <code class="computeroutput"><span class="keyword">false</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.remove_copy_if.definition"></a><h6>
-<a name="id717673"></a>
+<a name="id697054"></a>
             <a class="link" href="remove_copy_if.html#range.reference.algorithms.mutating.remove_copy_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">remove_copy_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.remove_copy_if.requirements"></a><h6>
-<a name="id717744"></a>
+<a name="id697124"></a>
             <a class="link" href="remove_copy_if.html#range.reference.algorithms.mutating.remove_copy_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -79,7 +79,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.remove_copy_if.complexity"></a><h6>
-<a name="id717836"></a>
+<a name="id697217"></a>
             <a class="link" href="remove_copy_if.html#range.reference.algorithms.mutating.remove_copy_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/remove_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.remove_if"></a><a class="link" href="remove_if.html" title="remove_if">remove_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.remove_if.prototype"></a><h6>
-<a name="id717910"></a>
+<a name="id697291"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.mutating.remove_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -66,7 +66,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.remove_if.description"></a><h6>
-<a name="id718485"></a>
+<a name="id697867"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.mutating.remove_if.description">Description</a>
           </h6>
 <p>
@@ -82,14 +82,14 @@
             are unspecified.
           </p>
 <a name="range.reference.algorithms.mutating.remove_if.definition"></a><h6>
-<a name="id718708"></a>
+<a name="id698089"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.mutating.remove_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">remove_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.remove_if.requirements"></a><h6>
-<a name="id718780"></a>
+<a name="id698160"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.mutating.remove_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -112,7 +112,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.remove_if.complexity"></a><h6>
-<a name="id718901"></a>
+<a name="id698282"></a>
             <a class="link" href="remove_if.html#range.reference.algorithms.mutating.remove_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.replace"></a><a class="link" href="replace.html" title="replace">replace</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.replace.prototype"></a><h6>
-<a name="id718987"></a>
+<a name="id698368"></a>
             <a class="link" href="replace.html#range.reference.algorithms.mutating.replace.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.replace.description"></a><h6>
-<a name="id719298"></a>
+<a name="id698680"></a>
             <a class="link" href="replace.html#range.reference.algorithms.mutating.replace.description">Description</a>
           </h6>
 <p>
@@ -57,14 +57,14 @@
             Return a reference to <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.replace.definition"></a><h6>
-<a name="id719374"></a>
+<a name="id698755"></a>
             <a class="link" href="replace.html#range.reference.algorithms.mutating.replace.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">replace</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.replace.requirements"></a><h6>
-<a name="id719445"></a>
+<a name="id698825"></a>
             <a class="link" href="replace.html#range.reference.algorithms.mutating.replace.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -93,7 +93,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.replace.complexity"></a><h6>
-<a name="id719604"></a>
+<a name="id698985"></a>
             <a class="link" href="replace.html#range.reference.algorithms.mutating.replace.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.replace_copy"></a><a class="link" href="replace_copy.html" title="replace_copy">replace_copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.replace_copy.prototype"></a><h6>
-<a name="id719703"></a>
+<a name="id699084"></a>
             <a class="link" href="replace_copy.html#range.reference.algorithms.mutating.replace_copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.replace_copy.description"></a><h6>
-<a name="id719899"></a>
+<a name="id699279"></a>
             <a class="link" href="replace_copy.html#range.reference.algorithms.mutating.replace_copy.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             <span class="identifier">x</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.replace_copy.definition"></a><h6>
-<a name="id720008"></a>
+<a name="id699388"></a>
             <a class="link" href="replace_copy.html#range.reference.algorithms.mutating.replace_copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">replace_copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.replace_copy.requirements"></a><h6>
-<a name="id720077"></a>
+<a name="id699458"></a>
             <a class="link" href="replace_copy.html#range.reference.algorithms.mutating.replace_copy.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -87,7 +87,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.replace_copy.complexity"></a><h6>
-<a name="id720225"></a>
+<a name="id699606"></a>
             <a class="link" href="replace_copy.html#range.reference.algorithms.mutating.replace_copy.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_copy_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.replace_copy_if"></a><a class="link" href="replace_copy_if.html" title="replace_copy_if">replace_copy_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.replace_copy_if.prototype"></a><h6>
-<a name="id720299"></a>
+<a name="id699680"></a>
             <a class="link" href="replace_copy_if.html#range.reference.algorithms.mutating.replace_copy_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.replace_copy_if.description"></a><h6>
-<a name="id720501"></a>
+<a name="id699881"></a>
             <a class="link" href="replace_copy_if.html#range.reference.algorithms.mutating.replace_copy_if.description">Description</a>
           </h6>
 <p>
@@ -51,14 +51,14 @@
             <span class="special">:</span> <span class="identifier">x</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.replace_copy_if.definition"></a><h6>
-<a name="id720612"></a>
+<a name="id699992"></a>
             <a class="link" href="replace_copy_if.html#range.reference.algorithms.mutating.replace_copy_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">replace_copy_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.replace_copy_if.requirements"></a><h6>
-<a name="id720682"></a>
+<a name="id700063"></a>
             <a class="link" href="replace_copy_if.html#range.reference.algorithms.mutating.replace_copy_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -89,7 +89,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.replace_copy_if.complexity"></a><h6>
-<a name="id720858"></a>
+<a name="id700239"></a>
             <a class="link" href="replace_copy_if.html#range.reference.algorithms.mutating.replace_copy_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/replace_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.replace_if"></a><a class="link" href="replace_if.html" title="replace_if">replace_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.replace_if.prototype"></a><h6>
-<a name="id720943"></a>
+<a name="id700324"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.mutating.replace_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.replace_if.description"></a><h6>
-<a name="id721263"></a>
+<a name="id700643"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.mutating.replace_if.description">Description</a>
           </h6>
 <p>
@@ -51,14 +51,14 @@
             Returns a reference to <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.replace_if.definition"></a><h6>
-<a name="id721373"></a>
+<a name="id700754"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.mutating.replace_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">replace_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.replace_if.requirements"></a><h6>
-<a name="id721443"></a>
+<a name="id700825"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.mutating.replace_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -90,7 +90,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.replace_if.complexity"></a><h6>
-<a name="id721620"></a>
+<a name="id701001"></a>
             <a class="link" href="replace_if.html#range.reference.algorithms.mutating.replace_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.reverse"></a><a class="link" href="reverse.html" title="reverse">reverse</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.reverse.prototype"></a><h6>
-<a name="id721730"></a>
+<a name="id701111"></a>
             <a class="link" href="reverse.html#range.reference.algorithms.mutating.reverse.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.reverse.description"></a><h6>
-<a name="id721900"></a>
+<a name="id701281"></a>
             <a class="link" href="reverse.html#range.reference.algorithms.mutating.reverse.description">Description</a>
           </h6>
 <p>
@@ -50,14 +50,14 @@
             Returns a reference to the reversed range.
           </p>
 <a name="range.reference.algorithms.mutating.reverse.definition"></a><h6>
-<a name="id721933"></a>
+<a name="id701314"></a>
             <a class="link" href="reverse.html#range.reference.algorithms.mutating.reverse.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">reverse</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.reverse.requirements"></a><h6>
-<a name="id722003"></a>
+<a name="id701385"></a>
             <a class="link" href="reverse.html#range.reference.algorithms.mutating.reverse.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -72,7 +72,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.reverse.complexity"></a><h6>
-<a name="id722070"></a>
+<a name="id701451"></a>
             <a class="link" href="reverse.html#range.reference.algorithms.mutating.reverse.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse_copy.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse_copy.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/reverse_copy.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.reverse_copy"></a><a class="link" href="reverse_copy.html" title="reverse_copy">reverse_copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.reverse_copy.prototype"></a><h6>
-<a name="id722158"></a>
+<a name="id701540"></a>
             <a class="link" href="reverse_copy.html#range.reference.algorithms.mutating.reverse_copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.reverse_copy.description"></a><h6>
-<a name="id722286"></a>
+<a name="id701667"></a>
             <a class="link" href="reverse_copy.html#range.reference.algorithms.mutating.reverse_copy.description">Description</a>
           </h6>
 <p>
@@ -49,14 +49,14 @@
             Returns the output iterator one passed the last copied element.
           </p>
 <a name="range.reference.algorithms.mutating.reverse_copy.definition"></a><h6>
-<a name="id722341"></a>
+<a name="id701723"></a>
             <a class="link" href="reverse_copy.html#range.reference.algorithms.mutating.reverse_copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">reverse_copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.reverse_copy.requirements"></a><h6>
-<a name="id722411"></a>
+<a name="id701792"></a>
             <a class="link" href="reverse_copy.html#range.reference.algorithms.mutating.reverse_copy.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -75,7 +75,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.reverse_copy.complexity"></a><h6>
-<a name="id722503"></a>
+<a name="id701885"></a>
             <a class="link" href="reverse_copy.html#range.reference.algorithms.mutating.reverse_copy.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.rotate"></a><a class="link" href="rotate.html" title="rotate">rotate</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.rotate.prototype"></a><h6>
-<a name="id722578"></a>
+<a name="id701961"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.mutating.rotate.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.rotate.description"></a><h6>
-<a name="id722835"></a>
+<a name="id702217"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.mutating.rotate.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             and <code class="computeroutput"><span class="special">[</span><span class="identifier">middle</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">rng</span><span class="special">))</span></code>. Returns a reference to <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.rotate.definition"></a><h6>
-<a name="id722956"></a>
+<a name="id702338"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.mutating.rotate.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">rotate</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.rotate.requirements"></a><h6>
-<a name="id723026"></a>
+<a name="id702407"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.mutating.rotate.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -74,7 +74,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.rotate.precondition_"></a><h6>
-<a name="id723091"></a>
+<a name="id702473"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.mutating.rotate.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -86,7 +86,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.rotate.complexity"></a><h6>
-<a name="id723205"></a>
+<a name="id702586"></a>
             <a class="link" href="rotate.html#range.reference.algorithms.mutating.rotate.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate_copy.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate_copy.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/rotate_copy.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.rotate_copy"></a><a class="link" href="rotate_copy.html" title="rotate_copy">rotate_copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.rotate_copy.prototype"></a><h6>
-<a name="id723268"></a>
+<a name="id702649"></a>
             <a class="link" href="rotate_copy.html#range.reference.algorithms.mutating.rotate_copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.rotate_copy.description"></a><h6>
-<a name="id723436"></a>
+<a name="id702817"></a>
             <a class="link" href="rotate_copy.html#range.reference.algorithms.mutating.rotate_copy.description">Description</a>
           </h6>
 <p>
@@ -51,14 +51,14 @@
             and <code class="computeroutput"><span class="special">[</span><span class="identifier">middle</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">rng</span><span class="special">))</span></code> to <code class="computeroutput"><span class="identifier">out</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.rotate_copy.definition"></a><h6>
-<a name="id723556"></a>
+<a name="id702938"></a>
             <a class="link" href="rotate_copy.html#range.reference.algorithms.mutating.rotate_copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">rotate_copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.rotate_copy.requirements"></a><h6>
-<a name="id723626"></a>
+<a name="id703007"></a>
             <a class="link" href="rotate_copy.html#range.reference.algorithms.mutating.rotate_copy.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -76,7 +76,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.rotate_copy.precondition_"></a><h6>
-<a name="id723718"></a>
+<a name="id703100"></a>
             <a class="link" href="rotate_copy.html#range.reference.algorithms.mutating.rotate_copy.precondition_">Precondition:</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -88,7 +88,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.rotate_copy.complexity"></a><h6>
-<a name="id723831"></a>
+<a name="id703212"></a>
             <a class="link" href="rotate_copy.html#range.reference.algorithms.mutating.rotate_copy.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/sort.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/sort.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/sort.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.sort"></a><a class="link" href="sort.html" title="sort">sort</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.sort.prototype"></a><h6>
-<a name="id723895"></a>
+<a name="id703276"></a>
             <a class="link" href="sort.html#range.reference.algorithms.mutating.sort.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.sort.description"></a><h6>
-<a name="id724271"></a>
+<a name="id703652"></a>
             <a class="link" href="sort.html#range.reference.algorithms.mutating.sort.description">Description</a>
           </h6>
 <p>
@@ -71,14 +71,14 @@
             <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">false</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.sort.definition"></a><h6>
-<a name="id724514"></a>
+<a name="id703896"></a>
             <a class="link" href="sort.html#range.reference.algorithms.mutating.sort.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">sort</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.sort.requirements"></a><h6>
-<a name="id724584"></a>
+<a name="id703965"></a>
             <a class="link" href="sort.html#range.reference.algorithms.mutating.sort.requirements">Requirements</a>
           </h6>
 <p>
@@ -129,7 +129,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.sort.complexity"></a><h6>
-<a name="id724831"></a>
+<a name="id704212"></a>
             <a class="link" href="sort.html#range.reference.algorithms.mutating.sort.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_partition.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_partition.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_partition.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.stable_partition"></a><a class="link" href="stable_partition.html" title="stable_partition">stable_partition</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.stable_partition.prototype"></a><h6>
-<a name="id724943"></a>
+<a name="id704324"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.mutating.stable_partition.prototype">Prototype</a>
           </h6>
 <p>
@@ -60,7 +60,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.stable_partition.description"></a><h6>
-<a name="id725517"></a>
+<a name="id704898"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.mutating.stable_partition.description">Description</a>
           </h6>
 <p>
@@ -82,14 +82,14 @@
             the iterator to the first element that fails to satisfy <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.stable_partition.definition"></a><h6>
-<a name="id725657"></a>
+<a name="id705039"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.mutating.stable_partition.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">stable_partition</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.stable_partition.requirements"></a><h6>
-<a name="id725728"></a>
+<a name="id705110"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.mutating.stable_partition.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -107,7 +107,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.stable_partition.complexity"></a><h6>
-<a name="id725821"></a>
+<a name="id705203"></a>
             <a class="link" href="stable_partition.html#range.reference.algorithms.mutating.stable_partition.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_sort.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_sort.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/stable_sort.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.stable_sort"></a><a class="link" href="stable_sort.html" title="stable_sort">stable_sort</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.stable_sort.prototype"></a><h6>
-<a name="id725988"></a>
+<a name="id705369"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.mutating.stable_sort.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.stable_sort.description"></a><h6>
-<a name="id726364"></a>
+<a name="id705745"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.mutating.stable_sort.description">Description</a>
           </h6>
 <p>
@@ -71,14 +71,14 @@
             <code class="computeroutput"><span class="special">[</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">]</span></code>, <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span><span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">false</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.stable_sort.definition"></a><h6>
-<a name="id726607"></a>
+<a name="id705989"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.mutating.stable_sort.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">stable_sort</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.stable_sort.requirements"></a><h6>
-<a name="id726678"></a>
+<a name="id706060"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.mutating.stable_sort.requirements">Requirements</a>
           </h6>
 <p>
@@ -129,7 +129,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.stable_sort.complexity"></a><h6>
-<a name="id726925"></a>
+<a name="id706307"></a>
             <a class="link" href="stable_sort.html#range.reference.algorithms.mutating.stable_sort.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/swap_ranges.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/swap_ranges.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/swap_ranges.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.swap_ranges"></a><a class="link" href="swap_ranges.html" title="swap_ranges">swap_ranges</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.swap_ranges.prototype"></a><h6>
-<a name="id727103"></a>
+<a name="id706485"></a>
             <a class="link" href="swap_ranges.html#range.reference.algorithms.mutating.swap_ranges.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.swap_ranges.description"></a><h6>
-<a name="id727235"></a>
+<a name="id706616"></a>
             <a class="link" href="swap_ranges.html#range.reference.algorithms.mutating.swap_ranges.description">Description</a>
           </h6>
 <p>
@@ -49,14 +49,14 @@
             Returns a reference to <code class="computeroutput"><span class="identifier">rng2</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.swap_ranges.definition"></a><h6>
-<a name="id727322"></a>
+<a name="id706703"></a>
             <a class="link" href="swap_ranges.html#range.reference.algorithms.mutating.swap_ranges.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">swap_ranges</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.swap_ranges.requirements"></a><h6>
-<a name="id727391"></a>
+<a name="id706773"></a>
             <a class="link" href="swap_ranges.html#range.reference.algorithms.mutating.swap_ranges.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -80,7 +80,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.swap_ranges.complexity"></a><h6>
-<a name="id727498"></a>
+<a name="id706880"></a>
             <a class="link" href="swap_ranges.html#range.reference.algorithms.mutating.swap_ranges.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/transform.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/transform.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/transform.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.transform"></a><a class="link" href="transform.html" title="transform">transform</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.transform.prototype"></a><h6>
-<a name="id727563"></a>
+<a name="id706944"></a>
             <a class="link" href="transform.html#range.reference.algorithms.mutating.transform.prototype">Prototype</a>
           </h6>
 <p>
@@ -56,7 +56,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.transform.description"></a><h6>
-<a name="id727897"></a>
+<a name="id707279"></a>
             <a class="link" href="transform.html#range.reference.algorithms.mutating.transform.description">Description</a>
           </h6>
 <p>
@@ -92,14 +92,14 @@
             The return value is <code class="computeroutput"><span class="identifier">out</span> <span class="special">+</span> <span class="identifier">min</span><span class="special">(</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng1</span><span class="special">),</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng2</span><span class="special">))</span></code>.
           </p>
 <a name="range.reference.algorithms.mutating.transform.definition"></a><h6>
-<a name="id728436"></a>
+<a name="id707818"></a>
             <a class="link" href="transform.html#range.reference.algorithms.mutating.transform.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">transform</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.transform.requirements"></a><h6>
-<a name="id728507"></a>
+<a name="id707889"></a>
             <a class="link" href="transform.html#range.reference.algorithms.mutating.transform.requirements">Requirements</a>
           </h6>
 <p>
@@ -169,7 +169,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.transform.precondition_"></a><h6>
-<a name="id728876"></a>
+<a name="id708258"></a>
             <a class="link" href="transform.html#range.reference.algorithms.mutating.transform.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -203,7 +203,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.transform.complexity"></a><h6>
-<a name="id729299"></a>
+<a name="id708682"></a>
             <a class="link" href="transform.html#range.reference.algorithms.mutating.transform.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.unique"></a><a class="link" href="unique.html" title="unique">unique</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.unique.prototype"></a><h6>
-<a name="id729418"></a>
+<a name="id708800"></a>
             <a class="link" href="unique.html#range.reference.algorithms.mutating.unique.prototype">Prototype</a>
           </h6>
 <p>
@@ -68,7 +68,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.unique.description"></a><h6>
-<a name="id730440"></a>
+<a name="id709822"></a>
             <a class="link" href="unique.html#range.reference.algorithms.mutating.unique.description">Description</a>
           </h6>
 <p>
@@ -86,14 +86,14 @@
             type.
           </p>
 <a name="range.reference.algorithms.mutating.unique.definition"></a><h6>
-<a name="id730558"></a>
+<a name="id709940"></a>
             <a class="link" href="unique.html#range.reference.algorithms.mutating.unique.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">unique</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.unique.requirements"></a><h6>
-<a name="id730628"></a>
+<a name="id710010"></a>
             <a class="link" href="unique.html#range.reference.algorithms.mutating.unique.requirements">Requirements</a>
           </h6>
 <p>
@@ -137,7 +137,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.unique.complexity"></a><h6>
-<a name="id730850"></a>
+<a name="id710232"></a>
             <a class="link" href="unique.html#range.reference.algorithms.mutating.unique.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique_copy.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique_copy.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/mutating/unique_copy.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.mutating.unique_copy"></a><a class="link" href="unique_copy.html" title="unique_copy">unique_copy</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.mutating.unique_copy.prototype"></a><h6>
-<a name="id730972"></a>
+<a name="id710354"></a>
             <a class="link" href="unique_copy.html#range.reference.algorithms.mutating.unique_copy.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.mutating.unique_copy.description"></a><h6>
-<a name="id731229"></a>
+<a name="id710611"></a>
             <a class="link" href="unique_copy.html#range.reference.algorithms.mutating.unique_copy.description">Description</a>
           </h6>
 <p>
@@ -55,14 +55,14 @@
             value type.
           </p>
 <a name="range.reference.algorithms.mutating.unique_copy.definition"></a><h6>
-<a name="id731314"></a>
+<a name="id710696"></a>
             <a class="link" href="unique_copy.html#range.reference.algorithms.mutating.unique_copy.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">unique_copy</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.mutating.unique_copy.requirements"></a><h6>
-<a name="id731385"></a>
+<a name="id710767"></a>
             <a class="link" href="unique_copy.html#range.reference.algorithms.mutating.unique_copy.requirements">Requirements</a>
           </h6>
 <p>
@@ -116,7 +116,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.mutating.unique_copy.complexity"></a><h6>
-<a name="id731664"></a>
+<a name="id711046"></a>
             <a class="link" href="unique_copy.html#range.reference.algorithms.mutating.unique_copy.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/copy_n.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/copy_n.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/copy_n.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.copy_n"></a><a class="link" href="copy_n.html" title="copy_n">copy_n</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.copy_n.prototype"></a><h6>
-<a name="id765345"></a>
+<a name="id744730"></a>
             <a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.copy_n.description"></a><h6>
-<a name="id765504"></a>
+<a name="id744888"></a>
             <a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.description">Description</a>
           </h6>
 <p>
@@ -53,14 +53,14 @@
             from <code class="computeroutput"><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span></code> to the range <code class="computeroutput"><span class="special">[</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">out</span> <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span></code>
           </p>
 <a name="range.reference.algorithms.new.copy_n.definition"></a><h6>
-<a name="id765674"></a>
+<a name="id745058"></a>
             <a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">copy_n</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.copy_n.requirements"></a><h6>
-<a name="id765744"></a>
+<a name="id745129"></a>
             <a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -79,7 +79,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.copy_n.complexity"></a><h6>
-<a name="id765852"></a>
+<a name="id745236"></a>
             <a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/erase.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/erase.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/erase.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.erase"></a><a class="link" href="erase.html" title="erase">erase</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.erase.prototype"></a><h6>
-<a name="id765903"></a>
+<a name="id745287"></a>
             <a class="link" href="erase.html#range.reference.algorithms.new.erase.prototype">Prototype</a>
           </h6>
 <p>
@@ -41,7 +41,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.erase.description"></a><h6>
-<a name="id766044"></a>
+<a name="id745427"></a>
             <a class="link" href="erase.html#range.reference.algorithms.new.erase.description">Description</a>
           </h6>
 <p>
@@ -58,14 +58,14 @@
             the frequently used combination equivalent to <code class="computeroutput"><span class="identifier">target</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">target</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">target</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">pred</span><span class="special">),</span> <span class="identifier">target</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span></code>
           </p>
 <a name="range.reference.algorithms.new.erase.definition"></a><h6>
-<a name="id766343"></a>
+<a name="id745727"></a>
             <a class="link" href="erase.html#range.reference.algorithms.new.erase.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.erase.requirements"></a><h6>
-<a name="id766412"></a>
+<a name="id745796"></a>
             <a class="link" href="erase.html#range.reference.algorithms.new.erase.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@@ -73,7 +73,7 @@
                 erase of an iterator range.
               </li></ol></div>
 <a name="range.reference.algorithms.new.erase.complexity"></a><h6>
-<a name="id766457"></a>
+<a name="id745840"></a>
             <a class="link" href="erase.html#range.reference.algorithms.new.erase.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/for_each.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/for_each.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/for_each.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.for_each"></a><a class="link" href="for_each.html" title="for_each">for_each</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.for_each.prototype"></a><h6>
-<a name="id766521"></a>
+<a name="id745904"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.new.for_each.prototype">Prototype</a>
           </h6>
 <p>
@@ -72,7 +72,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.for_each.description"></a><h6>
-<a name="id767096"></a>
+<a name="id746478"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.new.for_each.description">Description</a>
           </h6>
 <p>
@@ -88,14 +88,14 @@
             It is safe to call this function with unequal length ranges.
           </p>
 <a name="range.reference.algorithms.new.for_each.definition"></a><h6>
-<a name="id767250"></a>
+<a name="id746634"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.new.for_each.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.for_each.requirements"></a><h6>
-<a name="id767322"></a>
+<a name="id746705"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.new.for_each.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -125,7 +125,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.for_each.complexity"></a><h6>
-<a name="id767482"></a>
+<a name="id746866"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.new.for_each.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/insert.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/insert.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/insert.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.insert"></a><a class="link" href="insert.html" title="insert">insert</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.insert.prototype"></a><h6>
-<a name="id767585"></a>
+<a name="id746969"></a>
             <a class="link" href="insert.html#range.reference.algorithms.new.insert.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.insert.description"></a><h6>
-<a name="id767755"></a>
+<a name="id747139"></a>
             <a class="link" href="insert.html#range.reference.algorithms.new.insert.description">Description</a>
           </h6>
 <p>
@@ -54,14 +54,14 @@
             <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.new.insert.definition"></a><h6>
-<a name="id767821"></a>
+<a name="id747205"></a>
             <a class="link" href="insert.html#range.reference.algorithms.new.insert.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">insert</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.insert.requirements"></a><h6>
-<a name="id767891"></a>
+<a name="id747275"></a>
             <a class="link" href="insert.html#range.reference.algorithms.new.insert.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -81,7 +81,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.insert.complexity"></a><h6>
-<a name="id767989"></a>
+<a name="id747373"></a>
             <a class="link" href="insert.html#range.reference.algorithms.new.insert.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/iota.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/iota.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/iota.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.iota"></a><a class="link" href="iota.html" title="iota">iota</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.iota.prototype"></a><h6>
-<a name="id768054"></a>
+<a name="id747438"></a>
             <a class="link" href="iota.html#range.reference.algorithms.new.iota.prototype">Prototype</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.iota.description"></a><h6>
-<a name="id768180"></a>
+<a name="id747564"></a>
             <a class="link" href="iota.html#range.reference.algorithms.new.iota.description">Description</a>
           </h6>
 <p>
@@ -50,14 +50,14 @@
             <span class="special">+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">),</span> <span class="identifier">it</span><span class="special">)</span></code>
           </p>
 <a name="range.reference.algorithms.new.iota.definition"></a><h6>
-<a name="id768316"></a>
+<a name="id747700"></a>
             <a class="link" href="iota.html#range.reference.algorithms.new.iota.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">iota</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.iota.requirements"></a><h6>
-<a name="id768386"></a>
+<a name="id747770"></a>
             <a class="link" href="iota.html#range.reference.algorithms.new.iota.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -73,7 +73,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.iota.complexity"></a><h6>
-<a name="id768466"></a>
+<a name="id747850"></a>
             <a class="link" href="iota.html#range.reference.algorithms.new.iota.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/is_sorted.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/is_sorted.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/is_sorted.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.is_sorted"></a><a class="link" href="is_sorted.html" title="is_sorted">is_sorted</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.is_sorted.prototype"></a><h6>
-<a name="id768540"></a>
+<a name="id747924"></a>
             <a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.is_sorted.description"></a><h6>
-<a name="id768733"></a>
+<a name="id748118"></a>
             <a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.description">Description</a>
           </h6>
 <p>
@@ -58,14 +58,14 @@
             is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.new.is_sorted.definition"></a><h6>
-<a name="id768922"></a>
+<a name="id748306"></a>
             <a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">is_sorted</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.is_sorted.requirements"></a><h6>
-<a name="id768992"></a>
+<a name="id748376"></a>
             <a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -85,7 +85,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.is_sorted.complexity"></a><h6>
-<a name="id769101"></a>
+<a name="id748485"></a>
             <a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/overwrite.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/overwrite.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/overwrite.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.overwrite"></a><a class="link" href="overwrite.html" title="overwrite">overwrite</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.overwrite.prototype"></a><h6>
-<a name="id769166"></a>
+<a name="id748550"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.overwrite.description"></a><h6>
-<a name="id769300"></a>
+<a name="id748683"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             into the range <code class="computeroutput"><span class="identifier">to</span></code>.
           </p>
 <a name="range.reference.algorithms.new.overwrite.definition"></a><h6>
-<a name="id769355"></a>
+<a name="id748739"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">overwrite</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.overwrite.requirements"></a><h6>
-<a name="id769426"></a>
+<a name="id748810"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -88,7 +88,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.overwrite.complexity"></a><h6>
-<a name="id769603"></a>
+<a name="id748987"></a>
             <a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/push_back.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/push_back.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/push_back.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.push_back"></a><a class="link" href="push_back.html" title="push_back">push_back</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.push_back.prototype"></a><h6>
-<a name="id769668"></a>
+<a name="id749051"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.new.push_back.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.push_back.description"></a><h6>
-<a name="id769807"></a>
+<a name="id749190"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.new.push_back.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             to the back of the container <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.new.push_back.definition"></a><h6>
-<a name="id769862"></a>
+<a name="id749246"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.new.push_back.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">push_back</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.push_back.requirements"></a><h6>
-<a name="id769932"></a>
+<a name="id749316"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.new.push_back.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -79,7 +79,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.push_back.complexity"></a><h6>
-<a name="id770044"></a>
+<a name="id749427"></a>
             <a class="link" href="push_back.html#range.reference.algorithms.new.push_back.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/push_front.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/push_front.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/push_front.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.push_front"></a><a class="link" href="push_front.html" title="push_front">push_front</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.push_front.prototype"></a><h6>
-<a name="id770109"></a>
+<a name="id749493"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.new.push_front.prototype">Prototype</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.push_front.description"></a><h6>
-<a name="id770247"></a>
+<a name="id749631"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.new.push_front.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             to the front of the container <code class="computeroutput"><span class="identifier">target</span></code>.
           </p>
 <a name="range.reference.algorithms.new.push_front.definition"></a><h6>
-<a name="id770302"></a>
+<a name="id749686"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.new.push_front.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">push_front</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.push_front.requirements"></a><h6>
-<a name="id770372"></a>
+<a name="id749755"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.new.push_front.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -79,7 +79,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.push_front.complexity"></a><h6>
-<a name="id770484"></a>
+<a name="id749868"></a>
             <a class="link" href="push_front.html#range.reference.algorithms.new.push_front.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.remove_erase"></a><a class="link" href="remove_erase.html" title="remove_erase">remove_erase</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.remove_erase.prototype"></a><h6>
-<a name="id770549"></a>
+<a name="id749933"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.prototype">Prototype</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.remove_erase.description"></a><h6>
-<a name="id770686"></a>
+<a name="id750070"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.description">Description</a>
           </h6>
 <p>
@@ -50,14 +50,14 @@
             algorithm which merely rearranges elements.
           </p>
 <a name="range.reference.algorithms.new.remove_erase.definition"></a><h6>
-<a name="id770742"></a>
+<a name="id750126"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.remove_erase.requirements"></a><h6>
-<a name="id770813"></a>
+<a name="id750197"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@@ -65,7 +65,7 @@
                 erase of an iterator range.
               </li></ol></div>
 <a name="range.reference.algorithms.new.remove_erase.complexity"></a><h6>
-<a name="id770858"></a>
+<a name="id750242"></a>
             <a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/new/remove_erase_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.new.remove_erase_if"></a><a class="link" href="remove_erase_if.html" title="remove_erase_if">remove_erase_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.new.remove_erase_if.prototype"></a><h6>
-<a name="id770923"></a>
+<a name="id750307"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.new.remove_erase_if.description"></a><h6>
-<a name="id771050"></a>
+<a name="id750434"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.description">Description</a>
           </h6>
 <p>
@@ -51,14 +51,14 @@
             algorithm which merely rearranges elements.
           </p>
 <a name="range.reference.algorithms.new.remove_erase_if.definition"></a><h6>
-<a name="id771131"></a>
+<a name="id750514"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.new.remove_erase_if.requirements"></a><h6>
-<a name="id771201"></a>
+<a name="id750585"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.requirements">Requirements</a>
           </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -72,7 +72,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.new.remove_erase_if.complexity"></a><h6>
-<a name="id771275"></a>
+<a name="id750659"></a>
             <a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/adjacent_find.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.adjacent_find"></a><a class="link" href="adjacent_find.html" title="adjacent_find">adjacent_find</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.adjacent_find.prototype"></a><h6>
-<a name="id731803"></a>
+<a name="id711185"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.non_mutating.adjacent_find.prototype">Prototype</a>
           </h6>
 <p>
@@ -76,7 +76,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.adjacent_find.description"></a><h6>
-<a name="id732780"></a>
+<a name="id712162"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.non_mutating.adjacent_find.description">Description</a>
           </h6>
 <p>
@@ -97,14 +97,14 @@
             is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.adjacent_find.definition"></a><h6>
-<a name="id732987"></a>
+<a name="id712369"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.non_mutating.adjacent_find.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">adjacent_find</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.adjacent_find.requirements"></a><h6>
-<a name="id733058"></a>
+<a name="id712440"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.non_mutating.adjacent_find.requirements">Requirements</a>
           </h6>
 <p>
@@ -142,7 +142,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.adjacent_find.complexity"></a><h6>
-<a name="id733247"></a>
+<a name="id712629"></a>
             <a class="link" href="adjacent_find.html#range.reference.algorithms.non_mutating.adjacent_find.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/binary_search.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/binary_search.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/binary_search.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.binary_search"></a><a class="link" href="binary_search.html" title="binary_search">binary_search</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.binary_search.prototype"></a><h6>
-<a name="id733347"></a>
+<a name="id712729"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.non_mutating.binary_search.prototype">Prototype</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.binary_search.description"></a><h6>
-<a name="id733624"></a>
+<a name="id713006"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.non_mutating.binary_search.description">Description</a>
           </h6>
 <p>
@@ -52,14 +52,14 @@
             range <code class="computeroutput"><span class="identifier">rng</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.binary_search.definition"></a><h6>
-<a name="id733690"></a>
+<a name="id713072"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.non_mutating.binary_search.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">binary_search</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.binary_search.requirements"></a><h6>
-<a name="id733760"></a>
+<a name="id713142"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.non_mutating.binary_search.requirements">Requirements</a>
           </h6>
 <p>
@@ -110,7 +110,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.binary_search.precondition_"></a><h6>
-<a name="id734029"></a>
+<a name="id713411"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.non_mutating.binary_search.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -128,7 +128,7 @@
             order according to the function object <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.binary_search.complexity"></a><h6>
-<a name="id734121"></a>
+<a name="id713503"></a>
             <a class="link" href="binary_search.html#range.reference.algorithms.non_mutating.binary_search.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.count"></a><a class="link" href="count.html" title="count">count</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.count.prototype"></a><h6>
-<a name="id734284"></a>
+<a name="id713666"></a>
             <a class="link" href="count.html#range.reference.algorithms.non_mutating.count.prototype">Prototype</a>
           </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.count.description"></a><h6>
-<a name="id734578"></a>
+<a name="id713960"></a>
             <a class="link" href="count.html#range.reference.algorithms.non_mutating.count.description">Description</a>
           </h6>
 <p>
@@ -54,14 +54,14 @@
             is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.count.definition"></a><h6>
-<a name="id734666"></a>
+<a name="id714048"></a>
             <a class="link" href="count.html#range.reference.algorithms.non_mutating.count.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">count</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.count.requirements"></a><h6>
-<a name="id734736"></a>
+<a name="id714118"></a>
             <a class="link" href="count.html#range.reference.algorithms.non_mutating.count.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -84,7 +84,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.count.complexity"></a><h6>
-<a name="id734868"></a>
+<a name="id714250"></a>
             <a class="link" href="count.html#range.reference.algorithms.non_mutating.count.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/count_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.count_if"></a><a class="link" href="count_if.html" title="count_if">count_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.count_if.prototype"></a><h6>
-<a name="id734932"></a>
+<a name="id714315"></a>
             <a class="link" href="count_if.html#range.reference.algorithms.non_mutating.count_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.count_if.description"></a><h6>
-<a name="id735091"></a>
+<a name="id714472"></a>
             <a class="link" href="count_if.html#range.reference.algorithms.non_mutating.count_if.description">Description</a>
           </h6>
 <p>
@@ -50,14 +50,14 @@
             is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.count_if.definition"></a><h6>
-<a name="id735180"></a>
+<a name="id714562"></a>
             <a class="link" href="count_if.html#range.reference.algorithms.non_mutating.count_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">count_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.count_if.requirements"></a><h6>
-<a name="id735249"></a>
+<a name="id714631"></a>
             <a class="link" href="count_if.html#range.reference.algorithms.non_mutating.count_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -80,7 +80,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.count_if.complexity"></a><h6>
-<a name="id735381"></a>
+<a name="id714763"></a>
             <a class="link" href="count_if.html#range.reference.algorithms.non_mutating.count_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.equal"></a><a class="link" href="equal.html" title="equal">equal</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.equal.prototype"></a><h6>
-<a name="id735456"></a>
+<a name="id714837"></a>
             <a class="link" href="equal.html#range.reference.algorithms.non_mutating.equal.prototype">Prototype</a>
           </h6>
 <p>
@@ -52,7 +52,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.equal.description"></a><h6>
-<a name="id735738"></a>
+<a name="id715120"></a>
             <a class="link" href="equal.html#range.reference.algorithms.non_mutating.equal.description">Description</a>
           </h6>
 <p>
@@ -70,14 +70,14 @@
             considered equal in the predicate version if <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">)</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.equal.definition"></a><h6>
-<a name="id735972"></a>
+<a name="id715354"></a>
             <a class="link" href="equal.html#range.reference.algorithms.non_mutating.equal.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">equal</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.equal.requirements"></a><h6>
-<a name="id736042"></a>
+<a name="id715424"></a>
             <a class="link" href="equal.html#range.reference.algorithms.non_mutating.equal.requirements">Requirements</a>
           </h6>
 <p>
@@ -138,7 +138,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.equal.complexity"></a><h6>
-<a name="id736352"></a>
+<a name="id715734"></a>
             <a class="link" href="equal.html#range.reference.algorithms.non_mutating.equal.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal_range.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/equal_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.equal_range"></a><a class="link" href="equal_range.html" title="equal_range">equal_range</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.equal_range.prototype"></a><h6>
-<a name="id736444"></a>
+<a name="id715826"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.non_mutating.equal_range.prototype">Prototype</a>
           </h6>
 <p>
@@ -70,7 +70,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.equal_range.description"></a><h6>
-<a name="id737315"></a>
+<a name="id716698"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.non_mutating.equal_range.description">Description</a>
           </h6>
 <p>
@@ -84,14 +84,14 @@
             is determined by <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.equal_range.definition"></a><h6>
-<a name="id737458"></a>
+<a name="id716841"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.non_mutating.equal_range.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">equal_range</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.equal_range.requirements"></a><h6>
-<a name="id737528"></a>
+<a name="id716911"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.non_mutating.equal_range.requirements">Requirements</a>
           </h6>
 <p>
@@ -142,7 +142,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.equal_range.precondition_"></a><h6>
-<a name="id737797"></a>
+<a name="id717180"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.non_mutating.equal_range.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -154,7 +154,7 @@
             is ordered in ascending order according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.equal_range.complexity"></a><h6>
-<a name="id737872"></a>
+<a name="id717254"></a>
             <a class="link" href="equal_range.html#range.reference.algorithms.non_mutating.equal_range.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.find"></a><a class="link" href="find.html" title="find">find</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.find.prototype"></a><h6>
-<a name="id738534"></a>
+<a name="id717917"></a>
             <a class="link" href="find.html#range.reference.algorithms.non_mutating.find.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.find.description"></a><h6>
-<a name="id738823"></a>
+<a name="id718205"></a>
             <a class="link" href="find.html#range.reference.algorithms.non_mutating.find.description">Description</a>
           </h6>
 <p>
@@ -59,14 +59,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.find.definition"></a><h6>
-<a name="id738939"></a>
+<a name="id718322"></a>
             <a class="link" href="find.html#range.reference.algorithms.non_mutating.find.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.find.requirements"></a><h6>
-<a name="id739009"></a>
+<a name="id718392"></a>
             <a class="link" href="find.html#range.reference.algorithms.non_mutating.find.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -87,7 +87,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.find.complexity"></a><h6>
-<a name="id739128"></a>
+<a name="id718511"></a>
             <a class="link" href="find.html#range.reference.algorithms.non_mutating.find.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_end.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_end.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_end.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.find_end"></a><a class="link" href="find_end.html" title="find_end">find_end</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.find_end.prototype"></a><h6>
-<a name="id739192"></a>
+<a name="id718575"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.non_mutating.find_end.prototype">Prototype</a>
           </h6>
 <p>
@@ -65,7 +65,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.find_end.description"></a><h6>
-<a name="id739851"></a>
+<a name="id719235"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.non_mutating.find_end.description">Description</a>
           </h6>
 <p>
@@ -80,14 +80,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.find_end.definition"></a><h6>
-<a name="id739976"></a>
+<a name="id719359"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.non_mutating.find_end.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find_end</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.find_end.requirements"></a><h6>
-<a name="id740047"></a>
+<a name="id719430"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.non_mutating.find_end.requirements">Requirements</a>
           </h6>
 <p>
@@ -147,7 +147,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.find_end.complexity"></a><h6>
-<a name="id740359"></a>
+<a name="id719742"></a>
             <a class="link" href="find_end.html#range.reference.algorithms.non_mutating.find_end.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_first_of.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_first_of.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_first_of.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.find_first_of"></a><a class="link" href="find_first_of.html" title="find_first_of">find_first_of</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.find_first_of.prototype"></a><h6>
-<a name="id740530"></a>
+<a name="id719912"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.non_mutating.find_first_of.prototype">Prototype</a>
           </h6>
 <p>
@@ -65,7 +65,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.find_first_of.description"></a><h6>
-<a name="id741187"></a>
+<a name="id720570"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.non_mutating.find_first_of.description">Description</a>
           </h6>
 <p>
@@ -85,14 +85,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.find_first_of.definition"></a><h6>
-<a name="id741316"></a>
+<a name="id720699"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.non_mutating.find_first_of.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find_first_of</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.find_first_of.requirements"></a><h6>
-<a name="id741388"></a>
+<a name="id720771"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.non_mutating.find_first_of.requirements">Requirements</a>
           </h6>
 <p>
@@ -146,7 +146,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.find_first_of.complexity"></a><h6>
-<a name="id741654"></a>
+<a name="id721037"></a>
             <a class="link" href="find_first_of.html#range.reference.algorithms.non_mutating.find_first_of.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_if.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_if.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/find_if.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.find_if"></a><a class="link" href="find_if.html" title="find_if">find_if</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.find_if.prototype"></a><h6>
-<a name="id741743"></a>
+<a name="id721127"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.non_mutating.find_if.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.find_if.description"></a><h6>
-<a name="id742034"></a>
+<a name="id721417"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.non_mutating.find_if.description">Description</a>
           </h6>
 <p>
@@ -63,14 +63,14 @@
             defines found in the same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.find_if.definition"></a><h6>
-<a name="id742163"></a>
+<a name="id721545"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.non_mutating.find_if.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">find_if</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.find_if.requirements"></a><h6>
-<a name="id742233"></a>
+<a name="id721616"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.non_mutating.find_if.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -89,7 +89,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.find_if.precondition_"></a><h6>
-<a name="id742338"></a>
+<a name="id721721"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.non_mutating.find_if.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -97,7 +97,7 @@
             <code class="computeroutput"><span class="identifier">rng</span></code>, <code class="computeroutput"><span class="special">*</span><span class="identifier">i</span></code> is in the domain of <code class="computeroutput"><span class="identifier">UnaryPredicate</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.find_if.complexity"></a><h6>
-<a name="id742408"></a>
+<a name="id721791"></a>
             <a class="link" href="find_if.html#range.reference.algorithms.non_mutating.find_if.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/for_each.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/for_each.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/for_each.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.for_each"></a><a class="link" href="for_each.html" title="for_each">for_each</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.for_each.prototype"></a><h6>
-<a name="id737966"></a>
+<a name="id717348"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.non_mutating.for_each.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.for_each.description"></a><h6>
-<a name="id738190"></a>
+<a name="id717573"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.non_mutating.for_each.description">Description</a>
           </h6>
 <p>
@@ -58,14 +58,14 @@
             <code class="computeroutput"><span class="identifier">fun</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.for_each.definition"></a><h6>
-<a name="id738268"></a>
+<a name="id717651"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.non_mutating.for_each.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.for_each.requirements"></a><h6>
-<a name="id738339"></a>
+<a name="id717722"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.non_mutating.for_each.requirements">Requirements</a>
           </h6>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
@@ -89,7 +89,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.for_each.complexity"></a><h6>
-<a name="id738461"></a>
+<a name="id717844"></a>
             <a class="link" href="for_each.html#range.reference.algorithms.non_mutating.for_each.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lexicographical_compare.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.lexicographical_compare"></a><a class="link" href="lexicographical_compare.html" title="lexicographical_compare">lexicographical_compare</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.lexicographical_compare.prototype"></a><h6>
-<a name="id742484"></a>
+<a name="id721867"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.non_mutating.lexicographical_compare.prototype">Prototype</a>
           </h6>
 <p>
@@ -52,7 +52,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.lexicographical_compare.description"></a><h6>
-<a name="id742767"></a>
+<a name="id722150"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.non_mutating.lexicographical_compare.description">Description</a>
           </h6>
 <p>
@@ -72,14 +72,14 @@
             predicate versions.
           </p>
 <a name="range.reference.algorithms.non_mutating.lexicographical_compare.definition"></a><h6>
-<a name="id742935"></a>
+<a name="id722318"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.non_mutating.lexicographical_compare.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">lexicographical_compare</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.lexicographical_compare.requirements"></a><h6>
-<a name="id743006"></a>
+<a name="id722389"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.non_mutating.lexicographical_compare.requirements">Requirements</a>
           </h6>
 <p>
@@ -144,7 +144,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.lexicographical_compare.complexity"></a><h6>
-<a name="id743382"></a>
+<a name="id722764"></a>
             <a class="link" href="lexicographical_compare.html#range.reference.algorithms.non_mutating.lexicographical_compare.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lower_bound.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lower_bound.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/lower_bound.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.lower_bound"></a><a class="link" href="lower_bound.html" title="lower_bound">lower_bound</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.lower_bound.prototype"></a><h6>
-<a name="id743485"></a>
+<a name="id722868"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.non_mutating.lower_bound.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.lower_bound.description"></a><h6>
-<a name="id743775"></a>
+<a name="id723158"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.non_mutating.lower_bound.description">Description</a>
           </h6>
 <p>
@@ -71,14 +71,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.lower_bound.definition"></a><h6>
-<a name="id743964"></a>
+<a name="id723347"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.non_mutating.lower_bound.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">lower_bound</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.lower_bound.requirements"></a><h6>
-<a name="id744036"></a>
+<a name="id723418"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.non_mutating.lower_bound.requirements">Requirements</a>
           </h6>
 <p>
@@ -129,7 +129,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.lower_bound.precondition_"></a><h6>
-<a name="id744304"></a>
+<a name="id723687"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.non_mutating.lower_bound.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -147,7 +147,7 @@
             order according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.lower_bound.complexity"></a><h6>
-<a name="id744397"></a>
+<a name="id723780"></a>
             <a class="link" href="lower_bound.html#range.reference.algorithms.non_mutating.lower_bound.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/max_element.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/max_element.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/max_element.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.max_element"></a><a class="link" href="max_element.html" title="max_element">max_element</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.max_element.prototype"></a><h6>
-<a name="id744536"></a>
+<a name="id723919"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.non_mutating.max_element.prototype">Prototype</a>
           </h6>
 <p>
@@ -83,7 +83,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.max_element.description"></a><h6>
-<a name="id745522"></a>
+<a name="id724905"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.non_mutating.max_element.description">Description</a>
           </h6>
 <p>
@@ -97,14 +97,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.max_element.definition"></a><h6>
-<a name="id745616"></a>
+<a name="id725000"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.non_mutating.max_element.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">max_element</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.max_element.requirements"></a><h6>
-<a name="id745688"></a>
+<a name="id725071"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.non_mutating.max_element.requirements">Requirements</a>
           </h6>
 <p>
@@ -141,7 +141,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.max_element.complexity"></a><h6>
-<a name="id745866"></a>
+<a name="id725249"></a>
             <a class="link" href="max_element.html#range.reference.algorithms.non_mutating.max_element.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/min_element.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/min_element.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/min_element.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.min_element"></a><a class="link" href="min_element.html" title="min_element">min_element</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.min_element.prototype"></a><h6>
-<a name="id745965"></a>
+<a name="id725348"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.non_mutating.min_element.prototype">Prototype</a>
           </h6>
 <p>
@@ -83,7 +83,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.min_element.description"></a><h6>
-<a name="id746952"></a>
+<a name="id726335"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.non_mutating.min_element.description">Description</a>
           </h6>
 <p>
@@ -97,14 +97,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.min_element.definition"></a><h6>
-<a name="id747046"></a>
+<a name="id726429"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.non_mutating.min_element.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">min_element</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.min_element.requirements"></a><h6>
-<a name="id747117"></a>
+<a name="id726500"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.non_mutating.min_element.requirements">Requirements</a>
           </h6>
 <p>
@@ -141,7 +141,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.min_element.complexity"></a><h6>
-<a name="id747295"></a>
+<a name="id726678"></a>
             <a class="link" href="min_element.html#range.reference.algorithms.non_mutating.min_element.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/mismatch.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/mismatch.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/mismatch.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.mismatch"></a><a class="link" href="mismatch.html" title="mismatch">mismatch</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.mismatch.prototype"></a><h6>
-<a name="id747394"></a>
+<a name="id726777"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.non_mutating.mismatch.prototype">Prototype</a>
           </h6>
 <p>
@@ -105,7 +105,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.mismatch.description"></a><h6>
-<a name="id749098"></a>
+<a name="id728481"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.non_mutating.mismatch.description">Description</a>
           </h6>
 <p>
@@ -117,14 +117,14 @@
             Equality is determined by <code class="computeroutput"><span class="keyword">operator</span><span class="special">==</span></code> for non-predicate versions of <code class="computeroutput"><span class="identifier">mismatch</span></code>, and by satisfying <code class="computeroutput"><span class="identifier">pred</span></code> in the predicate versions.
           </p>
 <a name="range.reference.algorithms.non_mutating.mismatch.definition"></a><h6>
-<a name="id749195"></a>
+<a name="id728578"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.non_mutating.mismatch.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">mismatch</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.mismatch.requirements"></a><h6>
-<a name="id749266"></a>
+<a name="id728648"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.non_mutating.mismatch.requirements">Requirements</a>
           </h6>
 <p>
@@ -185,14 +185,14 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.mismatch.precondition_"></a><h6>
-<a name="id749576"></a>
+<a name="id728960"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.non_mutating.mismatch.precondition_">Precondition:</a>
           </h6>
 <p>
             <code class="computeroutput"><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng2</span><span class="special">)</span> <span class="special">&gt;=</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng1</span><span class="special">)</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.mismatch.complexity"></a><h6>
-<a name="id749649"></a>
+<a name="id729032"></a>
             <a class="link" href="mismatch.html#range.reference.algorithms.non_mutating.mismatch.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.search"></a><a class="link" href="search.html" title="search">search</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.search.prototype"></a><h6>
-<a name="id749713"></a>
+<a name="id729096"></a>
             <a class="link" href="search.html#range.reference.algorithms.non_mutating.search.prototype">Prototype</a>
           </h6>
 <p>
@@ -95,7 +95,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.search.description"></a><h6>
-<a name="id751051"></a>
+<a name="id730434"></a>
             <a class="link" href="search.html#range.reference.algorithms.non_mutating.search.description">Description</a>
           </h6>
 <p>
@@ -114,14 +114,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.search.definition"></a><h6>
-<a name="id751214"></a>
+<a name="id730597"></a>
             <a class="link" href="search.html#range.reference.algorithms.non_mutating.search.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">search</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.search.requirements"></a><h6>
-<a name="id751286"></a>
+<a name="id730668"></a>
             <a class="link" href="search.html#range.reference.algorithms.non_mutating.search.requirements">Requirements</a>
           </h6>
 <p>
@@ -182,7 +182,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.search.complexity"></a><h6>
-<a name="id751596"></a>
+<a name="id730979"></a>
             <a class="link" href="search.html#range.reference.algorithms.non_mutating.search.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search_n.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search_n.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/search_n.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.search_n"></a><a class="link" href="search_n.html" title="search_n">search_n</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.search_n.prototype"></a><h6>
-<a name="id751637"></a>
+<a name="id731020"></a>
             <a class="link" href="search_n.html#range.reference.algorithms.non_mutating.search_n.prototype">Prototype</a>
           </h6>
 <p>
@@ -54,7 +54,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.search_n.description"></a><h6>
-<a name="id752386"></a>
+<a name="id731769"></a>
             <a class="link" href="search_n.html#range.reference.algorithms.non_mutating.search_n.description">Description</a>
           </h6>
 <p>
@@ -63,14 +63,14 @@
             and by a predicate when one is supplied.
           </p>
 <a name="range.reference.algorithms.non_mutating.search_n.definition"></a><h6>
-<a name="id752453"></a>
+<a name="id731836"></a>
             <a class="link" href="search_n.html#range.reference.algorithms.non_mutating.search_n.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">search_n</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.search_n.requirements"></a><h6>
-<a name="id752524"></a>
+<a name="id731906"></a>
             <a class="link" href="search_n.html#range.reference.algorithms.non_mutating.search_n.requirements">Requirements</a>
           </h6>
 <p>
@@ -124,7 +124,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.search_n.complexity"></a><h6>
-<a name="id752812"></a>
+<a name="id732195"></a>
             <a class="link" href="search_n.html#range.reference.algorithms.non_mutating.search_n.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/upper_bound.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/upper_bound.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/non_mutating/upper_bound.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.non_mutating.upper_bound"></a><a class="link" href="upper_bound.html" title="upper_bound">upper_bound</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.non_mutating.upper_bound.prototype"></a><h6>
-<a name="id752853"></a>
+<a name="id732236"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.non_mutating.upper_bound.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.non_mutating.upper_bound.description"></a><h6>
-<a name="id753142"></a>
+<a name="id732525"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.non_mutating.upper_bound.description">Description</a>
           </h6>
 <p>
@@ -70,14 +70,14 @@
             same manner as the returned iterator described above.
           </p>
 <a name="range.reference.algorithms.non_mutating.upper_bound.definition"></a><h6>
-<a name="id753336"></a>
+<a name="id732719"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.non_mutating.upper_bound.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">upper_bound</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.non_mutating.upper_bound.requirements"></a><h6>
-<a name="id753407"></a>
+<a name="id732790"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.non_mutating.upper_bound.requirements">Requirements</a>
           </h6>
 <p>
@@ -128,7 +128,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.non_mutating.upper_bound.precondition_"></a><h6>
-<a name="id753676"></a>
+<a name="id733059"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.non_mutating.upper_bound.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -146,7 +146,7 @@
             order according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.non_mutating.upper_bound.complexity"></a><h6>
-<a name="id753768"></a>
+<a name="id733150"></a>
             <a class="link" href="upper_bound.html#range.reference.algorithms.non_mutating.upper_bound.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/numeric/accumulate.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/numeric/accumulate.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/numeric/accumulate.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.numeric.accumulate"></a><a class="link" href="accumulate.html" title="accumulate">accumulate</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.numeric.accumulate.prototype"></a><h6>
-<a name="id771357"></a>
+<a name="id750741"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.prototype">Prototype</a>
           </h6>
 <p>
@@ -52,7 +52,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.numeric.accumulate.description"></a><h6>
-<a name="id771619"></a>
+<a name="id751002"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.description">Description</a>
           </h6>
 <p>
@@ -63,18 +63,18 @@
             The return value is the resultant value of the above algorithm.
           </p>
 <a name="range.reference.algorithms.numeric.accumulate.definition"></a><h6>
-<a name="id771693"></a>
+<a name="id751077"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.numeric.accumulate.requirements"></a><h6>
-<a name="id771755"></a>
+<a name="id751139"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.requirements">Requirements</a>
           </h6>
 <a name="range.reference.algorithms.numeric.accumulate.for_the_first_version"></a><h6>
-<a name="id771776"></a>
+<a name="id751160"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.for_the_first_version">For
             the first version</a>
           </h6>
@@ -99,7 +99,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.accumulate.for_the_second_version"></a><h6>
-<a name="id771918"></a>
+<a name="id751302"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.for_the_second_version">For
             the second version</a>
           </h6>
@@ -133,7 +133,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.accumulate.complexity"></a><h6>
-<a name="id772110"></a>
+<a name="id751495"></a>
             <a class="link" href="accumulate.html#range.reference.algorithms.numeric.accumulate.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/numeric/adjacent_difference.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/numeric/adjacent_difference.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/numeric/adjacent_difference.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.numeric.adjacent_difference"></a><a class="link" href="adjacent_difference.html" title="adjacent_difference">adjacent_difference</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.numeric.adjacent_difference.prototype"></a><h6>
-<a name="id772177"></a>
+<a name="id751560"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.prototype">Prototype</a>
           </h6>
 <p>
@@ -54,7 +54,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.numeric.adjacent_difference.description"></a><h6>
-<a name="id772441"></a>
+<a name="id751824"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.description">Description</a>
           </h6>
 <p>
@@ -68,18 +68,18 @@
             instead of <code class="computeroutput"><span class="keyword">operator</span><span class="special">-()</span></code>.
           </p>
 <a name="range.reference.algorithms.numeric.adjacent_difference.definition"></a><h6>
-<a name="id772541"></a>
+<a name="id751925"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.numeric.adjacent_difference.requirements"></a><h6>
-<a name="id772603"></a>
+<a name="id751986"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.requirements">Requirements</a>
           </h6>
 <a name="range.reference.algorithms.numeric.adjacent_difference.for_the_first_version"></a><h6>
-<a name="id772624"></a>
+<a name="id752008"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.for_the_first_version">For
             the first version</a>
           </h6>
@@ -110,7 +110,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.adjacent_difference.for_the_second_version"></a><h6>
-<a name="id772832"></a>
+<a name="id752216"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.for_the_second_version">For
             the second version</a>
           </h6>
@@ -145,7 +145,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.adjacent_difference.precondition_"></a><h6>
-<a name="id773026"></a>
+<a name="id752409"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -153,7 +153,7 @@
             <span class="special">+</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng</span><span class="special">))</span></code> is a valid range.
           </p>
 <a name="range.reference.algorithms.numeric.adjacent_difference.complexity"></a><h6>
-<a name="id773099"></a>
+<a name="id752483"></a>
             <a class="link" href="adjacent_difference.html#range.reference.algorithms.numeric.adjacent_difference.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/numeric/inner_product.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/numeric/inner_product.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/numeric/inner_product.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.numeric.inner_product"></a><a class="link" href="inner_product.html" title="inner_product">inner_product</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.numeric.inner_product.prototype"></a><h6>
-<a name="id773200"></a>
+<a name="id752584"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.prototype">Prototype</a>
           </h6>
 <p>
@@ -53,7 +53,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.numeric.inner_product.description"></a><h6>
-<a name="id773562"></a>
+<a name="id752946"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.description">Description</a>
           </h6>
 <p>
@@ -66,18 +66,18 @@
             algorithm please see inner_product.
           </p>
 <a name="range.reference.algorithms.numeric.inner_product.definition"></a><h6>
-<a name="id773639"></a>
+<a name="id753022"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.numeric.inner_product.requirements"></a><h6>
-<a name="id773700"></a>
+<a name="id753084"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.requirements">Requirements</a>
           </h6>
 <a name="range.reference.algorithms.numeric.inner_product.for_the_first_version"></a><h6>
-<a name="id773721"></a>
+<a name="id753104"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.for_the_first_version">For
             the first version</a>
           </h6>
@@ -112,7 +112,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.inner_product.for_the_second_version"></a><h6>
-<a name="id773978"></a>
+<a name="id753362"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.for_the_second_version">For
             the second version</a>
           </h6>
@@ -161,14 +161,14 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.inner_product.precondition_"></a><h6>
-<a name="id774279"></a>
+<a name="id753663"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.precondition_">Precondition:</a>
           </h6>
 <p>
             <code class="computeroutput"><span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng2</span><span class="special">)</span> <span class="special">&gt;=</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng1</span><span class="special">)</span></code> is a valid range.
           </p>
 <a name="range.reference.algorithms.numeric.inner_product.complexity"></a><h6>
-<a name="id774351"></a>
+<a name="id753736"></a>
             <a class="link" href="inner_product.html#range.reference.algorithms.numeric.inner_product.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/numeric/partial_sum.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/numeric/partial_sum.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/numeric/partial_sum.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.numeric.partial_sum"></a><a class="link" href="partial_sum.html" title="partial_sum">partial_sum</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.numeric.partial_sum.prototype"></a><h6>
-<a name="id774417"></a>
+<a name="id753801"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.numeric.partial_sum.description"></a><h6>
-<a name="id774675"></a>
+<a name="id754058"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.description">Description</a>
           </h6>
 <p>
@@ -57,18 +57,18 @@
             in the same manner as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">partial_sum</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">end</span><span class="special">(</span><span class="identifier">rng</span><span class="special">),</span> <span class="identifier">out_it</span><span class="special">)</span></code>. See partial_sum.
           </p>
 <a name="range.reference.algorithms.numeric.partial_sum.definition"></a><h6>
-<a name="id774814"></a>
+<a name="id754198"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.numeric.partial_sum.requirements"></a><h6>
-<a name="id774876"></a>
+<a name="id754259"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.requirements">Requirements</a>
           </h6>
 <a name="range.reference.algorithms.numeric.partial_sum.for_the_first_version"></a><h6>
-<a name="id774896"></a>
+<a name="id754280"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.for_the_first_version">For
             the first version</a>
           </h6>
@@ -98,7 +98,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.partial_sum.for_the_second_version"></a><h6>
-<a name="id775103"></a>
+<a name="id754487"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.for_the_second_version">For
             the second version</a>
           </h6>
@@ -127,7 +127,7 @@
               </li>
 </ol></div>
 <a name="range.reference.algorithms.numeric.partial_sum.precondition_"></a><h6>
-<a name="id775268"></a>
+<a name="id754652"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -135,7 +135,7 @@
             <span class="special">+</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">rng</span><span class="special">))</span></code> is a valid range.
           </p>
 <a name="range.reference.algorithms.numeric.partial_sum.complexity"></a><h6>
-<a name="id775342"></a>
+<a name="id754726"></a>
             <a class="link" href="partial_sum.html#range.reference.algorithms.numeric.partial_sum.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/permutation/next_permutation.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/permutation/next_permutation.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/permutation/next_permutation.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.permutation.next_permutation"></a><a class="link" href="next_permutation.html" title="next_permutation">next_permutation</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.permutation.next_permutation.prototype"></a><h6>
-<a name="id763648"></a>
+<a name="id743032"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation.next_permutation.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.permutation.next_permutation.description"></a><h6>
-<a name="id763995"></a>
+<a name="id743378"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation.next_permutation.description">Description</a>
           </h6>
 <p>
@@ -66,14 +66,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.permutation.next_permutation.definition"></a><h6>
-<a name="id764093"></a>
+<a name="id743477"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation.next_permutation.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">permutation</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.permutation.next_permutation.requirements"></a><h6>
-<a name="id764164"></a>
+<a name="id743548"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation.next_permutation.requirements">Requirements</a>
           </h6>
 <p>
@@ -124,7 +124,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.permutation.next_permutation.complexity"></a><h6>
-<a name="id764412"></a>
+<a name="id743796"></a>
             <a class="link" href="next_permutation.html#range.reference.algorithms.permutation.next_permutation.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/permutation/prev_permutation.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/permutation/prev_permutation.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/permutation/prev_permutation.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.permutation.prev_permutation"></a><a class="link" href="prev_permutation.html" title="prev_permutation">prev_permutation</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.permutation.prev_permutation.prototype"></a><h6>
-<a name="id764488"></a>
+<a name="id743872"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation.prev_permutation.prototype">Prototype</a>
           </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.permutation.prev_permutation.description"></a><h6>
-<a name="id764835"></a>
+<a name="id744218"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation.prev_permutation.description">Description</a>
           </h6>
 <p>
@@ -66,14 +66,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.permutation.prev_permutation.definition"></a><h6>
-<a name="id764934"></a>
+<a name="id744318"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation.prev_permutation.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">permutation</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.permutation.prev_permutation.requirements"></a><h6>
-<a name="id765005"></a>
+<a name="id744389"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation.prev_permutation.requirements">Requirements</a>
           </h6>
 <p>
@@ -124,7 +124,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.permutation.prev_permutation.complexity"></a><h6>
-<a name="id765254"></a>
+<a name="id744638"></a>
             <a class="link" href="prev_permutation.html#range.reference.algorithms.permutation.prev_permutation.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/set/includes.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/set/includes.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/set/includes.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.set.includes"></a><a class="link" href="includes.html" title="includes">includes</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.set.includes.prototype"></a><h6>
-<a name="id753918"></a>
+<a name="id733300"></a>
             <a class="link" href="includes.html#range.reference.algorithms.set.includes.prototype">Prototype</a>
           </h6>
 <p>
@@ -47,7 +47,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.set.includes.description"></a><h6>
-<a name="id754197"></a>
+<a name="id733580"></a>
             <a class="link" href="includes.html#range.reference.algorithms.set.includes.description">Description</a>
           </h6>
 <p>
@@ -59,14 +59,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.set.includes.definition"></a><h6>
-<a name="id754291"></a>
+<a name="id733674"></a>
             <a class="link" href="includes.html#range.reference.algorithms.set.includes.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">set_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.set.includes.requirements"></a><h6>
-<a name="id754360"></a>
+<a name="id733743"></a>
             <a class="link" href="includes.html#range.reference.algorithms.set.includes.requirements">Requirements</a>
           </h6>
 <p>
@@ -144,7 +144,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.set.includes.precondition_"></a><h6>
-<a name="id754770"></a>
+<a name="id734152"></a>
             <a class="link" href="includes.html#range.reference.algorithms.set.includes.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -162,7 +162,7 @@
             according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.set.includes.complexity"></a><h6>
-<a name="id754883"></a>
+<a name="id734266"></a>
             <a class="link" href="includes.html#range.reference.algorithms.set.includes.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/set/set_difference.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/set/set_difference.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/set/set_difference.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.set.set_difference"></a><a class="link" href="set_difference.html" title="set_difference">set_difference</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.set.set_difference.prototype"></a><h6>
-<a name="id757410"></a>
+<a name="id736793"></a>
             <a class="link" href="set_difference.html#range.reference.algorithms.set.set_difference.prototype">Prototype</a>
           </h6>
 <p>
@@ -56,7 +56,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.set.set_difference.description"></a><h6>
-<a name="id757755"></a>
+<a name="id737139"></a>
             <a class="link" href="set_difference.html#range.reference.algorithms.set.set_difference.description">Description</a>
           </h6>
 <p>
@@ -70,14 +70,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.set.set_difference.definition"></a><h6>
-<a name="id757843"></a>
+<a name="id737226"></a>
             <a class="link" href="set_difference.html#range.reference.algorithms.set.set_difference.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">set_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.set.set_difference.requirements"></a><h6>
-<a name="id757914"></a>
+<a name="id737297"></a>
             <a class="link" href="set_difference.html#range.reference.algorithms.set.set_difference.requirements">Requirements</a>
           </h6>
 <p>
@@ -163,7 +163,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.set.set_difference.precondition_"></a><h6>
-<a name="id758380"></a>
+<a name="id737763"></a>
             <a class="link" href="set_difference.html#range.reference.algorithms.set.set_difference.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -181,7 +181,7 @@
             according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.set.set_difference.complexity"></a><h6>
-<a name="id758494"></a>
+<a name="id737877"></a>
             <a class="link" href="set_difference.html#range.reference.algorithms.set.set_difference.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/set/set_intersection.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/set/set_intersection.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/set/set_intersection.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.set.set_intersection"></a><a class="link" href="set_intersection.html" title="set_intersection">set_intersection</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.set.set_intersection.prototype"></a><h6>
-<a name="id756205"></a>
+<a name="id735588"></a>
             <a class="link" href="set_intersection.html#range.reference.algorithms.set.set_intersection.prototype">Prototype</a>
           </h6>
 <p>
@@ -56,7 +56,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.set.set_intersection.description"></a><h6>
-<a name="id756550"></a>
+<a name="id735934"></a>
             <a class="link" href="set_intersection.html#range.reference.algorithms.set.set_intersection.description">Description</a>
           </h6>
 <p>
@@ -70,14 +70,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.set.set_intersection.definition"></a><h6>
-<a name="id756638"></a>
+<a name="id736021"></a>
             <a class="link" href="set_intersection.html#range.reference.algorithms.set.set_intersection.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">set_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.set.set_intersection.requirements"></a><h6>
-<a name="id756708"></a>
+<a name="id736091"></a>
             <a class="link" href="set_intersection.html#range.reference.algorithms.set.set_intersection.requirements">Requirements</a>
           </h6>
 <p>
@@ -163,7 +163,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.set.set_intersection.precondition_"></a><h6>
-<a name="id757174"></a>
+<a name="id736557"></a>
             <a class="link" href="set_intersection.html#range.reference.algorithms.set.set_intersection.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -181,7 +181,7 @@
             according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.set.set_intersection.complexity"></a><h6>
-<a name="id757288"></a>
+<a name="id736671"></a>
             <a class="link" href="set_intersection.html#range.reference.algorithms.set.set_intersection.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/set/set_symmetric_difference.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/set/set_symmetric_difference.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/set/set_symmetric_difference.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.set.set_symmetric_difference"></a><a class="link" href="set_symmetric_difference.html" title="set_symmetric_difference">set_symmetric_difference</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.set.set_symmetric_difference.prototype"></a><h6>
-<a name="id758617"></a>
+<a name="id738000"></a>
             <a class="link" href="set_symmetric_difference.html#range.reference.algorithms.set.set_symmetric_difference.prototype">Prototype</a>
           </h6>
 <p>
@@ -58,7 +58,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.set.set_symmetric_difference.description"></a><h6>
-<a name="id758964"></a>
+<a name="id738347"></a>
             <a class="link" href="set_symmetric_difference.html#range.reference.algorithms.set.set_symmetric_difference.description">Description</a>
           </h6>
 <p>
@@ -74,14 +74,14 @@
             the predicate versions.
           </p>
 <a name="range.reference.algorithms.set.set_symmetric_difference.definition"></a><h6>
-<a name="id759051"></a>
+<a name="id738434"></a>
             <a class="link" href="set_symmetric_difference.html#range.reference.algorithms.set.set_symmetric_difference.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">set_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.set.set_symmetric_difference.requirements"></a><h6>
-<a name="id759121"></a>
+<a name="id738504"></a>
             <a class="link" href="set_symmetric_difference.html#range.reference.algorithms.set.set_symmetric_difference.requirements">Requirements</a>
           </h6>
 <p>
@@ -167,7 +167,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.set.set_symmetric_difference.precondition_"></a><h6>
-<a name="id759586"></a>
+<a name="id738968"></a>
             <a class="link" href="set_symmetric_difference.html#range.reference.algorithms.set.set_symmetric_difference.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -185,7 +185,7 @@
             according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.set.set_symmetric_difference.complexity"></a><h6>
-<a name="id759700"></a>
+<a name="id739082"></a>
             <a class="link" href="set_symmetric_difference.html#range.reference.algorithms.set.set_symmetric_difference.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/algorithms/set/set_union.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/algorithms/set/set_union.html (original)
+++ trunk/libs/range/doc/html/range/reference/algorithms/set/set_union.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.algorithms.set.set_union"></a><a class="link" href="set_union.html" title="set_union">set_union</a>
 </h5></div></div></div>
 <a name="range.reference.algorithms.set.set_union.prototype"></a><h6>
-<a name="id755005"></a>
+<a name="id734387"></a>
             <a class="link" href="set_union.html#range.reference.algorithms.set.set_union.prototype">Prototype</a>
           </h6>
 <p>
@@ -56,7 +56,7 @@
 <p>
           </p>
 <a name="range.reference.algorithms.set.set_union.description"></a><h6>
-<a name="id755350"></a>
+<a name="id734733"></a>
             <a class="link" href="set_union.html#range.reference.algorithms.set.set_union.description">Description</a>
           </h6>
 <p>
@@ -69,14 +69,14 @@
             in the predicate versions.
           </p>
 <a name="range.reference.algorithms.set.set_union.definition"></a><h6>
-<a name="id755434"></a>
+<a name="id734816"></a>
             <a class="link" href="set_union.html#range.reference.algorithms.set.set_union.definition">Definition</a>
           </h6>
 <p>
             Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">set_algorithm</span><span class="special">.</span><span class="identifier">hpp</span></code>
           </p>
 <a name="range.reference.algorithms.set.set_union.requirements"></a><h6>
-<a name="id755504"></a>
+<a name="id734887"></a>
             <a class="link" href="set_union.html#range.reference.algorithms.set.set_union.requirements">Requirements</a>
           </h6>
 <p>
@@ -162,7 +162,7 @@
               </li>
 </ul></div>
 <a name="range.reference.algorithms.set.set_union.precondition_"></a><h6>
-<a name="id755969"></a>
+<a name="id735352"></a>
             <a class="link" href="set_union.html#range.reference.algorithms.set.set_union.precondition_">Precondition:</a>
           </h6>
 <p>
@@ -180,7 +180,7 @@
             according to <code class="computeroutput"><span class="identifier">pred</span></code>.
           </p>
 <a name="range.reference.algorithms.set.set_union.complexity"></a><h6>
-<a name="id756082"></a>
+<a name="id735465"></a>
             <a class="link" href="set_union.html#range.reference.algorithms.set.set_union.complexity">Complexity</a>
           </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/concept_implementation/semantics.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/concept_implementation/semantics.html (original)
+++ trunk/libs/range/doc/html/range/reference/concept_implementation/semantics.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -31,7 +31,7 @@
 <dt><span class="section">Functions</span></dt>
 </dl></div>
 <a name="range.reference.concept_implementation.semantics.notation"></a><h6>
-<a name="id678218"></a>
+<a name="id654700"></a>
           <a class="link" href="semantics.html#range.reference.concept_implementation.semantics.notation">notation</a>
         </h6>
 <div class="informaltable"><table class="table">

Modified: trunk/libs/range/doc/html/range/reference/ranges.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/ranges.html (original)
+++ trunk/libs/range/doc/html/range/reference/ranges.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Range 2.0">
 <link rel="up" href="../reference.html" title="Reference">
 <link rel="prev" href="algorithms/numeric/partial_sum.html" title="partial_sum">
-<link rel="next" href="ranges/counting_range.html" title="counting_range">
+<link rel="next" href="ranges/any_range.html" title="any_range">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,13 +20,14 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="algorithms/numeric/partial_sum.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ranges/counting_range.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="algorithms/numeric/partial_sum.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ranges/any_range.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="range.reference.ranges"></a><a class="link" href="ranges.html" title="Provided Ranges">Provided Ranges</a>
 </h3></div></div></div>
 <div class="toc"><dl>
+<dt><span class="section">any_range</span></dt>
 <dt><span class="section">counting_range</span></dt>
 <dt><span class="section">istream_range</span></dt>
 <dt><span class="section">irange</span></dt>
@@ -42,7 +43,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="algorithms/numeric/partial_sum.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ranges/counting_range.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="algorithms/numeric/partial_sum.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ranges/any_range.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Added: trunk/libs/range/doc/html/range/reference/ranges/any_range.html
==============================================================================
--- (empty file)
+++ trunk/libs/range/doc/html/range/reference/ranges/any_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>any_range</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Range 2.0">
+<link rel="up" href="../ranges.html" title="Provided Ranges">
+<link rel="prev" href="../ranges.html" title="Provided Ranges">
+<link rel="next" href="counting_range.html" title="counting_range">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../ranges.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ranges.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="counting_range.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="range.reference.ranges.any_range"></a><a class="link" href="any_range.html" title="any_range">any_range</a>
+</h4></div></div></div>
+<a name="range.reference.ranges.any_range.description"></a><h6>
+<a name="id754843"></a>
+ <a class="link" href="any_range.html#range.reference.ranges.any_range.description">Description</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">any_range</span></code> is a range that
+ has the type information erased hence a <code class="computeroutput"><span class="identifier">any_range</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_pass_traversal_tag</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span><span class="special">&gt;</span></code>
+ can be used to represent a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>, a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code> or many other types.
+ </p>
+<p>
+ The <a href="http://www.artima.com/cppsource/type_erasure.html" target="_top">type
+ erasure article</a> covers the motivation and goals of type erasure
+ in this context. Clearly my implementation is building upon a lot of prior
+ art created by others. Thomas Becker's <code class="computeroutput"><span class="identifier">any_iterator</span></code>
+ was a strong influence. Adobe also have an <code class="computeroutput"><span class="identifier">any_iterator</span></code>
+ implementation, but this has very tight coupling to other parts of the
+ library that precluded it from use in Boost.Range. Early development versions
+ of this Range Adaptor directly used Thomas Becker's any_iterator implementation.
+ Subsequently I discovered that the heap allocations of this and many other
+ implementations cause poor speed performance particularly at the tails
+ of the distribution. To solve this required a new design that incorporated
+ the embedded buffer optimization.
+ </p>
+<p>
+ Despite the underlying <code class="computeroutput"><span class="identifier">any_iterator</span></code>
+ being the fastest available implementation, the performance overhead of
+ <code class="computeroutput"><span class="identifier">any_range</span></code> is still appreciable
+ due to the cost of virtual function calls required to implement <code class="computeroutput"><span class="identifier">increment</span></code>, <code class="computeroutput"><span class="identifier">decrement</span></code>,
+ <code class="computeroutput"><span class="identifier">advance</span></code>, <code class="computeroutput"><span class="identifier">equal</span></code> etc. Frequently a better design
+ choice is to convert to a canonical form.
+ </p>
+<p>
+ Please see the <a class="link" href="../adaptors/reference/type_erased.html" title="type_erased">type_erased</a>
+ for a Range Adaptor that returns <code class="computeroutput"><span class="identifier">any_range</span></code>
+ instances.
+ </p>
+<a name="range.reference.ranges.any_range.synopsis"></a><h6>
+<a name="id755211"></a>
+ <a class="link" href="any_range.html#range.reference.ranges.any_range.synopsis">Synopsis</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span>
+ <span class="keyword">class</span> <span class="identifier">Value</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traversal</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Reference</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Difference</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Buffer</span> <span class="special">=</span> <span class="identifier">any_iterator_default_buffer</span>
+<span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">any_range</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">iterator_range</span><span class="special">&lt;</span>
+ <span class="identifier">range_detail</span><span class="special">::</span><span class="identifier">any_iterator</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span>
+ <span class="special">,</span> <span class="identifier">Traversal</span>
+ <span class="special">,</span> <span class="identifier">Reference</span>
+ <span class="special">,</span> <span class="identifier">Difference</span>
+ <span class="special">,</span> <span class="identifier">Buffer</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">range_detail</span><span class="special">::</span><span class="identifier">any_iterator</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span>
+ <span class="special">,</span> <span class="identifier">Traversal</span>
+ <span class="special">,</span> <span class="identifier">Reference</span>
+ <span class="special">,</span> <span class="identifier">Difference</span>
+ <span class="special">,</span> <span class="identifier">Buffer</span>
+ <span class="special">&gt;</span> <span class="identifier">any_iterator_type</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">iterator_range</span><span class="special">&lt;</span><span class="identifier">any_iterator_type</span><span class="special">&gt;</span> <span class="identifier">base_type</span><span class="special">;</span>
+
+ <span class="keyword">struct</span> <span class="identifier">enabler</span> <span class="special">{};</span>
+ <span class="keyword">struct</span> <span class="identifier">disabler</span> <span class="special">{};</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">any_iterator_type</span> <span class="identifier">iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">any_iterator_type</span> <span class="identifier">const_iterator</span><span class="special">;</span>
+
+ <span class="identifier">any_range</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="identifier">any_range</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">any_range</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">other</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">WrappedRange</span><span class="special">&gt;</span>
+ <span class="identifier">any_range</span><span class="special">(</span><span class="identifier">WrappedRange</span><span class="special">&amp;</span> <span class="identifier">wrapped_range</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">wrapped_range</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">end</span><span class="special">(</span><span class="identifier">wrapped_range</span><span class="special">))</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">WrappedRange</span><span class="special">&gt;</span>
+ <span class="identifier">any_range</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">WrappedRange</span><span class="special">&amp;</span> <span class="identifier">wrapped_range</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">wrapped_range</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">end</span><span class="special">(</span><span class="identifier">wrapped_range</span><span class="special">))</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span>
+ <span class="keyword">class</span> <span class="identifier">OtherValue</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OtherTraversal</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OtherReference</span>
+ <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OtherDifference</span>
+ <span class="special">&gt;</span>
+ <span class="identifier">any_range</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">any_range</span><span class="special">&lt;</span>
+ <span class="identifier">OtherValue</span>
+ <span class="special">,</span> <span class="identifier">OtherTraversal</span>
+ <span class="special">,</span> <span class="identifier">OtherReference</span>
+ <span class="special">,</span> <span class="identifier">OtherDifference</span>
+ <span class="special">,</span> <span class="identifier">Buffer</span>
+ <span class="special">&gt;&amp;</span> <span class="identifier">other</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">other</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">end</span><span class="special">(</span><span class="identifier">other</span><span class="special">))</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
+ <span class="identifier">any_range</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<a name="range.reference.ranges.any_range.definition"></a><h6>
+<a name="id756420"></a>
+ <a class="link" href="any_range.html#range.reference.ranges.any_range.definition">Definition</a>
+ </h6>
+<p>
+ Defined in header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">any_range</span><span class="special">.</span><span class="identifier">hpp</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2003 -2010 Thorsten Ottosen, Neil Groves<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../ranges.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ranges.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="counting_range.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/range/doc/html/range/reference/ranges/counting_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/ranges/counting_range.html (original)
+++ trunk/libs/range/doc/html/range/reference/ranges/counting_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Range 2.0">
 <link rel="up" href="../ranges.html" title="Provided Ranges">
-<link rel="prev" href="../ranges.html" title="Provided Ranges">
+<link rel="prev" href="any_range.html" title="any_range">
 <link rel="next" href="istream_range.html" title="istream_range">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,14 +20,14 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../ranges.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ranges.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="istream_range.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="any_range.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ranges.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="istream_range.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="range.reference.ranges.counting_range"></a><a class="link" href="counting_range.html" title="counting_range">counting_range</a>
 </h4></div></div></div>
 <a name="range.reference.ranges.counting_range.prototype"></a><h6>
-<a name="id775459"></a>
+<a name="id756497"></a>
           <a class="link" href="counting_range.html#range.reference.ranges.counting_range.prototype">Prototype</a>
         </h6>
 <p>
@@ -48,7 +48,7 @@
 <p>
         </p>
 <a name="range.reference.ranges.counting_range.description"></a><h6>
-<a name="id775839"></a>
+<a name="id756879"></a>
           <a class="link" href="counting_range.html#range.reference.ranges.counting_range.description">Description</a>
         </h6>
 <p>
@@ -58,14 +58,14 @@
           (from Boost.Iterator).
         </p>
 <a name="range.reference.ranges.counting_range.definition"></a><h6>
-<a name="id775895"></a>
+<a name="id756935"></a>
           <a class="link" href="counting_range.html#range.reference.ranges.counting_range.definition">Definition</a>
         </h6>
 <p>
           Defined in header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">counting_range</span><span class="special">.</span><span class="identifier">hpp</span></code>
         </p>
 <a name="range.reference.ranges.counting_range.requirements"></a><h6>
-<a name="id775956"></a>
+<a name="id756996"></a>
           <a class="link" href="counting_range.html#range.reference.ranges.counting_range.requirements">Requirements</a>
         </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@@ -84,7 +84,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../ranges.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ranges.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="istream_range.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="any_range.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ranges.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="istream_range.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/range/doc/html/range/reference/ranges/irange.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/ranges/irange.html (original)
+++ trunk/libs/range/doc/html/range/reference/ranges/irange.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.ranges.irange"></a><a class="link" href="irange.html" title="irange">irange</a>
 </h4></div></div></div>
 <a name="range.reference.ranges.irange.prototype"></a><h6>
-<a name="id776386"></a>
+<a name="id757425"></a>
           <a class="link" href="irange.html#range.reference.ranges.irange.prototype">Prototype</a>
         </h6>
 <p>
@@ -44,7 +44,7 @@
 <p>
         </p>
 <a name="range.reference.ranges.irange.description"></a><h6>
-<a name="id776678"></a>
+<a name="id757718"></a>
           <a class="link" href="irange.html#range.reference.ranges.irange.description">Description</a>
         </h6>
 <p>
@@ -58,14 +58,14 @@
           parameters denoted a half-open range.
         </p>
 <a name="range.reference.ranges.irange.definition"></a><h6>
-<a name="id776757"></a>
+<a name="id757796"></a>
           <a class="link" href="irange.html#range.reference.ranges.irange.definition">Definition</a>
         </h6>
 <p>
           Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">irange</span><span class="special">.</span><span class="identifier">hpp</span></code>
         </p>
 <a name="range.reference.ranges.irange.requirements"></a><h6>
-<a name="id776817"></a>
+<a name="id757857"></a>
           <a class="link" href="irange.html#range.reference.ranges.irange.requirements">Requirements</a>
         </h6>
 <div class="orderedlist"><ol class="orderedlist" type="1">
@@ -80,7 +80,7 @@
             </li>
 </ol></div>
 <a name="range.reference.ranges.irange.complexity"></a><h6>
-<a name="id776900"></a>
+<a name="id757940"></a>
           <a class="link" href="irange.html#range.reference.ranges.irange.complexity">Complexity</a>
         </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/ranges/istream_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/ranges/istream_range.html (original)
+++ trunk/libs/range/doc/html/range/reference/ranges/istream_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -27,7 +27,7 @@
 <a name="range.reference.ranges.istream_range"></a><a class="link" href="istream_range.html" title="istream_range">istream_range</a>
 </h4></div></div></div>
 <a name="range.reference.ranges.istream_range.prototype"></a><h6>
-<a name="id776028"></a>
+<a name="id757067"></a>
           <a class="link" href="istream_range.html#range.reference.ranges.istream_range.prototype">Prototype</a>
         </h6>
 <p>
@@ -40,7 +40,7 @@
 <p>
         </p>
 <a name="range.reference.ranges.istream_range.description"></a><h6>
-<a name="id776244"></a>
+<a name="id757284"></a>
           <a class="link" href="istream_range.html#range.reference.ranges.istream_range.description">Description</a>
         </h6>
 <p>
@@ -49,7 +49,7 @@
           wrapping a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span></code>.
         </p>
 <a name="range.reference.ranges.istream_range.definition"></a><h6>
-<a name="id776308"></a>
+<a name="id757348"></a>
           <a class="link" href="istream_range.html#range.reference.ranges.istream_range.definition">Definition</a>
         </h6>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/utilities/iterator_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/utilities/iterator_range.html (original)
+++ trunk/libs/range/doc/html/range/reference/utilities/iterator_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -48,7 +48,7 @@
           type.
         </p>
 <a name="range.reference.utilities.iterator_range.synopsis"></a><h5>
-<a name="id777262"></a>
+<a name="id758301"></a>
           <a class="link" href="iterator_range.html#range.reference.utilities.iterator_range.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -188,7 +188,7 @@
           iterators from the same container.
         </p>
 <a name="range.reference.utilities.iterator_range.details_member_functions"></a><h5>
-<a name="id780468"></a>
+<a name="id761507"></a>
           <a class="link" href="iterator_range.html#range.reference.utilities.iterator_range.details_member_functions">Details
           member functions</a>
         </h5>
@@ -207,7 +207,7 @@
             <span class="special">==</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span></code>
           </p></blockquote></div>
 <a name="range.reference.utilities.iterator_range.details_functions"></a><h5>
-<a name="id780703"></a>
+<a name="id761741"></a>
           <a class="link" href="iterator_range.html#range.reference.utilities.iterator_range.details_functions">Details
           functions</a>
         </h5>

Modified: trunk/libs/range/doc/html/range/reference/utilities/join.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/utilities/join.html (original)
+++ trunk/libs/range/doc/html/range/reference/utilities/join.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -39,7 +39,7 @@
           check if the end of a range has been reached internally during traversal.
         </p>
 <a name="range.reference.utilities.join.synposis"></a><h5>
-<a name="id783099"></a>
+<a name="id764138"></a>
           <a class="link" href="join.html#range.reference.utilities.join.synposis">Synposis</a>
         </h5>
 <p>
@@ -108,7 +108,7 @@
             </li>
 </ul></div>
 <a name="range.reference.utilities.join.example"></a><h5>
-<a name="id783934"></a>
+<a name="id764973"></a>
           <a class="link" href="join.html#range.reference.utilities.join.example">Example</a>
         </h5>
 <p>

Modified: trunk/libs/range/doc/html/range/reference/utilities/sub_range.html
==============================================================================
--- trunk/libs/range/doc/html/range/reference/utilities/sub_range.html (original)
+++ trunk/libs/range/doc/html/range/reference/utilities/sub_range.html 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -35,7 +35,7 @@
           is.
         </p>
 <a name="range.reference.utilities.sub_range.synopsis"></a><h5>
-<a name="id781835"></a>
+<a name="id762873"></a>
           <a class="link" href="sub_range.html#range.reference.utilities.sub_range.synopsis">Synopsis</a>
         </h5>
 <p>

Modified: trunk/libs/range/doc/reference/adaptors.qbk
==============================================================================
--- trunk/libs/range/doc/reference/adaptors.qbk (original)
+++ trunk/libs/range/doc/reference/adaptors.qbk 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -177,6 +177,7 @@
 [include adaptors/reversed.qbk]
 [include adaptors/sliced.qbk]
 [include adaptors/strided.qbk]
+[include adaptors/type_erased.qbk]
 [include adaptors/tokenized.qbk]
 [include adaptors/transformed.qbk]
 [include adaptors/uniqued.qbk]

Added: trunk/libs/range/doc/reference/adaptors/type_erased.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/range/doc/reference/adaptors/type_erased.qbk 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,151 @@
+[/
+ 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:type_erased type_erased]
+
+[table
+ [[Syntax] [Code]]
+ [[Pipe] [`rng | boost::adaptors::type_erased<Value, Traversal, Reference, Difference, Buffer>()`]]
+ [[Function] [`boost::adaptors::type_erase(rng, boost::adaptors::type_erased<Value, Traversal, Reference, Difference, Buffer>)`]]
+]
+
+Please note that it is frequently unnecessary to use the `type_erased` adaptor. It is often better to use the implicit conversion to `any_range`.
+
+Let `Rng` be the type of `rng`.
+
+* [*Template parameters:]
+ * `Value` is the `value_type` for the `any_range`. If this is set to boost::use_default, `Value` will be calculated from the
+ range type when the adaptor is applied.
+ * `Traversal` is the tag used to identify the traversal of the resultant range. Frequently it is desireable to set a traversal category lower than the source container or range to maximize the number of ranges that can convert to the `any_range`. If this is left as boost::use_default then `Traversal` will be `typename boost::iterator_traversal<boost::range_iterator<Rng>::type>::type`
+ * `Reference` is the `reference` for the `any_range`. `boost::use_default` will equate to `typename range_reference<Rng>::type`.
+ * `Difference` is the `difference_type` for the any_range. `boost::use_default` will equate to `typename boost::range_difference<Rng>::type`
+ * `Buffer` is the storage used to allocate the underlying iterator wrappers. This can typically be ignored, but is available as a template parameter for customization. Buffer must be a model of the `AnyIteratorBufferConcept`.
+* [*Precondition:] `Traversal` is one of `{ boost::use_default, boost::single_pass_traversal_tag, boost::forward_traversal_tag, boost::bidirectional_traversal_tag, boost::random_access_traversal_tag }`
+* [*Returns:] The returned value is the same as `typename any_range_type_generator< Rng, Value, Traversal, Reference, Difference, Buffer >` that represents `rng` in a type-erased manner.
+* [*Range Category:] __single_pass_range__
+* [*Returned Range Category:] if `Traversal` was specified as `boost::use_default` then `typename boost::iterator_traversal<boost::range_iterator<Rng>::type>::type`, otherwise `Traversal`.
+
+[heading AnyIteratorBufferConcept]
+``
+class AnyIteratorBufferConcept
+{
+public:
+ AnyIteratorBufferConcept();
+ ~AnyIteratorBufferConcept();
+
+ // bytes is the requested size to allocate. This function
+ // must return a pointer to an adequate area of memory.
+ // throws: bad_alloc
+ //
+ // The buffer will only ever have zero or one
+ // outstanding memory allocations.
+ void* allocate(std::size_t bytes);
+
+ // deallocate this buffer
+ void deallocate();
+};
+``
+
+[section:type_erased_example type-erased example]
+``
+#include <boost/range/adaptor/type_erased.hpp>
+#include <boost/range/algorithm/copy.hpp>
+#include <boost/assign.hpp>
+#include <boost/foreach.hpp>
+#include <algorithm>
+#include <iostream>
+#include <list>
+#include <vector>
+
+// The client interface from an OO perspective merely requires a sequence
+// of integers that can be forward traversed
+typedef boost::any_range<
+ int
+ , boost::forward_traversal_tag
+ , int
+ , std::ptrdiff_t
+> integer_range;
+
+namespace server
+{
+ void display_integers(const integer_range& rng)
+ {
+ boost::copy(rng,
+ std::ostream_iterator<int>(std::cout, ","));
+
+ std::cout << std::endl;
+ }
+}
+
+namespace client
+{
+ void run()
+ {
+ using namespace boost::assign;
+ using namespace boost::adaptors;
+
+ // Under most conditions one would simply use an appropriate
+ // any_range as a function parameter. The type_erased adaptor
+ // is often superfluous. However because the type_erased
+ // adaptor is applied to a range, we can use default template
+ // arguments that are generated in conjunction with the
+ // range type to which we are applying the adaptor.
+
+ std::vector<int> input;
+ input += 1,2,3,4,5;
+
+ // Note that this call is to a non-template function
+ server::display_integers(input);
+
+ std::list<int> input2;
+ input2 += 6,7,8,9,10;
+
+ // Note that this call is to the same non-tempate function
+ server::display_integers(input2);
+
+ input2.clear();
+ input2 += 11,12,13,14,15;
+
+ // Calling using the adaptor looks like this:
+ // Notice that here I have a type_erased that would be a
+ // bidirectional_traversal_tag, but this is convertible
+ // to the forward_traversal_tag equivalent hence this
+ // works.
+ server::display_integers(input2 | type_erased<>());
+
+ // However we may simply wish to define an adaptor that
+ // takes a range and makes it into an appropriate
+ // forward_traversal any_range...
+ typedef boost::adaptors::type_erased<
+ boost::use_default
+ , boost::forward_traversal_tag
+ > type_erased_forward;
+
+ // This adaptor can turn other containers with different
+ // value_types and reference_types into the appropriate
+ // any_range.
+
+ server::display_integers(input2 | type_erased_forward());
+ }
+}
+
+int main(int argc, const char* argv[])
+{
+ client::run();
+ return 0;
+}
+``
+[endsect]
+
+This would produce the output:
+``
+1,2,3,4,5
+6,7,8,9,10
+11,12,13,14,15
+11,12,13,14,15
+``
+[endsect]
+
+

Modified: trunk/libs/range/doc/reference/ranges.qbk
==============================================================================
--- trunk/libs/range/doc/reference/ranges.qbk (original)
+++ trunk/libs/range/doc/reference/ranges.qbk 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -5,6 +5,7 @@
 /]
 [section:ranges Provided Ranges]
 
+[include ranges/any_range.qbk]
 [include ranges/counting_range.qbk]
 [include ranges/istream_range.qbk]
 [include ranges/irange.qbk]

Added: trunk/libs/range/doc/reference/ranges/any_range.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/range/doc/reference/ranges/any_range.qbk 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,115 @@
+[/
+ 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:any_range any_range]
+
+[heading Description]
+
+`any_range` is a range that has the type information erased hence a `any_range<int, boost::forward_pass_traversal_tag, int, std::ptrdiff_t>`
+can be used to represent a `std::vector<int>`, a `std::list<int>` or many other types.
+
+The __type_erasure_article__ covers the motivation and goals of type erasure in this context. Clearly
+my implementation is building upon a lot of prior art created by others. Thomas Becker's `any_iterator` was a strong
+influence. Adobe also have an `any_iterator` implementation, but this has very tight coupling to other parts of the
+library that precluded it from use in Boost.Range.
+Early development versions of this Range Adaptor directly used Thomas Becker's any_iterator implementation.
+Subsequently I discovered that the heap allocations of this and many other implementations cause poor
+speed performance particularly at the tails of the distribution. To solve this required a new design that
+incorporated the embedded buffer optimization.
+
+Despite the underlying `any_iterator` being the fastest available implementation, the performance overhead of `any_range` is still appreciable due to the cost of virtual function calls required to implement `increment`, `decrement`, `advance`, `equal` etc. Frequently a better design choice is to convert to a canonical form.
+
+Please see the __range_adaptors_type_erased__ for a Range Adaptor that returns `any_range` instances.
+
+[heading Synopsis]
+
+``
+template<
+ class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ , class Buffer = any_iterator_default_buffer
+>
+class any_range
+ : public iterator_range<
+ range_detail::any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ >
+ >
+{
+ typedef range_detail::any_iterator<
+ Value
+ , Traversal
+ , Reference
+ , Difference
+ , Buffer
+ > any_iterator_type;
+
+ typedef iterator_range<any_iterator_type> base_type;
+
+ struct enabler {};
+ struct disabler {};
+public:
+ typedef any_iterator_type iterator;
+ typedef any_iterator_type const_iterator;
+
+ any_range()
+ {
+ }
+
+ any_range(const any_range& other)
+ : base_type(other)
+ {
+ }
+
+ template<class WrappedRange>
+ any_range(WrappedRange& wrapped_range)
+ : base_type(boost::begin(wrapped_range),
+ boost::end(wrapped_range))
+ {
+ }
+
+ template<class WrappedRange>
+ any_range(const WrappedRange& wrapped_range)
+ : base_type(boost::begin(wrapped_range),
+ boost::end(wrapped_range))
+ {
+ }
+
+ template<
+ class OtherValue
+ , class OtherTraversal
+ , class OtherReference
+ , class OtherDifference
+ >
+ any_range(const any_range<
+ OtherValue
+ , OtherTraversal
+ , OtherReference
+ , OtherDifference
+ , Buffer
+ >& other)
+ : base_type(boost::begin(other), boost::end(other))
+ {
+ }
+
+ template<class Iterator>
+ any_range(Iterator first, Iterator last)
+ : base_type(first, last)
+ {
+ }
+};
+``
+
+[heading Definition]
+
+Defined in header file `boost/range/any_range.hpp`
+
+[endsect]

Modified: trunk/libs/range/test/Jamfile.v2
==============================================================================
--- trunk/libs/range/test/Jamfile.v2 (original)
+++ trunk/libs/range/test/Jamfile.v2 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -59,6 +59,8 @@
         [ range-test adaptor_test/sliced_example ]
         [ range-test adaptor_test/strided_example ]
         [ range-test adaptor_test/transformed_example ]
+ [ range-test adaptor_test/type_erased ]
+ [ range-test adaptor_test/type_erased_example ]
         [ range-test adaptor_test/uniqued_example ]
         [ range-test algorithm_test/adjacent_find ]
         [ range-test algorithm_test/binary_search ]
@@ -131,11 +133,13 @@
         [ range-test algorithm_example ]
         [ range-test array ]
 # [ range-test atl : <include>$(VC71_ROOT)/atlmfc/include ]
+ [ range-test begin ]
         [ range-test combine ]
         [ range-test compat2 ]
         [ range-test compat3 ]
         [ range-test const_ranges ]
         [ range-test counting_range ]
+ [ range-test end ]
         [ range-test extension_mechanism ]
         [ range-test extension_size ]
         [ range-test has_range_iterator ]

Added: trunk/libs/range/test/adaptor_test/type_erased.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/range/test/adaptor_test/type_erased.cpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,487 @@
+// 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)
+//
+#include <boost/range/adaptor/type_erased.hpp>
+
+#include <boost/test/test_tools.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <boost/range/algorithm_ext.hpp>
+#include <boost/range/algorithm/fill.hpp>
+#include <boost/assign.hpp>
+#include <boost/array.hpp>
+
+#include <algorithm>
+#include <list>
+#include <set>
+#include <vector>
+
+namespace boost_range_adaptor_type_erased_test
+{
+ namespace
+ {
+ class MockType
+ {
+ public:
+ explicit MockType(int x)
+ : m_x(x) {}
+
+ int get() const { return m_x; }
+
+ bool operator==(const MockType& other) const
+ {
+ return m_x == other.m_x;
+ }
+
+ bool operator!=(const MockType& other) const
+ {
+ return m_x != other.m_x;
+ }
+
+ private:
+ int m_x;
+ };
+
+ std::ostream& operator<<(std::ostream& out, const MockType& obj)
+ {
+ out << obj.get();
+ return out;
+ }
+
+ template<class Container>
+ void test_type_erased_impl(Container& c)
+ {
+ using namespace boost::adaptors;
+ typedef typename boost::range_value<Container>::type value_type;
+ typedef typename boost::adaptors::type_erased<> type_erased_t;
+
+
+ std::vector<value_type> output;
+
+ boost::push_back(output, boost::adaptors::type_erase(c, type_erased_t()));
+
+ BOOST_CHECK_EQUAL_COLLECTIONS( output.begin(), output.end(),
+ c.begin(), c.end() );
+
+ output.clear();
+ boost::push_back(output, c | type_erased_t());
+
+ BOOST_CHECK_EQUAL_COLLECTIONS( output.begin(), output.end(),
+ c.begin(), c.end() );
+ }
+
+ template<class Container>
+ void test_const_and_mutable(Container& c)
+ {
+ test_type_erased_impl(c);
+
+ const Container& const_c = c;
+ test_type_erased_impl(const_c);
+ }
+
+ template<class Container>
+ void test_driver()
+ {
+ using namespace boost::assign;
+
+ typedef typename boost::range_value<Container>::type value_type;
+
+ Container c;
+ test_const_and_mutable(c);
+
+ c += value_type(1);
+ test_const_and_mutable(c);
+
+ c += value_type(2);
+ test_const_and_mutable(c);
+ }
+
+ void test_type_erased()
+ {
+ test_driver< std::list<int> >();
+ test_driver< std::vector<int> >();
+
+ test_driver< std::list<MockType> >();
+ test_driver< std::vector<MockType> >();
+ }
+
+ template<
+ class Traversal
+ , class Container
+ >
+ void test_writeable(Container&, boost::single_pass_traversal_tag)
+ {}
+
+ template<
+ class Traversal
+ , class Container
+ >
+ void test_writeable(Container& source, boost::forward_traversal_tag)
+ {
+ using namespace boost::adaptors;
+
+ typedef typename boost::range_value<Container>::type value_type;
+ typedef typename boost::range_difference<Container>::type difference_type;
+ typedef typename boost::range_reference<Container>::type mutable_reference_type;
+ typedef boost::any_range<
+ value_type
+ , Traversal
+ , mutable_reference_type
+ , difference_type
+ > mutable_any_range;
+
+ mutable_any_range r = source | boost::adaptors::type_erased<>();
+ std::vector<value_type> output_test;
+ boost::fill(r, value_type(1));
+ BOOST_CHECK_EQUAL( boost::distance(r), boost::distance(source) );
+ std::vector<value_type> reference_output(source.size(), value_type(1));
+ BOOST_CHECK_EQUAL_COLLECTIONS( reference_output.begin(), reference_output.end(),
+ r.begin(), r.end() );
+
+ }
+
+ template<
+ class Container
+ , class Traversal
+ , class Buffer
+ >
+ void test_type_erased_impl()
+ {
+ using namespace boost::adaptors;
+
+ typedef Buffer buffer_type;
+
+ typedef typename boost::range_value<Container>::type value_type;
+
+ typedef typename boost::any_range_type_generator<
+ Container
+ , boost::use_default
+ , Traversal
+ , boost::use_default
+ , boost::use_default
+ , Buffer
+ >::type mutable_any_range;
+
+ typedef typename boost::any_range_type_generator<
+ const Container
+ , boost::use_default
+ , Traversal
+ , boost::use_default
+ , boost::use_default
+ , Buffer
+ >::type const_any_range;
+
+ typedef boost::adaptors::type_erased<
+ boost::use_default
+ , Traversal
+ , boost::use_default
+ , boost::use_default
+ , Buffer
+ > type_erased_t;
+
+ type_erased_t type_erased_ex;
+
+ Container source;
+ for (int i = 0; i < 100; ++i)
+ source.push_back(value_type(i));
+
+ mutable_any_range r(source);
+ BOOST_CHECK_EQUAL_COLLECTIONS( source.begin(), source.end(),
+ r.begin(), r.end() );
+
+ r = mutable_any_range();
+ BOOST_CHECK_EQUAL( r.empty(), true );
+
+ r = source | type_erased_ex;
+ BOOST_CHECK_EQUAL_COLLECTIONS( source.begin(), source.end(),
+ r.begin(), r.end() );
+ r = mutable_any_range();
+
+ r = boost::adaptors::type_erase(source, type_erased_ex);
+ BOOST_CHECK_EQUAL_COLLECTIONS( source.begin(), source.end(),
+ r.begin(), r.end() );
+ r = mutable_any_range();
+
+ test_writeable<Traversal>(source, Traversal());
+
+ // convert and construct a const any_range from a mutable source
+ // range
+ const_any_range cr(source);
+ BOOST_CHECK_EQUAL_COLLECTIONS( source.begin(), source.end(),
+ cr.begin(), cr.end() );
+ // assign an empty range and ensure that this correctly results
+ // in an empty range. This is important for the validity of
+ // the rest of the tests.
+ cr = const_any_range();
+ BOOST_CHECK_EQUAL( cr.empty(), true );
+
+ // Test the pipe type_erased adaptor from a constant source
+ // range to a constant any_range
+ const Container& const_source = source;
+ cr = const_any_range();
+ cr = const_source | type_erased_ex;
+ BOOST_CHECK_EQUAL_COLLECTIONS( const_source.begin(), const_source.end(),
+ cr.begin(), cr.end() );
+
+ // Test the pipe type erased adaptor from a mutable source
+ // range to a constant any_range
+ cr = const_any_range();
+ cr = source | type_erased_ex;
+ BOOST_CHECK_EQUAL_COLLECTIONS( source.begin(), source.end(),
+ cr.begin(), cr.end() );
+
+ // Use the function form of the type_erase adaptor from a constant
+ // source range
+ cr = const_any_range();
+ cr = boost::adaptors::type_erase(const_source, type_erased_ex);
+ BOOST_CHECK_EQUAL_COLLECTIONS( const_source.begin(), const_source.end(),
+ cr.begin(), cr.end() );
+
+ // Assignment from mutable to const...
+ cr = const_any_range();
+ cr = r;
+ BOOST_CHECK_EQUAL_COLLECTIONS( cr.begin(), cr.end(),
+ r.begin(), r.end() );
+
+ // Converting copy from mutable to const...
+ cr = const_any_range();
+ cr = const_any_range(r);
+ BOOST_CHECK_EQUAL_COLLECTIONS( cr.begin(), cr.end(),
+ r.begin(), r.end() );
+ }
+
+ template<
+ class Container
+ , class Traversal
+ , class Buffer
+ >
+ class test_type_erased_impl_fn
+ {
+ public:
+ typedef void result_type;
+ void operator()()
+ {
+ test_type_erased_impl< Container, Traversal, Buffer >();
+ }
+ };
+
+ template<
+ class Container
+ , class Traversal
+ >
+ void test_type_erased_exercise_buffer_types()
+ {
+ using boost::any_iterator_default_buffer;
+ using boost::any_iterator_buffer;
+ using boost::any_iterator_heap_only_buffer;
+ using boost::any_iterator_stack_only_buffer;
+
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_default_buffer >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_heap_only_buffer >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<1> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<2> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<4> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<8> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<16> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<32> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<64> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<128> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<4096> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_buffer<16384> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_stack_only_buffer<128> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_stack_only_buffer<4096> >()();
+ test_type_erased_impl_fn< Container, Traversal, any_iterator_stack_only_buffer<16384> >()();
+ }
+
+ void test_type_erased_single_pass()
+ {
+ test_type_erased_exercise_buffer_types< std::list<int>, boost::single_pass_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::deque<int>, boost::single_pass_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<int>, boost::single_pass_traversal_tag >();
+
+ test_type_erased_exercise_buffer_types< std::list<MockType>, boost::single_pass_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::deque<MockType>, boost::single_pass_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<MockType>, boost::single_pass_traversal_tag >();
+ }
+
+ void test_type_erased_forward()
+ {
+ test_type_erased_exercise_buffer_types< std::list<int>, boost::forward_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::deque<int>, boost::forward_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<int>, boost::forward_traversal_tag >();
+
+ test_type_erased_exercise_buffer_types< std::list<MockType>, boost::forward_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::deque<MockType>, boost::forward_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<MockType>, boost::forward_traversal_tag >();
+ }
+
+ void test_type_erased_bidirectional()
+ {
+ test_type_erased_exercise_buffer_types< std::list<int>, boost::bidirectional_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::deque<int>, boost::bidirectional_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<int>, boost::bidirectional_traversal_tag >();
+
+ test_type_erased_exercise_buffer_types< std::list<MockType>, boost::bidirectional_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::deque<MockType>, boost::bidirectional_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<MockType>, boost::bidirectional_traversal_tag >();
+ }
+
+ void test_type_erased_random_access()
+ {
+ test_type_erased_exercise_buffer_types< std::deque<int>, boost::random_access_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<int>, boost::random_access_traversal_tag >();
+
+ test_type_erased_exercise_buffer_types< std::deque<MockType>, boost::random_access_traversal_tag >();
+ test_type_erased_exercise_buffer_types< std::vector<MockType>, boost::random_access_traversal_tag >();
+ }
+
+ void test_type_erased_multiple_different_template_parameter_conversion()
+ {
+ typedef boost::any_range<
+ int
+ , boost::random_access_traversal_tag
+ , int&
+ , std::ptrdiff_t
+ > source_range_type;
+
+ typedef boost::any_range<
+ int
+ , boost::single_pass_traversal_tag
+ , const int&
+ , std::ptrdiff_t
+ > target_range_type;
+
+ source_range_type source;
+
+ // Converting via construction
+ target_range_type t1(source);
+
+ // Converting via assignment
+ target_range_type t2;
+ t2 = source;
+
+ // Converting via construction to a type with a reference type
+ // that is a value
+ typedef boost::any_range<
+ int
+ , boost::single_pass_traversal_tag
+ , int
+ , std::ptrdiff_t
+ > target_range2_type;
+
+ target_range2_type t3(source);
+ target_range2_type t4;
+ t4 = source;
+ }
+
+ template<
+ class Traversal
+ , class ValueType
+ , class SourceValueType
+ , class SourceReference
+ , class TargetValueType
+ , class TargetReference
+ >
+ void test_type_erased_mix_values_impl()
+ {
+ typedef std::vector< ValueType > Container;
+
+ typedef typename boost::any_range_type_generator<
+ Container
+ , SourceValueType
+ , Traversal
+ , SourceReference
+ >::type source_type;
+
+ typedef typename boost::any_range_type_generator<
+ Container
+ , TargetValueType
+ , Traversal
+ , TargetReference
+ >::type target_type;
+
+ Container test_data;
+ for (int i = 0; i < 10; ++i)
+ test_data.push_back(i);
+
+ const source_type source_data(test_data);
+ target_type t1(source_data);
+ BOOST_CHECK_EQUAL_COLLECTIONS( source_data.begin(), source_data.end(),
+ t1.begin(), t1.end() );
+
+ target_type t2;
+ t2 = source_data;
+ BOOST_CHECK_EQUAL_COLLECTIONS( source_data.begin(), source_data.end(),
+ t2.begin(), t2.end() );
+ }
+
+ class MockInt
+ {
+ public:
+ MockInt() : m_value() {}
+ MockInt(int x) : m_value(x) {}
+ operator int() const { return m_value; }
+ private:
+ int m_value;
+ };
+
+
+ template<class Traversal>
+ void test_type_erased_mix_values_driver()
+ {
+ test_type_erased_mix_values_impl< Traversal, int, char, const int&, short, const int& >();
+ test_type_erased_mix_values_impl< Traversal, int, int*, const int&, char, const int& >();
+ test_type_erased_mix_values_impl< Traversal, MockInt, char, const MockInt&, short, const MockInt& >();
+
+ // In fact value type should have no effect in the eligibility
+ // for conversion, hence we should be able to convert it
+ // completely backwards!
+ test_type_erased_mix_values_impl< Traversal, int, short, const int&, char, const int& >();
+ test_type_erased_mix_values_impl< Traversal, int, char, const int&, int*, const int& >();
+ }
+
+ void test_type_erased_mix_values()
+ {
+ test_type_erased_mix_values_driver< boost::single_pass_traversal_tag >();
+ test_type_erased_mix_values_driver< boost::forward_traversal_tag >();
+ test_type_erased_mix_values_driver< boost::bidirectional_traversal_tag >();
+ test_type_erased_mix_values_driver< boost::random_access_traversal_tag >();
+ }
+
+ void test_type_erased_operator_brackets()
+ {
+ typedef boost::adaptors::type_erased<> type_erased_t;
+
+ std::vector<int> c;
+ for (int i = 0; i < 10; ++i)
+ c.push_back(i);
+
+ for (int i = 0; i < 10; ++i)
+ {
+ BOOST_CHECK_EQUAL( (c | type_erased_t())[i], i );
+ }
+ }
+ }
+}
+
+boost::unit_test::test_suite*
+init_unit_test_suite(int argc, char* argv[])
+{
+ boost::unit_test::test_suite* test
+ = BOOST_TEST_SUITE( "RangeTestSuite.adaptor.type_erased" );
+
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_single_pass ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_forward ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_bidirectional ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_random_access ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_multiple_different_template_parameter_conversion ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_mix_values ) );
+ test->add( BOOST_TEST_CASE( &boost_range_adaptor_type_erased_test::test_type_erased_operator_brackets ) );
+
+ return test;
+}

Added: trunk/libs/range/test/adaptor_test/type_erased_example.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/range/test/adaptor_test/type_erased_example.cpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,115 @@
+// 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 <boost/range/adaptor/type_erased.hpp>
+#include <boost/range/algorithm/copy.hpp>
+#include <boost/assign.hpp>
+#include <boost/foreach.hpp>
+#include <algorithm>
+#include <iostream>
+#include <list>
+#include <vector>
+
+#include <boost/test/test_tools.hpp>
+#include <boost/test/unit_test.hpp>
+
+namespace
+{
+ namespace boost_range_test
+ {
+ namespace type_erased_example
+ {
+
+// The client interface from an OO perspective merely requires a sequence
+// of integers that can be forward traversed
+typedef boost::any_range<
+ int
+ , boost::forward_traversal_tag
+ , int
+ , std::ptrdiff_t
+> integer_range;
+
+namespace server
+{
+ void display_integers(const integer_range& rng)
+ {
+ boost::copy(rng,
+ std::ostream_iterator<int>(std::cout, ","));
+
+ std::cout << std::endl;
+ }
+}
+
+namespace client
+{
+ void run()
+ {
+ using namespace boost::assign;
+ using namespace boost::adaptors;
+
+ // Under most conditions one would simply use an appropriate
+ // any_range as a function parameter. The type_erased adaptor
+ // is often superfluous. However because the type_erased
+ // adaptor is applied to a range, we can use default template
+ // arguments that are generated in conjunction with the
+ // range type to which we are applying the adaptor.
+
+ std::vector<int> input;
+ input += 1,2,3,4,5;
+
+ // Note that this call is to a non-template function
+ server::display_integers(input);
+
+ std::list<int> input2;
+ input2 += 6,7,8,9,10;
+
+ // Note that this call is to the same non-tempate function
+ server::display_integers(input2);
+
+ input2.clear();
+ input2 += 11,12,13,14,15;
+
+ // Calling using the adaptor looks like this:
+ // Notice that here I have a type_erased that would be a
+ // bidirectional_traversal_tag, but this is convertible
+ // to the forward_traversal_tag equivalent hence this
+ // works.
+ server::display_integers(input2 | type_erased<>());
+
+ // However we may simply wish to define an adaptor that
+ // takes a range and makes it into an appropriate
+ // forward_traversal any_range...
+ typedef boost::adaptors::type_erased<
+ boost::use_default
+ , boost::forward_traversal_tag
+ > type_erased_forward;
+
+ // This adaptor can turn other containers with different
+ // value_types and reference_types into the appropriate
+ // any_range.
+
+ server::display_integers(input2 | type_erased_forward());
+ }
+}
+
+ } // namespace type_erased_example
+ } // namespace boost_range_test
+} // anonymous namespace
+
+boost::unit_test::test_suite*
+init_unit_test_suite(int argc, char* argv[])
+{
+ boost::unit_test::test_suite* test
+ = BOOST_TEST_SUITE( "RangeTestSuite.adaptor.type_erased_example" );
+
+ test->add( BOOST_TEST_CASE( &boost_range_test::type_erased_example::client::run) );
+
+ return test;
+}

Added: trunk/libs/range/test/begin.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/range/test/begin.cpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,119 @@
+// 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 <boost/detail/workaround.hpp>
+
+#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 <boost/range/begin.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+#include <boost/test/included/unit_test_framework.hpp>
+
+namespace mock_std
+{
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME boost::range_iterator<SinglePassRange>::type
+ begin(SinglePassRange& rng)
+ {
+ return rng.begin();
+ }
+
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME boost::range_iterator<const SinglePassRange>::type
+ begin(const SinglePassRange& rng)
+ {
+ return rng.begin();
+ }
+
+ template<class SinglePassRange>
+ void mock_algorithm_using_begin(const SinglePassRange& rng)
+ {
+ BOOST_CHECK( begin(rng) == rng.begin() );
+ }
+
+ template<class SinglePassRange>
+ void mock_algorithm_using_begin(SinglePassRange& rng)
+ {
+ BOOST_CHECK( begin(rng) == rng.begin() );
+ }
+}
+
+namespace boost
+{
+#ifdef BOOST_RANGE_SIMULATE_BEGIN_WITHOUT_ADL_NAMESPACE_BARRIER
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
+ begin(SinglePassRange& rng)
+ {
+ return rng.begin();
+ }
+
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type
+ begin(const SinglePassRange& rng)
+ {
+ return rng.begin();
+ }
+#endif
+
+ class MockTestBeginCollection
+ {
+ public:
+ typedef char value_type;
+ typedef const char* const_pointer;
+ typedef char* pointer;
+ typedef const_pointer const_iterator;
+ typedef pointer iterator;
+
+ MockTestBeginCollection()
+ : m_first()
+ , m_last()
+ {
+ }
+
+ const_iterator begin() const { return m_first; }
+ iterator begin() { return m_first; }
+ const_iterator end() const { return m_last; }
+ iterator end() { return m_last; }
+
+ private:
+ iterator m_first;
+ iterator m_last;
+ };
+}
+
+namespace
+{
+ void test_range_begin()
+ {
+ boost::MockTestBeginCollection c;
+ const boost::MockTestBeginCollection& const_c = c;
+ mock_std::mock_algorithm_using_begin(const_c);
+ mock_std::mock_algorithm_using_begin(c);
+ }
+}
+
+using boost::unit_test_framework::test_suite;
+
+boost::unit_test_framework::test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ boost::unit_test_framework::test_suite* test = BOOST_TEST_SUITE( "Range Test Suite - begin() ADL namespace barrier" );
+
+ test->add( BOOST_TEST_CASE( &test_range_begin ) );
+
+ return test;
+}
+
+

Added: trunk/libs/range/test/end.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/range/test/end.cpp 2011-01-01 11:46:32 EST (Sat, 01 Jan 2011)
@@ -0,0 +1,119 @@
+// 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 <boost/detail/workaround.hpp>
+
+#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 <boost/range/end.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+#include <boost/test/included/unit_test_framework.hpp>
+
+namespace mock_std
+{
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME boost::range_iterator<SinglePassRange>::type
+ end(SinglePassRange& rng)
+ {
+ return rng.end();
+ }
+
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME boost::range_iterator<const SinglePassRange>::type
+ end(const SinglePassRange& rng)
+ {
+ return rng.end();
+ }
+
+ template<class SinglePassRange>
+ void mock_algorithm_using_end(const SinglePassRange& rng)
+ {
+ BOOST_CHECK( end(rng) == rng.end() );
+ }
+
+ template<class SinglePassRange>
+ void mock_algorithm_using_end(SinglePassRange& rng)
+ {
+ BOOST_CHECK( end(rng) == rng.end() );
+ }
+}
+
+namespace boost
+{
+#ifdef BOOST_RANGE_SIMULATE_END_WITHOUT_ADL_NAMESPACE_BARRIER
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type
+ end(SinglePassRange& rng)
+ {
+ return rng.end();
+ }
+
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const SinglePassRange>::type
+ end(const SinglePassRange& rng)
+ {
+ return rng.end();
+ }
+#endif
+
+ class MockTestEndCollection
+ {
+ public:
+ typedef char value_type;
+ typedef const char* const_pointer;
+ typedef char* pointer;
+ typedef const_pointer const_iterator;
+ typedef pointer iterator;
+
+ MockTestEndCollection()
+ : m_first()
+ , m_last()
+ {
+ }
+
+ const_iterator begin() const { return m_first; }
+ iterator begin() { return m_first; }
+ const_iterator end() const { return m_last; }
+ iterator end() { return m_last; }
+
+ private:
+ iterator m_first;
+ iterator m_last;
+ };
+}
+
+namespace
+{
+ void test_range_end_adl_avoidance()
+ {
+ boost::MockTestEndCollection c;
+ const boost::MockTestEndCollection& const_c = c;
+ mock_std::mock_algorithm_using_end(const_c);
+ mock_std::mock_algorithm_using_end(c);
+ }
+}
+
+using boost::unit_test_framework::test_suite;
+
+boost::unit_test_framework::test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ boost::unit_test_framework::test_suite* test = BOOST_TEST_SUITE( "Range Test Suite - end() ADL namespace barrier" );
+
+ test->add( BOOST_TEST_CASE( &test_range_end_adl_avoidance ) );
+
+ return test;
+}
+
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk