mirror of
https://github.com/boostorg/range.git
synced 2025-06-29 22:10:58 +02:00
Compare commits
64 Commits
boost-1.73
...
develop
Author | SHA1 | Date | |
---|---|---|---|
cf7d2d2d3b | |||
6cd17cbeae | |||
1d124e8869 | |||
a377e87bfc | |||
63544b1ec6 | |||
9ac89e9936 | |||
a18dbf5d33 | |||
55aab1f437 | |||
f142776ac2 | |||
c9ebed771c | |||
acb5648eac | |||
2b6fd29168 | |||
e3ac7974f3 | |||
c31588ed06 | |||
6a13721e44 | |||
bc2127c9a9 | |||
422c4d9b42 | |||
a9c1add21c | |||
048e860e59 | |||
f0e109312c | |||
3920ef2e7a | |||
41bff33b2c | |||
b2e4d5ad4b | |||
d52236c0b8 | |||
014c48f1b1 | |||
9c783ecbef | |||
d6e0a32f2e | |||
95095cf4bb | |||
88c6199aed | |||
fd40a25fea | |||
da69f60d3e | |||
6fc6e92adc | |||
e13030df17 | |||
6776ffa8e8 | |||
000b4882aa | |||
486c74fbeb | |||
f3ff60c3bc | |||
72e2a4457a | |||
bb27d50b31 | |||
5572b24a71 | |||
b42165a916 | |||
9a2960f01b | |||
4ed7887128 | |||
ee1ec1cf57 | |||
3b04f1a65e | |||
45d3aae111 | |||
0e8ad01bf9 | |||
c25b0e5069 | |||
994ff83292 | |||
77e5b868a0 | |||
474efda11a | |||
f1215fbda2 | |||
5f04231144 | |||
4e0b172a23 | |||
21a06a93aa | |||
6b3750f209 | |||
1bf2db29c0 | |||
9f03cc44d8 | |||
911d8a427d | |||
3496282d3b | |||
ce24356018 | |||
dbb6ef424f | |||
221ae46c2b | |||
11dd528eb0 |
41
CMakeLists.txt
Normal file
41
CMakeLists.txt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Generated by `boostdep --cmake range`
|
||||||
|
# Copyright 2020 Peter Dimov
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# https://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.5...3.16)
|
||||||
|
|
||||||
|
project(boost_range VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
||||||
|
|
||||||
|
add_library(boost_range INTERFACE)
|
||||||
|
add_library(Boost::range ALIAS boost_range)
|
||||||
|
|
||||||
|
target_include_directories(boost_range INTERFACE include)
|
||||||
|
|
||||||
|
target_link_libraries(boost_range
|
||||||
|
INTERFACE
|
||||||
|
Boost::array
|
||||||
|
Boost::assert
|
||||||
|
Boost::concept_check
|
||||||
|
Boost::config
|
||||||
|
Boost::container_hash
|
||||||
|
Boost::conversion
|
||||||
|
Boost::core
|
||||||
|
Boost::detail
|
||||||
|
Boost::iterator
|
||||||
|
Boost::mpl
|
||||||
|
Boost::optional
|
||||||
|
Boost::preprocessor
|
||||||
|
Boost::regex
|
||||||
|
Boost::static_assert
|
||||||
|
Boost::tuple
|
||||||
|
Boost::type_traits
|
||||||
|
Boost::utility
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
|
||||||
|
|
||||||
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
37
build.jam
Normal file
37
build.jam
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Copyright René Ferdinand Rivera Morell 2023-2024
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
require-b2 5.2 ;
|
||||||
|
|
||||||
|
constant boost_dependencies :
|
||||||
|
/boost/array//boost_array
|
||||||
|
/boost/assert//boost_assert
|
||||||
|
/boost/concept_check//boost_concept_check
|
||||||
|
/boost/config//boost_config
|
||||||
|
/boost/container_hash//boost_container_hash
|
||||||
|
/boost/conversion//boost_conversion
|
||||||
|
/boost/core//boost_core
|
||||||
|
/boost/detail//boost_detail
|
||||||
|
/boost/iterator//boost_iterator
|
||||||
|
/boost/mpl//boost_mpl
|
||||||
|
/boost/optional//boost_optional
|
||||||
|
/boost/preprocessor//boost_preprocessor
|
||||||
|
/boost/regex//boost_regex
|
||||||
|
/boost/static_assert//boost_static_assert
|
||||||
|
/boost/tuple//boost_tuple
|
||||||
|
/boost/type_traits//boost_type_traits
|
||||||
|
/boost/utility//boost_utility ;
|
||||||
|
|
||||||
|
project /boost/range
|
||||||
|
;
|
||||||
|
|
||||||
|
explicit
|
||||||
|
[ alias boost_range : : :
|
||||||
|
: <include>include <library>$(boost_dependencies) ]
|
||||||
|
[ alias all : boost_range test ]
|
||||||
|
;
|
||||||
|
|
||||||
|
call-if : boost-library range
|
||||||
|
;
|
@ -14,7 +14,7 @@
|
|||||||
* [*Precondition:] The `value_type` of the range is an instantiation of `std::pair`.
|
* [*Precondition:] The `value_type` of the range is an instantiation of `std::pair`.
|
||||||
* [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `y.second` where `y` is the corresponding element in the original range.
|
* [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `y.second` where `y` is the corresponding element in the original range.
|
||||||
* [*Range Category:] __single_pass_range__
|
* [*Range Category:] __single_pass_range__
|
||||||
* [*Range Return Type:] for constant ranges, `boost::select_second_const<decltype(rng)>` otherwise `boost:select_second_mutable<decltype(rng)>`
|
* [*Range Return Type:] for constant ranges, `boost::select_second_const<decltype(rng)>` otherwise `boost::select_second_mutable<decltype(rng)>`
|
||||||
* [*Returned Range Category:] The range category of `rng`.
|
* [*Returned Range Category:] The range category of `rng`.
|
||||||
|
|
||||||
[section:map_values_example map_values example]
|
[section:map_values_example map_values example]
|
||||||
|
@ -19,9 +19,11 @@ bool is_sorted(const SinglePassRange& rng, BinaryPredicate pred);
|
|||||||
|
|
||||||
`is_sorted` determines if a range is sorted.
|
`is_sorted` determines if a range is sorted.
|
||||||
For the non-predicate version the return value is `true` if and only if for
|
For the non-predicate version the return value is `true` if and only if for
|
||||||
each adjacent elements `[x,y]` the expression `x < y` is `true`.
|
each adjacent elements `[x, y]` the expression `y < x` is `false` (i.e.,
|
||||||
|
`x <= y`), or if the number of elements is zero or one.
|
||||||
For the predicate version the return value is `true` is and only if for each
|
For the predicate version the return value is `true` is and only if for each
|
||||||
adjacent elements `[x,y]` the expression `pred(x,y)` is `true`.
|
adjacent elements `[x, y]` the expression `pred(y, x)` is `false`, or if the
|
||||||
|
number of elements is zero or one.
|
||||||
|
|
||||||
[heading Definition]
|
[heading Definition]
|
||||||
|
|
||||||
|
@ -367,4 +367,29 @@ index(
|
|||||||
} // namespace adaptors
|
} // namespace adaptors
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_CXX11_HDR_TUPLE)
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
|
||||||
|
#if defined(BOOST_CLANG)
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wmismatched-tags"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template<size_t N, class T, class Indexable>
|
||||||
|
struct tuple_element<N, boost::range::index_value<T, Indexable>>:
|
||||||
|
boost::tuples::element<N, boost::range::index_value<T, Indexable>> {};
|
||||||
|
|
||||||
|
template<class T, class Indexable>
|
||||||
|
struct tuple_size<boost::range::index_value<T, Indexable>>:
|
||||||
|
std::integral_constant<std::size_t, 2> {};
|
||||||
|
|
||||||
|
#if defined(BOOST_CLANG)
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
|
#endif // !defined(BOOST_NO_CXX11_HDR_TUPLE)
|
||||||
|
|
||||||
#endif // include guard
|
#endif // include guard
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <boost/range/adaptor/argument_fwd.hpp>
|
#include <boost/range/adaptor/argument_fwd.hpp>
|
||||||
#include <boost/range/iterator_range.hpp>
|
#include <boost/range/iterator_range.hpp>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
|
#include <boost/iterator/enable_if_convertible.hpp>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
@ -66,7 +67,7 @@ namespace boost
|
|||||||
template<class OtherIterator>
|
template<class OtherIterator>
|
||||||
strided_iterator(
|
strided_iterator(
|
||||||
const strided_iterator<OtherIterator, Category>& other,
|
const strided_iterator<OtherIterator, Category>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator,
|
OtherIterator,
|
||||||
base_iterator
|
base_iterator
|
||||||
>::type* = 0
|
>::type* = 0
|
||||||
@ -110,7 +111,7 @@ namespace boost
|
|||||||
template<class OtherIterator>
|
template<class OtherIterator>
|
||||||
bool equal(
|
bool equal(
|
||||||
const strided_iterator<OtherIterator, Category>& other,
|
const strided_iterator<OtherIterator, Category>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator,
|
OtherIterator,
|
||||||
base_iterator
|
base_iterator
|
||||||
>::type* = 0) const
|
>::type* = 0) const
|
||||||
@ -177,7 +178,7 @@ namespace boost
|
|||||||
OtherIterator,
|
OtherIterator,
|
||||||
bidirectional_traversal_tag
|
bidirectional_traversal_tag
|
||||||
>& other,
|
>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator,
|
OtherIterator,
|
||||||
base_iterator
|
base_iterator
|
||||||
>::type* = 0
|
>::type* = 0
|
||||||
@ -239,7 +240,7 @@ namespace boost
|
|||||||
OtherIterator,
|
OtherIterator,
|
||||||
bidirectional_traversal_tag
|
bidirectional_traversal_tag
|
||||||
>& other,
|
>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator,
|
OtherIterator,
|
||||||
base_iterator
|
base_iterator
|
||||||
>::type* = 0) const
|
>::type* = 0) const
|
||||||
@ -308,7 +309,7 @@ namespace boost
|
|||||||
OtherIterator,
|
OtherIterator,
|
||||||
random_access_traversal_tag
|
random_access_traversal_tag
|
||||||
>& other,
|
>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator,
|
OtherIterator,
|
||||||
base_iterator
|
base_iterator
|
||||||
>::type* = 0
|
>::type* = 0
|
||||||
@ -372,7 +373,7 @@ namespace boost
|
|||||||
OtherIterator,
|
OtherIterator,
|
||||||
random_access_traversal_tag
|
random_access_traversal_tag
|
||||||
>& other,
|
>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator, base_iterator>::type* = 0) const
|
OtherIterator, base_iterator>::type* = 0) const
|
||||||
{
|
{
|
||||||
BOOST_ASSERT((other.m_index - m_index) % m_stride == difference_type());
|
BOOST_ASSERT((other.m_index - m_index) % m_stride == difference_type());
|
||||||
@ -385,7 +386,7 @@ namespace boost
|
|||||||
OtherIterator,
|
OtherIterator,
|
||||||
random_access_traversal_tag
|
random_access_traversal_tag
|
||||||
>& other,
|
>& other,
|
||||||
typename enable_if_convertible<
|
typename iterators::enable_if_convertible<
|
||||||
OtherIterator, base_iterator>::type* = 0) const
|
OtherIterator, base_iterator>::type* = 0) const
|
||||||
{
|
{
|
||||||
return m_index == other.m_index;
|
return m_index == other.m_index;
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/concepts.hpp>
|
#include <boost/range/concepts.hpp>
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/core/enable_if.hpp>
|
||||||
#include <boost/ref.hpp>
|
#include <boost/core/ref.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
|
#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
|
||||||
|
@ -31,7 +31,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
||||||
>::type
|
>::type
|
||||||
lower_bound( ForwardRange& rng, Value val )
|
lower_bound( ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return std::lower_bound(boost::begin(rng), boost::end(rng), val);
|
return std::lower_bound(boost::begin(rng), boost::end(rng), val);
|
||||||
@ -40,7 +40,7 @@ lower_bound( ForwardRange& rng, Value val )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< class ForwardRange, class Value >
|
template< class ForwardRange, class Value >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
||||||
lower_bound( const ForwardRange& rng, Value val )
|
lower_bound( const ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return std::lower_bound(boost::begin(rng), boost::end(rng), val);
|
return std::lower_bound(boost::begin(rng), boost::end(rng), val);
|
||||||
@ -52,7 +52,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
||||||
>::type
|
>::type
|
||||||
lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
lower_bound( ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
|
return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
|
||||||
@ -61,7 +61,7 @@ lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< class ForwardRange, class Value, class SortPredicate >
|
template< class ForwardRange, class Value, class SortPredicate >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
||||||
lower_bound( const ForwardRange& rng, Value val, SortPredicate pred )
|
lower_bound( const ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
|
return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
|
||||||
@ -73,7 +73,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
||||||
>::type
|
>::type
|
||||||
lower_bound( ForwardRange& rng, Value val )
|
lower_bound( ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return range_return<ForwardRange,re>::
|
return range_return<ForwardRange,re>::
|
||||||
@ -84,7 +84,7 @@ lower_bound( ForwardRange& rng, Value val )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< range_return_value re, class ForwardRange, class Value >
|
template< range_return_value re, class ForwardRange, class Value >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
||||||
lower_bound( const ForwardRange& rng, Value val )
|
lower_bound( const ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return range_return<const ForwardRange,re>::
|
return range_return<const ForwardRange,re>::
|
||||||
@ -98,7 +98,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
||||||
>::type
|
>::type
|
||||||
lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
lower_bound( ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return range_return<ForwardRange,re>::
|
return range_return<ForwardRange,re>::
|
||||||
@ -109,7 +109,7 @@ lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
|
template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
||||||
lower_bound( const ForwardRange& rng, Value val, SortPredicate pred )
|
lower_bound( const ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return range_return<const ForwardRange,re>::
|
return range_return<const ForwardRange,re>::
|
||||||
|
@ -32,7 +32,7 @@ BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
||||||
>::type
|
>::type
|
||||||
upper_bound( ForwardRange& rng, Value val )
|
upper_bound( ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return std::upper_bound(boost::begin(rng), boost::end(rng), val);
|
return std::upper_bound(boost::begin(rng), boost::end(rng), val);
|
||||||
@ -41,7 +41,7 @@ upper_bound( ForwardRange& rng, Value val )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< class ForwardRange, class Value >
|
template< class ForwardRange, class Value >
|
||||||
BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
||||||
upper_bound( const ForwardRange& rng, Value val )
|
upper_bound( const ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return std::upper_bound(boost::begin(rng), boost::end(rng), val);
|
return std::upper_bound(boost::begin(rng), boost::end(rng), val);
|
||||||
@ -53,7 +53,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type
|
||||||
>::type
|
>::type
|
||||||
upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
upper_bound( ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
|
return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
|
||||||
@ -62,7 +62,7 @@ upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< class ForwardRange, class Value, class SortPredicate >
|
template< class ForwardRange, class Value, class SortPredicate >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
|
||||||
upper_bound( const ForwardRange& rng, Value val, SortPredicate pred )
|
upper_bound( const ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
|
return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
|
||||||
@ -74,7 +74,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
||||||
>::type
|
>::type
|
||||||
upper_bound( ForwardRange& rng, Value val )
|
upper_bound( ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return range_return<ForwardRange,re>::
|
return range_return<ForwardRange,re>::
|
||||||
@ -85,7 +85,7 @@ upper_bound( ForwardRange& rng, Value val )
|
|||||||
/// \overload
|
/// \overload
|
||||||
template< range_return_value re, class ForwardRange, class Value >
|
template< range_return_value re, class ForwardRange, class Value >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
||||||
upper_bound( const ForwardRange& rng, Value val )
|
upper_bound( const ForwardRange& rng, const Value& val )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return range_return<const ForwardRange,re>::
|
return range_return<const ForwardRange,re>::
|
||||||
@ -100,7 +100,7 @@ inline BOOST_DEDUCED_TYPENAME disable_if<
|
|||||||
is_const<ForwardRange>,
|
is_const<ForwardRange>,
|
||||||
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
BOOST_DEDUCED_TYPENAME range_return<ForwardRange,re>::type
|
||||||
>::type
|
>::type
|
||||||
upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
upper_bound( ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||||
return range_return<ForwardRange,re>::
|
return range_return<ForwardRange,re>::
|
||||||
@ -112,7 +112,7 @@ upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
|
|||||||
template< range_return_value re, class ForwardRange, class Value,
|
template< range_return_value re, class ForwardRange, class Value,
|
||||||
class SortPredicate >
|
class SortPredicate >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange,re>::type
|
||||||
upper_bound( const ForwardRange& rng, Value val, SortPredicate pred )
|
upper_bound( const ForwardRange& rng, const Value& val, SortPredicate pred )
|
||||||
{
|
{
|
||||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||||
return range_return<const ForwardRange,re>::
|
return range_return<const ForwardRange,re>::
|
||||||
|
@ -52,10 +52,31 @@ inline Container& remove_erase_if( Container& on, Pred pred )
|
|||||||
return on;
|
return on;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template< class Container >
|
||||||
|
inline Container& unique_erase( Container& on)
|
||||||
|
{
|
||||||
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
|
||||||
|
on.erase(
|
||||||
|
std::unique(boost::begin(on), boost::end(on)),
|
||||||
|
boost::end(on));
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
template< class Container, class Pred >
|
||||||
|
inline Container& unique_erase( Container& on, Pred pred )
|
||||||
|
{
|
||||||
|
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<Container> ));
|
||||||
|
on.erase(
|
||||||
|
std::unique(boost::begin(on), boost::end(on), pred),
|
||||||
|
boost::end(on));
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace range
|
} // namespace range
|
||||||
using range::erase;
|
using range::erase;
|
||||||
using range::remove_erase;
|
using range::remove_erase;
|
||||||
using range::remove_erase_if;
|
using range::remove_erase_if;
|
||||||
|
using range::unique_erase;
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
#endif // include guard
|
#endif // include guard
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
#define BOOST_RANGE_ANY_RANGE_HPP_INCLUDED
|
#define BOOST_RANGE_ANY_RANGE_HPP_INCLUDED
|
||||||
|
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
|
#include <boost/mpl/eval_if.hpp>
|
||||||
|
#include <boost/mpl/identity.hpp>
|
||||||
#include <boost/iterator/iterator_categories.hpp>
|
#include <boost/iterator/iterator_categories.hpp>
|
||||||
#include <boost/iterator/iterator_traits.hpp>
|
#include <boost/iterator/iterator_traits.hpp>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
|
@ -28,8 +28,6 @@ namespace boost
|
|||||||
return boost::make_iterator_range( r );
|
return boost::make_iterator_range( r );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< class Range >
|
template< class Range >
|
||||||
inline boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type >
|
inline boost::iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type >
|
||||||
as_array( const Range& r )
|
as_array( const Range& r )
|
||||||
@ -37,8 +35,6 @@ namespace boost
|
|||||||
return boost::make_iterator_range( r );
|
return boost::make_iterator_range( r );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -15,10 +15,6 @@
|
|||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
#include <boost/range/detail/as_literal.hpp>
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <boost/range/iterator_range.hpp>
|
#include <boost/range/iterator_range.hpp>
|
||||||
#include <boost/range/detail/str_types.hpp>
|
#include <boost/range/detail/str_types.hpp>
|
||||||
|
|
||||||
@ -165,6 +161,4 @@ namespace boost
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,10 +17,6 @@
|
|||||||
|
|
||||||
#include <boost/range/config.hpp>
|
#include <boost/range/config.hpp>
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
#include <boost/range/detail/begin.hpp>
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <boost/config/workaround.hpp>
|
#include <boost/config/workaround.hpp>
|
||||||
@ -28,7 +24,7 @@
|
|||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
namespace range_detail
|
namespace range_detail
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
@ -85,7 +81,7 @@ namespace range_detail
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
} // namespace 'range_detail'
|
} // namespace 'range_detail'
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -101,7 +97,7 @@ BOOST_CONSTEXPR
|
|||||||
#endif
|
#endif
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
|
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
|
||||||
{
|
{
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
using namespace range_detail;
|
using namespace range_detail;
|
||||||
#endif
|
#endif
|
||||||
return range_begin( r );
|
return range_begin( r );
|
||||||
@ -113,7 +109,7 @@ BOOST_CONSTEXPR
|
|||||||
#endif
|
#endif
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
|
inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
|
||||||
{
|
{
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
using namespace range_detail;
|
using namespace range_detail;
|
||||||
#endif
|
#endif
|
||||||
return range_begin( r );
|
return range_begin( r );
|
||||||
@ -122,8 +118,6 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
|
|||||||
} // namespace range_adl_barrier
|
} // namespace range_adl_barrier
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
namespace range_adl_barrier
|
namespace range_adl_barrier
|
||||||
|
@ -23,7 +23,9 @@
|
|||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
#include <boost/range/detail/misc_concept.hpp>
|
#include <boost/range/detail/misc_concept.hpp>
|
||||||
|
#include <boost/mpl/assert.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
|
#include <boost/type_traits/is_integral.hpp>
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
@ -84,7 +86,7 @@ namespace boost {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __BORLANDC__
|
#ifdef BOOST_BORLANDC
|
||||||
#define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
|
#define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#error "macro already defined!"
|
#error "macro already defined!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# define BOOST_RANGE_DEDUCED_TYPENAME typename
|
# define BOOST_RANGE_DEDUCED_TYPENAME typename
|
||||||
#else
|
#else
|
||||||
#define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
|
#define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config/header_deprecated.hpp>
|
||||||
|
|
||||||
|
BOOST_HEADER_DEPRECATED("<boost/range/reverse_iterator.hpp>")
|
||||||
|
|
||||||
#include <boost/range/reverse_iterator.hpp>
|
#include <boost/range/reverse_iterator.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include <boost/mpl/and.hpp>
|
#include <boost/mpl/and.hpp>
|
||||||
#include <boost/mpl/or.hpp>
|
#include <boost/mpl/or.hpp>
|
||||||
#include <boost/mpl/not.hpp>
|
#include <boost/mpl/not.hpp>
|
||||||
|
#include <boost/mpl/bool.hpp>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/type_traits/is_reference.hpp>
|
#include <boost/type_traits/is_reference.hpp>
|
||||||
@ -20,7 +21,7 @@
|
|||||||
#include <boost/range/detail/any_iterator_buffer.hpp>
|
#include <boost/range/detail/any_iterator_buffer.hpp>
|
||||||
#include <boost/range/detail/any_iterator_interface.hpp>
|
#include <boost/range/detail/any_iterator_interface.hpp>
|
||||||
#include <boost/range/detail/any_iterator_wrapper.hpp>
|
#include <boost/range/detail/any_iterator_wrapper.hpp>
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/core/enable_if.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include <boost/array.hpp>
|
#include <boost/array.hpp>
|
||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
#include <boost/static_assert.hpp>
|
#include <boost/static_assert.hpp>
|
||||||
#include <boost/noncopyable.hpp>
|
#include <boost/core/noncopyable.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
@ -10,10 +10,11 @@
|
|||||||
#ifndef BOOST_RANGE_DETAIL_ANY_ITERATOR_INTERFACE_HPP_INCLUDED
|
#ifndef BOOST_RANGE_DETAIL_ANY_ITERATOR_INTERFACE_HPP_INCLUDED
|
||||||
#define BOOST_RANGE_DETAIL_ANY_ITERATOR_INTERFACE_HPP_INCLUDED
|
#define BOOST_RANGE_DETAIL_ANY_ITERATOR_INTERFACE_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <boost/mpl/if.hpp>
|
||||||
#include <boost/range/detail/any_iterator_buffer.hpp>
|
#include <boost/range/detail/any_iterator_buffer.hpp>
|
||||||
#include <boost/iterator/iterator_categories.hpp>
|
#include <boost/iterator/iterator_categories.hpp>
|
||||||
#include <boost/type_traits/add_const.hpp>
|
#include <boost/type_traits/add_const.hpp>
|
||||||
#include <boost/type_traits/add_reference.hpp>
|
#include <boost/type_traits/is_convertible.hpp>
|
||||||
#include <boost/type_traits/is_reference.hpp>
|
#include <boost/type_traits/is_reference.hpp>
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
@ -35,15 +36,16 @@ namespace boost
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
struct mutable_reference_type_generator
|
struct reference_as_value_type_generator
|
||||||
{
|
{
|
||||||
|
typedef typename remove_reference<
|
||||||
|
typename remove_const<T>::type
|
||||||
|
>::type value_type;
|
||||||
|
|
||||||
typedef typename mpl::if_<
|
typedef typename mpl::if_<
|
||||||
typename mpl::and_<
|
typename is_convertible<const value_type&, value_type>::type,
|
||||||
typename is_const<T>::type,
|
value_type,
|
||||||
typename mpl::not_<typename is_reference<T>::type>::type
|
T
|
||||||
>::type,
|
|
||||||
T,
|
|
||||||
typename add_reference<T>::type
|
|
||||||
>::type type;
|
>::type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -53,16 +55,12 @@ namespace boost
|
|||||||
>
|
>
|
||||||
struct any_incrementable_iterator_interface
|
struct any_incrementable_iterator_interface
|
||||||
{
|
{
|
||||||
typedef typename mutable_reference_type_generator<
|
typedef Reference reference;
|
||||||
Reference
|
|
||||||
>::type reference;
|
|
||||||
|
|
||||||
typedef typename const_reference_type_generator<
|
typedef typename const_reference_type_generator<
|
||||||
Reference
|
Reference
|
||||||
>::type const_reference;
|
>::type const_reference;
|
||||||
|
typedef typename reference_as_value_type_generator<
|
||||||
typedef typename remove_const<
|
Reference
|
||||||
typename remove_reference<Reference>::type
|
|
||||||
>::type reference_as_value_type;
|
>::type reference_as_value_type;
|
||||||
|
|
||||||
typedef Buffer buffer_type;
|
typedef Buffer buffer_type;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#ifndef BOOST_RANGE_DETAIL_ANY_ITERATOR_WRAPPER_HPP_INCLUDED
|
#ifndef BOOST_RANGE_DETAIL_ANY_ITERATOR_WRAPPER_HPP_INCLUDED
|
||||||
#define BOOST_RANGE_DETAIL_ANY_ITERATOR_WRAPPER_HPP_INCLUDED
|
#define BOOST_RANGE_DETAIL_ANY_ITERATOR_WRAPPER_HPP_INCLUDED
|
||||||
|
|
||||||
#include <boost/cast.hpp>
|
#include <boost/polymorphic_cast.hpp>
|
||||||
#include <boost/range/config.hpp>
|
#include <boost/range/config.hpp>
|
||||||
#include <boost/range/detail/any_iterator_interface.hpp>
|
#include <boost/range/detail/any_iterator_interface.hpp>
|
||||||
#include <boost/range/concepts.hpp>
|
#include <boost/range/concepts.hpp>
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Thorsten Ottosen 2006. 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_AS_LITERAL_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
# pragma once
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <boost/range/detail/detail_str.hpp>
|
|
||||||
#include <boost/range/iterator_range.hpp>
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
template< class Range >
|
|
||||||
inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<Range>::type>
|
|
||||||
as_literal( Range& r )
|
|
||||||
{
|
|
||||||
return ::boost::make_iterator_range( ::boost::range_detail::str_begin(r),
|
|
||||||
::boost::range_detail::str_end(r) );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,83 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
|
|
||||||
// distribution is subject to the Boost Software License, Version
|
|
||||||
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// For more information, see http://www.boost.org/libs/range/
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_DETAIL_BEGIN_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_BEGIN_HPP
|
|
||||||
|
|
||||||
#include <boost/config.hpp> // BOOST_MSVC
|
|
||||||
#include <boost/detail/workaround.hpp>
|
|
||||||
#include <boost/range/iterator.hpp>
|
|
||||||
#include <boost/range/detail/common.hpp>
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct range_begin;
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// default
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_begin<std_container_>
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type fun( C& c )
|
|
||||||
{
|
|
||||||
return c.begin();
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// pair
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_begin<std_pair_>
|
|
||||||
{
|
|
||||||
template< typename P >
|
|
||||||
BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type fun( const P& p )
|
|
||||||
{
|
|
||||||
return p.first;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// array
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_begin<array_>
|
|
||||||
{
|
|
||||||
template<typename T>
|
|
||||||
BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_value<T>::type* fun(T& t)
|
|
||||||
{
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace 'range_detail'
|
|
||||||
|
|
||||||
namespace range_adl_barrier
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
BOOST_CONSTEXPR 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'
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -187,8 +187,6 @@ namespace boost {
|
|||||||
return collection_traits<C>::function_type::empty( c );
|
return collection_traits<C>::function_type::empty( c );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
//! Free-standing begin() function
|
//! Free-standing begin() function
|
||||||
/*!
|
/*!
|
||||||
Get the begin iterator of the container. Uses collection_traits.
|
Get the begin iterator of the container. Uses collection_traits.
|
||||||
@ -233,32 +231,6 @@ namespace boost {
|
|||||||
return collection_traits<C>::function_type::end( c );
|
return collection_traits<C>::function_type::end( c );
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
//! Free-standing begin() function
|
|
||||||
/*!
|
|
||||||
\overload
|
|
||||||
*/
|
|
||||||
template< typename C >
|
|
||||||
inline typename collection_traits<C>::result_iterator
|
|
||||||
begin( C& c )
|
|
||||||
{
|
|
||||||
return collection_traits<C>::function_type::begin( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Free-standing end() function
|
|
||||||
/*!
|
|
||||||
\overload
|
|
||||||
*/
|
|
||||||
template< typename C >
|
|
||||||
inline typename collection_traits<C>::result_iterator
|
|
||||||
end( C& c )
|
|
||||||
{
|
|
||||||
return collection_traits<C>::function_type::end( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
|
@ -12,17 +12,15 @@
|
|||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
#include <iterator>
|
||||||
#include <boost/type_traits/is_array.hpp>
|
#include <boost/type_traits/is_array.hpp>
|
||||||
#include <boost/type_traits/is_pointer.hpp>
|
#include <boost/type_traits/is_pointer.hpp>
|
||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/type_traits/is_convertible.hpp>
|
#include <boost/type_traits/is_convertible.hpp>
|
||||||
#include <boost/type_traits/remove_pointer.hpp>
|
#include <boost/type_traits/remove_pointer.hpp>
|
||||||
#include <boost/type_traits/remove_cv.hpp>
|
#include <boost/type_traits/remove_cv.hpp>
|
||||||
#include <boost/mpl/eval_if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
|
||||||
#include <boost/mpl/vector.hpp>
|
|
||||||
#include <boost/mpl/fold.hpp>
|
|
||||||
#include <boost/detail/iterator.hpp>
|
|
||||||
|
|
||||||
// Container traits implementation ---------------------------------------------------------
|
// Container traits implementation ---------------------------------------------------------
|
||||||
|
|
||||||
@ -63,8 +61,6 @@ namespace boost {
|
|||||||
return c.empty();
|
return c.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename C >
|
template< typename C >
|
||||||
static iterator begin( C& c )
|
static iterator begin( C& c )
|
||||||
{
|
{
|
||||||
@ -89,22 +85,6 @@ namespace boost {
|
|||||||
return c.end();
|
return c.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename C >
|
|
||||||
static result_iterator begin( C& c )
|
|
||||||
{
|
|
||||||
return c.begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
template< typename C >
|
|
||||||
static result_iterator end( C& c )
|
|
||||||
{
|
|
||||||
return c.end();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@ -138,11 +118,11 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
typedef typename PairT::first_type element_type;
|
typedef typename PairT::first_type element_type;
|
||||||
|
|
||||||
typedef typename ::boost::detail::
|
typedef typename
|
||||||
iterator_traits<element_type>::value_type value_type;
|
std::iterator_traits<element_type>::value_type value_type;
|
||||||
typedef std::size_t size_type;
|
typedef std::size_t size_type;
|
||||||
typedef typename ::boost::detail::
|
typedef typename
|
||||||
iterator_traits<element_type>::difference_type difference_type;
|
std::iterator_traits<element_type>::difference_type difference_type;
|
||||||
|
|
||||||
typedef element_type iterator;
|
typedef element_type iterator;
|
||||||
typedef element_type const_iterator;
|
typedef element_type const_iterator;
|
||||||
@ -347,8 +327,6 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename A >
|
template< typename A >
|
||||||
static iterator begin( A& a )
|
static iterator begin( A& a )
|
||||||
{
|
{
|
||||||
@ -373,22 +351,6 @@ namespace boost {
|
|||||||
return a+array_length_type::length(a);
|
return a+array_length_type::length(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename A >
|
|
||||||
static result_iterator begin( A& a )
|
|
||||||
{
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
template< typename A >
|
|
||||||
static result_iterator end( A& a )
|
|
||||||
{
|
|
||||||
return a+array_length_type::length(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@ -436,8 +398,6 @@ namespace boost {
|
|||||||
return p==0 || p[0]==0;
|
return p==0 || p[0]==0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename P >
|
template< typename P >
|
||||||
static iterator begin( P& p )
|
static iterator begin( P& p )
|
||||||
{
|
{
|
||||||
@ -468,24 +428,6 @@ namespace boost {
|
|||||||
return p+char_traits::length(p);
|
return p+char_traits::length(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename P >
|
|
||||||
static result_iterator begin( P& p )
|
|
||||||
{
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
template< typename P >
|
|
||||||
static result_iterator end( P& p )
|
|
||||||
{
|
|
||||||
if ( p==0 )
|
|
||||||
return p;
|
|
||||||
else
|
|
||||||
return p+char_traits::length(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -23,68 +23,20 @@
|
|||||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||||
#include <boost/preprocessor/arithmetic/div.hpp>
|
#include <boost/preprocessor/arithmetic/div.hpp>
|
||||||
#include <boost/preprocessor/arithmetic/mul.hpp>
|
#include <boost/preprocessor/arithmetic/mul.hpp>
|
||||||
#include <boost/preprocessor/control.hpp>
|
#include <boost/preprocessor/control/if.hpp>
|
||||||
#include <boost/preprocessor/control/while.hpp>
|
#include <boost/preprocessor/control/while.hpp>
|
||||||
#include <boost/preprocessor/facilities/empty.hpp>
|
#include <boost/preprocessor/facilities/empty.hpp>
|
||||||
#include <boost/preprocessor/facilities/identity.hpp>
|
#include <boost/preprocessor/facilities/identity.hpp>
|
||||||
#include <boost/preprocessor/iteration/local.hpp>
|
#include <boost/preprocessor/iteration/local.hpp>
|
||||||
#include <boost/preprocessor/punctuation/comma.hpp>
|
#include <boost/preprocessor/repetition/enum.hpp>
|
||||||
#include <boost/preprocessor/repetition.hpp>
|
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||||
|
#include <boost/preprocessor/repetition/repeat.hpp>
|
||||||
#include <boost/preprocessor/tuple/elem.hpp>
|
#include <boost/preprocessor/tuple/elem.hpp>
|
||||||
#include <boost/range/iterator_range_core.hpp>
|
#include <boost/range/iterator_range_core.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
#include <boost/mpl/transform.hpp>
|
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <list>
|
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
|
|
||||||
template<typename F, typename T, int SIZE>
|
|
||||||
struct combined_result_impl;
|
|
||||||
|
|
||||||
template<typename F, typename T>
|
|
||||||
struct combined_result
|
|
||||||
: combined_result_impl<F, T, tuples::length<T>::value>
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
#define BOOST_RANGE_combined_element(z, n, data) \
|
|
||||||
typename tuples::element<n, T>::type
|
|
||||||
|
|
||||||
#define BOOST_RANGE_combined_result(z, n, data) \
|
|
||||||
template<typename F, typename T> \
|
|
||||||
struct combined_result_impl <F,T,n> \
|
|
||||||
: result_of<F(BOOST_PP_ENUM(n, BOOST_RANGE_combined_element, ~))> \
|
|
||||||
{ \
|
|
||||||
};
|
|
||||||
|
|
||||||
#define BOOST_PP_LOCAL_MACRO(n) BOOST_RANGE_combined_result(~,n,~)
|
|
||||||
|
|
||||||
#define BOOST_PP_LOCAL_LIMITS (BOOST_RANGE_MIN_COMBINE_ARGS, \
|
|
||||||
BOOST_RANGE_MAX_COMBINE_ARGS)
|
|
||||||
#include BOOST_PP_LOCAL_ITERATE()
|
|
||||||
|
|
||||||
#define BOOST_RANGE_combined_get(z, n, data) get<n>(tuple)
|
|
||||||
|
|
||||||
#define BOOST_RANGE_combined_unpack(z, n, data) \
|
|
||||||
template<typename F, typename T> inline \
|
|
||||||
typename combined_result<F,T>::type \
|
|
||||||
unpack_(mpl::int_<n>, F f, const T& tuple) \
|
|
||||||
{ \
|
|
||||||
return f(BOOST_PP_ENUM(n, BOOST_RANGE_combined_get, ~)); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define BOOST_PP_LOCAL_MACRO(n) BOOST_RANGE_combined_unpack(~,n,~)
|
|
||||||
#define BOOST_PP_LOCAL_LIMITS (BOOST_RANGE_MIN_COMBINE_ARGS, \
|
|
||||||
BOOST_RANGE_MAX_COMBINE_ARGS)
|
|
||||||
#include BOOST_PP_LOCAL_ITERATE()
|
|
||||||
|
|
||||||
} // namespace range_detail
|
|
||||||
|
|
||||||
namespace range
|
namespace range
|
||||||
{
|
{
|
||||||
@ -114,10 +66,6 @@ namespace range
|
|||||||
|
|
||||||
#endif // include guard
|
#endif // include guard
|
||||||
|
|
||||||
#undef BOOST_RANGE_combined_element
|
|
||||||
#undef BOOST_RANGE_combined_result
|
|
||||||
#undef BOOST_RANGE_combined_get
|
|
||||||
#undef BOOST_RANGE_combined_unpack
|
|
||||||
#undef BOOST_RANGE_combined_seq
|
#undef BOOST_RANGE_combined_seq
|
||||||
#undef BOOST_RANGE_combined_exp_pred
|
#undef BOOST_RANGE_combined_exp_pred
|
||||||
#undef BOOST_RANGE_combined_exp_op
|
#undef BOOST_RANGE_combined_exp_op
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/iterator/zip_iterator.hpp>
|
#include <boost/iterator/zip_iterator.hpp>
|
||||||
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
namespace range
|
namespace range
|
||||||
|
@ -1,376 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
|
|
||||||
// distribution is subject to the Boost Software License, Version
|
|
||||||
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// For more information, see http://www.boost.org/libs/range/
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_DETAIL_DETAIL_STR_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_DETAIL_STR_HPP
|
|
||||||
|
|
||||||
#include <boost/config.hpp> // BOOST_MSVC
|
|
||||||
#include <boost/range/iterator.hpp>
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// iterator
|
|
||||||
//
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_iterator_<char_array_>
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef BOOST_RANGE_DEDUCED_TYPENAME
|
|
||||||
remove_extent<T>::type* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_iterator_<char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef char* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_iterator_<const_char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const char* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_iterator_<wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef wchar_t* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_iterator_<const_wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const wchar_t* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// const iterator
|
|
||||||
//
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_const_iterator_<char_array_>
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const BOOST_RANGE_DEDUCED_TYPENAME
|
|
||||||
remove_extent<T>::type* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_const_iterator_<char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const char* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_const_iterator_<const_char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const char* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_const_iterator_<wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const wchar_t* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_const_iterator_<const_wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const wchar_t* type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#include <boost/range/detail/begin.hpp>
|
|
||||||
#include <boost/range/detail/end.hpp>
|
|
||||||
#include <boost/range/detail/size_type.hpp>
|
|
||||||
#include <boost/range/detail/value_type.hpp>
|
|
||||||
#include <boost/range/detail/common.hpp>
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// str_begin()
|
|
||||||
//
|
|
||||||
template<>
|
|
||||||
struct range_begin<char_ptr_>
|
|
||||||
{
|
|
||||||
static char* fun( char* s )
|
|
||||||
{
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_begin<const_char_ptr_>
|
|
||||||
{
|
|
||||||
static const char* fun( const char* s )
|
|
||||||
{
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_begin<wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
|
|
||||||
static wchar_t* fun( wchar_t* s )
|
|
||||||
{
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_begin<const_wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
static const wchar_t* fun( const wchar_t* s )
|
|
||||||
{
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template< typename C >
|
|
||||||
inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
|
|
||||||
str_begin( C& c )
|
|
||||||
{
|
|
||||||
return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME
|
|
||||||
range_detail::range<C>::type >::fun( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// str_end()
|
|
||||||
//
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<char_array_>
|
|
||||||
{
|
|
||||||
template< typename T, std::size_t sz >
|
|
||||||
static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
|
|
||||||
{
|
|
||||||
return boost::range_detail::array_end( boost_range_array );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<wchar_t_array_>
|
|
||||||
{
|
|
||||||
template< typename T, std::size_t sz >
|
|
||||||
static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
|
|
||||||
{
|
|
||||||
return boost::range_detail::array_end( boost_range_array );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<char_ptr_>
|
|
||||||
{
|
|
||||||
static char* fun( char* s )
|
|
||||||
{
|
|
||||||
return boost::range_detail::str_end( s );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<const_char_ptr_>
|
|
||||||
{
|
|
||||||
static const char* fun( const char* s )
|
|
||||||
{
|
|
||||||
return boost::range_detail::str_end( s );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
static wchar_t* fun( wchar_t* s )
|
|
||||||
{
|
|
||||||
return boost::range_detail::str_end( s );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<const_wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
static const wchar_t* fun( const wchar_t* s )
|
|
||||||
{
|
|
||||||
return boost::range_detail::str_end( s );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template< typename C >
|
|
||||||
inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
|
|
||||||
str_end( C& c )
|
|
||||||
{
|
|
||||||
return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME
|
|
||||||
range_detail::range<C>::type >::fun( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// size_type
|
|
||||||
//
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_size_type_<char_array_>
|
|
||||||
{
|
|
||||||
template< typename A >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef std::size_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_size_type_<char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef std::size_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_size_type_<const_char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef std::size_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_size_type_<wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef std::size_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_size_type_<const_wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef std::size_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//
|
|
||||||
// value_type
|
|
||||||
//
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<char_array_>
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef char type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef char type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<const_char_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const char type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef wchar_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<const_wchar_t_ptr_>
|
|
||||||
{
|
|
||||||
template< typename S >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef const wchar_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace 'range_detail'
|
|
||||||
|
|
||||||
} // namespace 'boost'
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,86 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
|
|
||||||
// distribution is subject to the Boost Software License, Version
|
|
||||||
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// For more information, see http://www.boost.org/libs/range/
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_DETAIL_END_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_END_HPP
|
|
||||||
|
|
||||||
#include <boost/config.hpp> // BOOST_MSVC
|
|
||||||
#include <boost/detail/workaround.hpp>
|
|
||||||
|
|
||||||
#include <boost/range/detail/implementation_help.hpp>
|
|
||||||
#include <boost/range/iterator.hpp>
|
|
||||||
#include <boost/range/detail/common.hpp>
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct range_end;
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// default
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<std_container_>
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
BOOST_CONSTEXPR 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 >
|
|
||||||
BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
|
|
||||||
fun( const P& p )
|
|
||||||
{
|
|
||||||
return p.second;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// array
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_end<array_>
|
|
||||||
{
|
|
||||||
template<typename T>
|
|
||||||
BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME remove_extent<T>::type* fun(T& t)
|
|
||||||
{
|
|
||||||
return t + remove_extent<T>::size;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace 'range_detail'
|
|
||||||
|
|
||||||
namespace range_adl_barrier
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
BOOST_CONSTEXPR 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
|
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <boost/type_traits/is_class.hpp>
|
#include <boost/type_traits/is_class.hpp>
|
||||||
#include <boost/type_traits/is_member_function_pointer.hpp>
|
#include <boost/type_traits/is_member_function_pointer.hpp>
|
||||||
|
#include <boost/mpl/if.hpp>
|
||||||
#include <boost/mpl/and.hpp>
|
#include <boost/mpl/and.hpp>
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
#include <boost/cstdint.hpp>
|
#include <boost/cstdint.hpp>
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
|
#include <boost/mpl/if.hpp>
|
||||||
#include <boost/iterator/iterator_traits.hpp>
|
#include <boost/iterator/iterator_traits.hpp>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
|
@ -56,8 +56,8 @@
|
|||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/type_traits/is_same.hpp>
|
#include <boost/type_traits/is_same.hpp>
|
||||||
#include <boost/type_traits/remove_cv.hpp>
|
#include <boost/type_traits/remove_cv.hpp>
|
||||||
#include <boost/utility/addressof.hpp>
|
#include <boost/core/addressof.hpp>
|
||||||
#include <boost/utility/enable_if.hpp> // disable_if
|
#include <boost/core/enable_if.hpp> // disable_if
|
||||||
#include <boost/next_prior.hpp>
|
#include <boost/next_prior.hpp>
|
||||||
|
|
||||||
#if !defined(BOOST_RANGE_DETAIL_MICROSOFT_RANGE_VERSION_1)
|
#if !defined(BOOST_RANGE_DETAIL_MICROSOFT_RANGE_VERSION_1)
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
|
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
|
||||||
|
#include <boost/mpl/bool.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
namespace cb_details
|
namespace cb_details
|
||||||
|
@ -1,157 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Jonathan Turkanis 2005. 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_REMOVE_BOUNDS_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP
|
|
||||||
|
|
||||||
#include <boost/config.hpp> // MSVC, NO_INTRINSIC_WCHAR_T, put size_t in std.
|
|
||||||
#include <cstddef>
|
|
||||||
#include <boost/mpl/eval_if.hpp>
|
|
||||||
#include <boost/mpl/identity.hpp>
|
|
||||||
#include <boost/type_traits/is_same.hpp>
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
|
|
||||||
template< typename Case1 = mpl::true_,
|
|
||||||
typename Type1 = mpl::void_,
|
|
||||||
typename Case2 = mpl::true_,
|
|
||||||
typename Type2 = mpl::void_,
|
|
||||||
typename Case3 = mpl::true_,
|
|
||||||
typename Type3 = mpl::void_,
|
|
||||||
typename Case4 = mpl::true_,
|
|
||||||
typename Type4 = mpl::void_,
|
|
||||||
typename Case5 = mpl::true_,
|
|
||||||
typename Type5 = mpl::void_,
|
|
||||||
typename Case6 = mpl::true_,
|
|
||||||
typename Type6 = mpl::void_,
|
|
||||||
typename Case7 = mpl::true_,
|
|
||||||
typename Type7 = mpl::void_,
|
|
||||||
typename Case8 = mpl::true_,
|
|
||||||
typename Type8 = mpl::void_,
|
|
||||||
typename Case9 = mpl::true_,
|
|
||||||
typename Type9 = mpl::void_,
|
|
||||||
typename Case10 = mpl::true_,
|
|
||||||
typename Type10 = mpl::void_,
|
|
||||||
typename Case11 = mpl::true_,
|
|
||||||
typename Type11 = mpl::void_,
|
|
||||||
typename Case12 = mpl::true_,
|
|
||||||
typename Type12 = mpl::void_,
|
|
||||||
typename Case13 = mpl::true_,
|
|
||||||
typename Type13 = mpl::void_,
|
|
||||||
typename Case14 = mpl::true_,
|
|
||||||
typename Type14 = mpl::void_,
|
|
||||||
typename Case15 = mpl::true_,
|
|
||||||
typename Type15 = mpl::void_,
|
|
||||||
typename Case16 = mpl::true_,
|
|
||||||
typename Type16 = mpl::void_,
|
|
||||||
typename Case17 = mpl::true_,
|
|
||||||
typename Type17 = mpl::void_,
|
|
||||||
typename Case18 = mpl::true_,
|
|
||||||
typename Type18 = mpl::void_,
|
|
||||||
typename Case19 = mpl::true_,
|
|
||||||
typename Type19 = mpl::void_,
|
|
||||||
typename Case20 = mpl::true_,
|
|
||||||
typename Type20 = mpl::void_>
|
|
||||||
struct select {
|
|
||||||
typedef typename
|
|
||||||
mpl::eval_if<
|
|
||||||
Case1, mpl::identity<Type1>, mpl::eval_if<
|
|
||||||
Case2, mpl::identity<Type2>, mpl::eval_if<
|
|
||||||
Case3, mpl::identity<Type3>, mpl::eval_if<
|
|
||||||
Case4, mpl::identity<Type4>, mpl::eval_if<
|
|
||||||
Case5, mpl::identity<Type5>, mpl::eval_if<
|
|
||||||
Case6, mpl::identity<Type6>, mpl::eval_if<
|
|
||||||
Case7, mpl::identity<Type7>, mpl::eval_if<
|
|
||||||
Case8, mpl::identity<Type8>, mpl::eval_if<
|
|
||||||
Case9, mpl::identity<Type9>, mpl::if_<
|
|
||||||
Case10, Type10, mpl::void_ > > > > > > > > >
|
|
||||||
>::type result1;
|
|
||||||
typedef typename
|
|
||||||
mpl::eval_if<
|
|
||||||
Case11, mpl::identity<Type11>, mpl::eval_if<
|
|
||||||
Case12, mpl::identity<Type12>, mpl::eval_if<
|
|
||||||
Case13, mpl::identity<Type13>, mpl::eval_if<
|
|
||||||
Case14, mpl::identity<Type14>, mpl::eval_if<
|
|
||||||
Case15, mpl::identity<Type15>, mpl::eval_if<
|
|
||||||
Case16, mpl::identity<Type16>, mpl::eval_if<
|
|
||||||
Case17, mpl::identity<Type17>, mpl::eval_if<
|
|
||||||
Case18, mpl::identity<Type18>, mpl::eval_if<
|
|
||||||
Case19, mpl::identity<Type19>, mpl::if_<
|
|
||||||
Case20, Type20, mpl::void_ > > > > > > > > >
|
|
||||||
> result2;
|
|
||||||
typedef typename
|
|
||||||
mpl::eval_if<
|
|
||||||
is_same<result1, mpl::void_>,
|
|
||||||
result2,
|
|
||||||
mpl::identity<result1>
|
|
||||||
>::type type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
struct remove_extent {
|
|
||||||
static T* ar;
|
|
||||||
BOOST_STATIC_CONSTANT(std::size_t, size = sizeof(*ar) / sizeof((*ar)[0]));
|
|
||||||
|
|
||||||
typedef typename
|
|
||||||
select<
|
|
||||||
is_same<T, bool[size]>, bool,
|
|
||||||
is_same<T, char[size]>, char,
|
|
||||||
is_same<T, signed char[size]>, signed char,
|
|
||||||
is_same<T, unsigned char[size]>, unsigned char,
|
|
||||||
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
|
||||||
is_same<T, wchar_t[size]>, wchar_t,
|
|
||||||
#endif
|
|
||||||
is_same<T, short[size]>, short,
|
|
||||||
is_same<T, unsigned short[size]>, unsigned short,
|
|
||||||
is_same<T, int[size]>, int,
|
|
||||||
is_same<T, unsigned int[size]>, unsigned int,
|
|
||||||
is_same<T, long[size]>, long,
|
|
||||||
is_same<T, unsigned long[size]>, unsigned long,
|
|
||||||
is_same<T, float[size]>, float,
|
|
||||||
is_same<T, double[size]>, double,
|
|
||||||
is_same<T, long double[size]>, long double
|
|
||||||
>::type result1;
|
|
||||||
typedef typename
|
|
||||||
select<
|
|
||||||
is_same<T, const bool[size]>, const bool,
|
|
||||||
is_same<T, const char[size]>, const char,
|
|
||||||
is_same<T, const signed char[size]>, const signed char,
|
|
||||||
is_same<T, const unsigned char[size]>, const unsigned char,
|
|
||||||
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
|
||||||
is_same<T, const wchar_t[size]>, const wchar_t,
|
|
||||||
#endif
|
|
||||||
is_same<T, const short[size]>, const short,
|
|
||||||
is_same<T, const unsigned short[size]>, const unsigned short,
|
|
||||||
is_same<T, const int[size]>, const int,
|
|
||||||
is_same<T, const unsigned int[size]>, const unsigned int,
|
|
||||||
is_same<T, const long[size]>, const long,
|
|
||||||
is_same<T, const unsigned long[size]>, const unsigned long,
|
|
||||||
is_same<T, const float[size]>, const float,
|
|
||||||
is_same<T, const double[size]>, const double,
|
|
||||||
is_same<T, const long double[size]>, const long double
|
|
||||||
> result2;
|
|
||||||
typedef typename
|
|
||||||
mpl::eval_if<
|
|
||||||
is_same<result1, mpl::void_>,
|
|
||||||
result2,
|
|
||||||
mpl::identity<result1>
|
|
||||||
>::type type;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace 'range_detail'
|
|
||||||
|
|
||||||
} // namespace 'boost'
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,55 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
|
|
||||||
// distribution is subject to the Boost Software License, Version
|
|
||||||
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// For more information, see http://www.boost.org/libs/range/
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
|
|
||||||
|
|
||||||
#include <boost/range/detail/common.hpp>
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
// missing partial specialization workaround.
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct range_size_type_
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef std::size_t type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_size_type_<std_container_>
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef BOOST_RANGE_DEDUCED_TYPENAME C::size_type type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
template< typename C >
|
|
||||||
class range_size
|
|
||||||
{
|
|
||||||
typedef typename range_detail::range<C>::type c_type;
|
|
||||||
public:
|
|
||||||
typedef typename range_detail::range_size_type_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
|||||||
// Boost.Range library
|
|
||||||
//
|
|
||||||
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
|
|
||||||
// distribution is subject to the Boost Software License, Version
|
|
||||||
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// For more information, see http://www.boost.org/libs/range/
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_RANGE_DETAIL_VALUE_TYPE_HPP
|
|
||||||
#define BOOST_RANGE_DETAIL_VALUE_TYPE_HPP
|
|
||||||
|
|
||||||
#include <boost/range/detail/common.hpp>
|
|
||||||
#include <boost/range/detail/remove_extent.hpp>
|
|
||||||
#include <boost/iterator/iterator_traits.hpp>
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
// missing partial specialization workaround.
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
namespace range_detail
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct range_value_type_;
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<std_container_>
|
|
||||||
{
|
|
||||||
template< typename C >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef BOOST_RANGE_DEDUCED_TYPENAME C::value_type type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<std_pair_>
|
|
||||||
{
|
|
||||||
template< typename P >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef BOOST_RANGE_DEDUCED_TYPENAME boost::iterator_value< BOOST_RANGE_DEDUCED_TYPENAME P::first_type >::type type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct range_value_type_<array_>
|
|
||||||
{
|
|
||||||
template< typename T >
|
|
||||||
struct pts
|
|
||||||
{
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME remove_extent<T>::type type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
template< typename C >
|
|
||||||
class range_value
|
|
||||||
{
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
|
|
||||||
public:
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME range_detail::range_value_type_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -17,10 +17,6 @@
|
|||||||
|
|
||||||
#include <boost/range/config.hpp>
|
#include <boost/range/config.hpp>
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
#include <boost/range/detail/end.hpp>
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <boost/range/detail/implementation_help.hpp>
|
#include <boost/range/detail/implementation_help.hpp>
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/range/const_iterator.hpp>
|
#include <boost/range/const_iterator.hpp>
|
||||||
@ -30,7 +26,7 @@
|
|||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
namespace range_detail
|
namespace range_detail
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
@ -82,7 +78,7 @@ namespace range_detail
|
|||||||
return range_detail::array_end<T,sz>( a );
|
return range_detail::array_end<T,sz>( a );
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
} // namespace 'range_detail'
|
} // namespace 'range_detail'
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -95,7 +91,7 @@ BOOST_CONSTEXPR
|
|||||||
#endif
|
#endif
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
|
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
|
||||||
{
|
{
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
using namespace range_detail;
|
using namespace range_detail;
|
||||||
#endif
|
#endif
|
||||||
return range_end( r );
|
return range_end( r );
|
||||||
@ -107,7 +103,7 @@ BOOST_CONSTEXPR
|
|||||||
#endif
|
#endif
|
||||||
inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
|
inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
|
||||||
{
|
{
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
using namespace range_detail;
|
using namespace range_detail;
|
||||||
#endif
|
#endif
|
||||||
return range_end( r );
|
return range_end( r );
|
||||||
@ -116,8 +112,6 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
|
|||||||
} // namespace range_adl_barrier
|
} // namespace range_adl_barrier
|
||||||
} // namespace 'boost'
|
} // namespace 'boost'
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
namespace range_adl_barrier
|
namespace range_adl_barrier
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include <boost/mpl/has_xxx.hpp>
|
#include <boost/mpl/has_xxx.hpp>
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/core/enable_if.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
#include <boost/mpl/eval_if.hpp>
|
#include <boost/mpl/eval_if.hpp>
|
||||||
|
#include <boost/mpl/if.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
@ -26,8 +26,11 @@
|
|||||||
#include <boost/iterator/iterator_traits.hpp>
|
#include <boost/iterator/iterator_traits.hpp>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
#include <boost/mpl/if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
|
#include <boost/mpl/eval_if.hpp>
|
||||||
#include <boost/mpl/not.hpp>
|
#include <boost/mpl/not.hpp>
|
||||||
|
#include <boost/mpl/and.hpp>
|
||||||
#include <boost/mpl/or.hpp>
|
#include <boost/mpl/or.hpp>
|
||||||
|
#include <boost/mpl/identity.hpp>
|
||||||
#include <boost/type_traits/is_abstract.hpp>
|
#include <boost/type_traits/is_abstract.hpp>
|
||||||
#include <boost/type_traits/is_array.hpp>
|
#include <boost/type_traits/is_array.hpp>
|
||||||
#include <boost/type_traits/is_base_and_derived.hpp>
|
#include <boost/type_traits/is_base_and_derived.hpp>
|
||||||
@ -41,7 +44,7 @@
|
|||||||
#include <boost/range/has_range_iterator.hpp>
|
#include <boost/range/has_range_iterator.hpp>
|
||||||
#include <boost/range/algorithm/equal.hpp>
|
#include <boost/range/algorithm/equal.hpp>
|
||||||
#include <boost/range/detail/safe_bool.hpp>
|
#include <boost/range/detail/safe_bool.hpp>
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/core/enable_if.hpp>
|
||||||
#include <boost/next_prior.hpp>
|
#include <boost/next_prior.hpp>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -637,8 +640,6 @@ public:
|
|||||||
return iterator_range_detail::greater_or_equal_than( l, r );
|
return iterator_range_detail::greater_or_equal_than( l, r );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
#else
|
|
||||||
template< class Iterator1T, class Iterator2T >
|
template< class Iterator1T, class Iterator2T >
|
||||||
inline bool
|
inline bool
|
||||||
operator==( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
|
operator==( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
|
||||||
@ -743,8 +744,6 @@ public:
|
|||||||
return iterator_range_detail::greater_or_equal_than( l, r );
|
return iterator_range_detail::greater_or_equal_than( l, r );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
// iterator range utilities -----------------------------------------//
|
// iterator range utilities -----------------------------------------//
|
||||||
|
|
||||||
//! iterator_range construct helper
|
//! iterator_range construct helper
|
||||||
@ -769,17 +768,6 @@ public:
|
|||||||
return iterator_range<IteratorT>(first, boost::next(first, n));
|
return iterator_range<IteratorT>(first, boost::next(first, n));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< typename Range >
|
|
||||||
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
|
||||||
make_iterator_range( Range& r )
|
|
||||||
{
|
|
||||||
return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
|
||||||
( boost::begin( r ), boost::end( r ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
//! iterator_range construct helper
|
//! iterator_range construct helper
|
||||||
/*!
|
/*!
|
||||||
Construct an \c iterator_range from a \c Range containing the begin
|
Construct an \c iterator_range from a \c Range containing the begin
|
||||||
@ -801,8 +789,6 @@ public:
|
|||||||
( r, iterator_range_detail::const_range_tag() );
|
( r, iterator_range_detail::const_range_tag() );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
namespace iterator_range_detail
|
namespace iterator_range_detail
|
||||||
{
|
{
|
||||||
template< class Range >
|
template< class Range >
|
||||||
@ -827,19 +813,6 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< class Range >
|
|
||||||
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
|
||||||
make_iterator_range( Range& r,
|
|
||||||
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
|
|
||||||
BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
|
|
||||||
{
|
|
||||||
return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
template< class Range >
|
template< class Range >
|
||||||
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
|
||||||
make_iterator_range( Range& r,
|
make_iterator_range( Range& r,
|
||||||
@ -858,8 +831,6 @@ public:
|
|||||||
return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
|
return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
//! copy a range into a sequence
|
//! copy a range into a sequence
|
||||||
/*!
|
/*!
|
||||||
Construct a new sequence of the specified type from the elements
|
Construct a new sequence of the specified type from the elements
|
||||||
|
@ -17,10 +17,7 @@
|
|||||||
|
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/range/has_range_iterator.hpp>
|
#include <boost/range/has_range_iterator.hpp>
|
||||||
#include <boost/range/result_iterator.hpp>
|
|
||||||
#include <boost/range/reverse_iterator.hpp>
|
#include <boost/range/reverse_iterator.hpp>
|
||||||
#include <boost/range/const_reverse_iterator.hpp>
|
|
||||||
#include <boost/range/reverse_result_iterator.hpp>
|
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
#include <boost/range/size_type.hpp>
|
#include <boost/range/size_type.hpp>
|
||||||
#include <boost/range/difference_type.hpp>
|
#include <boost/range/difference_type.hpp>
|
||||||
|
@ -90,7 +90,7 @@ class CTypedPtrMap;
|
|||||||
#include <boost/iterator/transform_iterator.hpp>
|
#include <boost/iterator/transform_iterator.hpp>
|
||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/type_traits/remove_pointer.hpp>
|
#include <boost/type_traits/remove_pointer.hpp>
|
||||||
#include <boost/utility/addressof.hpp>
|
#include <boost/core/addressof.hpp>
|
||||||
#include <afx.h> // legacy CString
|
#include <afx.h> // legacy CString
|
||||||
#include <afxcoll.h> // CXXXArray, CXXXList, CMapXXXToXXX
|
#include <afxcoll.h> // CXXXArray, CXXXList, CMapXXXToXXX
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
@ -292,11 +292,8 @@ namespace boost { namespace range_detail_microsoft {
|
|||||||
struct meta
|
struct meta
|
||||||
{
|
{
|
||||||
typedef list_iterator<X, ::CObject *> mutable_iterator;
|
typedef list_iterator<X, ::CObject *> mutable_iterator;
|
||||||
#if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF)
|
// const CObList and const CPtrList both return a value (and probably always will)
|
||||||
typedef list_iterator<X const, ::CObject const *> const_iterator;
|
|
||||||
#else
|
|
||||||
typedef list_iterator<X const, ::CObject const * const, ::CObject const * const> const_iterator;
|
typedef list_iterator<X const, ::CObject const * const, ::CObject const * const> const_iterator;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -309,11 +306,8 @@ namespace boost { namespace range_detail_microsoft {
|
|||||||
struct meta
|
struct meta
|
||||||
{
|
{
|
||||||
typedef list_iterator<X, void *> mutable_iterator;
|
typedef list_iterator<X, void *> mutable_iterator;
|
||||||
#if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF)
|
// const CObList and const CPtrList both return a value (and probably always will)
|
||||||
typedef list_iterator<X const, void const *> const_iterator;
|
|
||||||
#else
|
|
||||||
typedef list_iterator<X const, void const * const, void const * const> const_iterator;
|
typedef list_iterator<X const, void const * const, void const * const> const_iterator;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -21,17 +21,6 @@
|
|||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< class C >
|
|
||||||
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
|
|
||||||
rbegin( C& c )
|
|
||||||
{
|
|
||||||
return BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type( boost::end( c ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
template< class C >
|
template< class C >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
|
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
|
||||||
rbegin( C& c )
|
rbegin( C& c )
|
||||||
@ -50,8 +39,6 @@ rbegin( const C& c )
|
|||||||
return iter_type( boost::end( c ) );
|
return iter_type( boost::end( c ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
|
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
|
||||||
const_rbegin( const T& r )
|
const_rbegin( const T& r )
|
||||||
|
@ -21,17 +21,6 @@
|
|||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
|
||||||
|
|
||||||
template< class C >
|
|
||||||
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
|
|
||||||
rend( C& c )
|
|
||||||
{
|
|
||||||
return BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type( boost::begin( c ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
template< class C >
|
template< class C >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
|
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
|
||||||
rend( C& c )
|
rend( C& c )
|
||||||
@ -50,8 +39,6 @@ rend( const C& c )
|
|||||||
return iter_type( boost::begin( c ) );
|
return iter_type( boost::begin( c ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
|
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
|
||||||
const_rend( const T& r )
|
const_rend( const T& r )
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config/header_deprecated.hpp>
|
||||||
|
|
||||||
|
BOOST_HEADER_DEPRECATED("<boost/range/iterator.hpp>")
|
||||||
|
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config/header_deprecated.hpp>
|
||||||
|
|
||||||
|
BOOST_HEADER_DEPRECATED("<boost/range/reverse_iterator.hpp>")
|
||||||
|
|
||||||
#include <boost/range/reverse_iterator.hpp>
|
#include <boost/range/reverse_iterator.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
|
@ -62,7 +62,7 @@ namespace boost
|
|||||||
BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept<SinglePassRange>));
|
BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept<SinglePassRange>));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) && \
|
||||||
!BOOST_WORKAROUND(__GNUC__, < 3) \
|
!BOOST_WORKAROUND(__GNUC__, < 3) \
|
||||||
/**/
|
/**/
|
||||||
using namespace range_detail;
|
using namespace range_detail;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <boost/range/concepts.hpp>
|
#include <boost/range/concepts.hpp>
|
||||||
#include <boost/range/has_range_iterator.hpp>
|
#include <boost/range/has_range_iterator.hpp>
|
||||||
|
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/core/enable_if.hpp>
|
||||||
#include <boost/type_traits/make_unsigned.hpp>
|
#include <boost/type_traits/make_unsigned.hpp>
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
#include <boost/range/reference.hpp>
|
#include <boost/range/reference.hpp>
|
||||||
#include <boost/range/algorithm/equal.hpp>
|
#include <boost/range/algorithm/equal.hpp>
|
||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
|
#include <boost/mpl/eval_if.hpp>
|
||||||
|
#include <boost/mpl/identity.hpp>
|
||||||
#include <boost/type_traits/is_reference.hpp>
|
#include <boost/type_traits/is_reference.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
|
|
||||||
|
@ -12,5 +12,6 @@
|
|||||||
"maintainers": [
|
"maintainers": [
|
||||||
"Neil Groves <neilgroves -at- googlemail.com>",
|
"Neil Groves <neilgroves -at- googlemail.com>",
|
||||||
"Nathan Ridge <zeratul976 -at- hotmail.com>"
|
"Nathan Ridge <zeratul976 -at- hotmail.com>"
|
||||||
]
|
],
|
||||||
|
"cxxstd": "03"
|
||||||
}
|
}
|
||||||
|
@ -14,19 +14,23 @@ import testing ;
|
|||||||
|
|
||||||
project
|
project
|
||||||
: requirements
|
: requirements
|
||||||
<library>/boost/test//boost_unit_test_framework/
|
<library>/boost/assign//boost_assign
|
||||||
<library>/boost/regex//boost_regex/
|
<library>/boost/foreach//boost_foreach
|
||||||
|
<library>/boost/lambda//boost_lambda
|
||||||
|
<library>/boost/regex//boost_regex/<link>static
|
||||||
|
<library>/boost/test//boost_unit_test_framework
|
||||||
|
<library>/boost/variant//boost_variant
|
||||||
<link>static
|
<link>static
|
||||||
<threading>multi
|
<threading>multi
|
||||||
;
|
;
|
||||||
|
|
||||||
rule range-test ( name : includes * )
|
rule range-test ( name : requirements * )
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
run $(name).cpp /boost/test//boost_unit_test_framework /boost/regex//boost_regex/<link>static
|
run $(name).cpp
|
||||||
:
|
:
|
||||||
:
|
:
|
||||||
: <toolset>gcc:<cxxflags>"-Wall -Wunused "
|
: <toolset>gcc:<cxxflags>"-Wall -Wunused " $(requirements)
|
||||||
] ;
|
] ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +71,7 @@ test-suite range :
|
|||||||
[ range-test adaptor_test/sliced ]
|
[ range-test adaptor_test/sliced ]
|
||||||
[ range-test adaptor_test/strided ]
|
[ range-test adaptor_test/strided ]
|
||||||
[ range-test adaptor_test/strided2 ]
|
[ range-test adaptor_test/strided2 ]
|
||||||
[ range-test adaptor_test/ticket_6742_transformed_c4789_warning ]
|
[ range-test adaptor_test/ticket_6742_transformed_c4789_warning : <library>/boost/phoenix//boost_phoenix ]
|
||||||
[ range-test adaptor_test/ticket_8676_sliced_transformed ]
|
[ range-test adaptor_test/ticket_8676_sliced_transformed ]
|
||||||
[ range-test adaptor_test/ticket_9519_strided_reversed ]
|
[ range-test adaptor_test/ticket_9519_strided_reversed ]
|
||||||
[ range-test adaptor_test/tokenized ]
|
[ range-test adaptor_test/tokenized ]
|
||||||
@ -81,6 +85,7 @@ test-suite range :
|
|||||||
[ range-test adaptor_test/type_erased_forward ]
|
[ range-test adaptor_test/type_erased_forward ]
|
||||||
[ range-test adaptor_test/type_erased_bidirectional ]
|
[ range-test adaptor_test/type_erased_bidirectional ]
|
||||||
[ range-test adaptor_test/type_erased_random_access ]
|
[ range-test adaptor_test/type_erased_random_access ]
|
||||||
|
[ range-test adaptor_test/type_erased_transformed ]
|
||||||
[ range-test adaptor_test/uniqued ]
|
[ range-test adaptor_test/uniqued ]
|
||||||
[ range-test adaptor_test/adjacent_filtered_example ]
|
[ range-test adaptor_test/adjacent_filtered_example ]
|
||||||
[ range-test adaptor_test/copied_example ]
|
[ range-test adaptor_test/copied_example ]
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <boost/range/adaptor/transformed.hpp>
|
#include <boost/range/adaptor/transformed.hpp>
|
||||||
#include <boost/range/adaptor/filtered.hpp>
|
#include <boost/range/adaptor/filtered.hpp>
|
||||||
#include <boost/range/algorithm/copy.hpp>
|
#include <boost/range/algorithm/copy.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
|
|
||||||
#include <boost/test/test_tools.hpp>
|
#include <boost/test/test_tools.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
@ -88,6 +88,8 @@ void chained_adaptors_test()
|
|||||||
|
|
||||||
std::set<foo> foos;
|
std::set<foo> foos;
|
||||||
|
|
||||||
|
using namespace boost::placeholders;
|
||||||
|
|
||||||
boost::copy(sep
|
boost::copy(sep
|
||||||
| boost::adaptors::transformed(boost::bind(&foo::from_string, _1))
|
| boost::adaptors::transformed(boost::bind(&foo::from_string, _1))
|
||||||
| boost::adaptors::filtered(boost::bind(&foo::is_valid, _1)),
|
| boost::adaptors::filtered(boost::bind(&foo::is_valid, _1)),
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#include <boost/range/algorithm_ext.hpp>
|
#include <boost/range/algorithm_ext.hpp>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -140,6 +140,7 @@ namespace boost
|
|||||||
void transformed_bind()
|
void transformed_bind()
|
||||||
{
|
{
|
||||||
using namespace boost::adaptors;
|
using namespace boost::adaptors;
|
||||||
|
using namespace boost::placeholders;
|
||||||
|
|
||||||
std::vector<foo_bind> input(5);
|
std::vector<foo_bind> input(5);
|
||||||
std::vector<int> output;
|
std::vector<int> output;
|
||||||
|
67
test/adaptor_test/type_erased_transformed.cpp
Normal file
67
test/adaptor_test/type_erased_transformed.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// Boost.Range library
|
||||||
|
//
|
||||||
|
// Copyright Neil Groves 2014. 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/range/adaptor/transformed.hpp>
|
||||||
|
#include <boost/range/numeric.hpp>
|
||||||
|
#include "type_erased_test.hpp"
|
||||||
|
|
||||||
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace boost_range_adaptor_type_erased_test
|
||||||
|
{
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef boost::any_range<
|
||||||
|
int,
|
||||||
|
boost::random_access_traversal_tag,
|
||||||
|
int,
|
||||||
|
std::ptrdiff_t
|
||||||
|
> any_integer_value_range;
|
||||||
|
|
||||||
|
struct get_fn
|
||||||
|
{
|
||||||
|
typedef boost::int32_t result_type;
|
||||||
|
boost::int32_t operator()(const MockType& val) const
|
||||||
|
{
|
||||||
|
return val.get();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int accumulate_any_integer_value_range(any_integer_value_range rng)
|
||||||
|
{
|
||||||
|
return boost::accumulate(rng, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_type_erased_transformed()
|
||||||
|
{
|
||||||
|
std::vector<MockType> v(5, MockType(3));
|
||||||
|
|
||||||
|
const int sum = accumulate_any_integer_value_range(
|
||||||
|
v | boost::adaptors::transformed(get_fn()));
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL(15, sum);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
} // namespace boost_range_adaptor_type_erased_test
|
||||||
|
|
||||||
|
boost::unit_test::test_suite*
|
||||||
|
init_unit_test_suite(int, char*[])
|
||||||
|
{
|
||||||
|
boost::unit_test::test_suite* test
|
||||||
|
= BOOST_TEST_SUITE("RangeTestSuite.adaptor.type_erased_transformed");
|
||||||
|
|
||||||
|
test->add(
|
||||||
|
BOOST_TEST_CASE(
|
||||||
|
&boost_range_adaptor_type_erased_test::test_type_erased_transformed));
|
||||||
|
|
||||||
|
return test;
|
||||||
|
}
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <boost/array.hpp>
|
#include <boost/array.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/range/numeric.hpp>
|
#include <boost/range/numeric.hpp>
|
||||||
#include <boost/range/algorithm.hpp>
|
#include <boost/range/algorithm.hpp>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
|
@ -112,6 +112,64 @@ namespace
|
|||||||
test_remove_erase_if_impl<std::list<int> >();
|
test_remove_erase_if_impl<std::list<int> >();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template< class Container >
|
||||||
|
void test_unique_erase_impl()
|
||||||
|
{
|
||||||
|
Container source;
|
||||||
|
source.push_back(1);
|
||||||
|
source.push_back(1);
|
||||||
|
source.push_back(1);
|
||||||
|
source.push_back(2);
|
||||||
|
source.push_back(3);
|
||||||
|
source.push_back(3);
|
||||||
|
|
||||||
|
Container reference;
|
||||||
|
reference.push_back(1);
|
||||||
|
reference.push_back(2);
|
||||||
|
reference.push_back(3);
|
||||||
|
|
||||||
|
boost::unique_erase(source);
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(),
|
||||||
|
source.begin(), source.end() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_unique_erase()
|
||||||
|
{
|
||||||
|
test_unique_erase_impl<std::vector<int> >();
|
||||||
|
test_unique_erase_impl<std::list<int> >();
|
||||||
|
}
|
||||||
|
|
||||||
|
struct distance_smaller_2
|
||||||
|
{
|
||||||
|
typedef bool result_type;
|
||||||
|
typedef int argument_type;
|
||||||
|
bool operator()(int x, int y) const { return std::abs(x - y) < 2; }
|
||||||
|
};
|
||||||
|
|
||||||
|
template< class Container >
|
||||||
|
void test_unique_erase_pred_impl()
|
||||||
|
{
|
||||||
|
Container source;
|
||||||
|
for (int i = 0; i < 10; ++i)
|
||||||
|
source.push_back(i);
|
||||||
|
|
||||||
|
Container reference;
|
||||||
|
for (int i = 0; i < 10; i += 2)
|
||||||
|
reference.push_back(i);
|
||||||
|
|
||||||
|
|
||||||
|
boost::unique_erase(source, distance_smaller_2());
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(),
|
||||||
|
source.begin(), source.end() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_unique_erase_pred()
|
||||||
|
{
|
||||||
|
test_unique_erase_pred_impl<std::vector<int> >();
|
||||||
|
test_unique_erase_pred_impl<std::list<int> >();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::unit_test::test_suite*
|
boost::unit_test::test_suite*
|
||||||
@ -123,6 +181,8 @@ init_unit_test_suite(int argc, char* argv[])
|
|||||||
test->add( BOOST_TEST_CASE( &test_erase ) );
|
test->add( BOOST_TEST_CASE( &test_erase ) );
|
||||||
test->add( BOOST_TEST_CASE( &test_remove_erase ) );
|
test->add( BOOST_TEST_CASE( &test_remove_erase ) );
|
||||||
test->add( BOOST_TEST_CASE( &test_remove_erase_if ) );
|
test->add( BOOST_TEST_CASE( &test_remove_erase_if ) );
|
||||||
|
test->add( BOOST_TEST_CASE( &test_unique_erase ) );
|
||||||
|
test->add( BOOST_TEST_CASE( &test_unique_erase_pred ) );
|
||||||
|
|
||||||
return test;
|
return test;
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
#include <boost/test/test_tools.hpp>
|
#include <boost/test/test_tools.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/range/algorithm/lower_bound.hpp>
|
#include <boost/range/algorithm/lower_bound.hpp>
|
||||||
#include "../test_driver/range_return_test_driver.hpp"
|
#include "../test_driver/range_return_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include "../test_driver/range_return_test_driver.hpp"
|
#include "../test_driver/range_return_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include "../test_driver/range_return_test_driver.hpp"
|
#include "../test_driver/range_return_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include "../test_driver/range_return_test_driver.hpp"
|
#include "../test_driver/range_return_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include "../test_function/counted_function.hpp"
|
#include "../test_function/counted_function.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
@ -64,6 +64,8 @@ namespace
|
|||||||
template< class Container >
|
template< class Container >
|
||||||
void test_remove_copy_if_( const Container& c, int to_remove )
|
void test_remove_copy_if_( const Container& c, int to_remove )
|
||||||
{
|
{
|
||||||
|
using namespace boost::placeholders;
|
||||||
|
|
||||||
test_remove_copy_if_impl(c, boost::bind(std::equal_to<int>(), _1, to_remove));
|
test_remove_copy_if_impl(c, boost::bind(std::equal_to<int>(), _1, to_remove));
|
||||||
test_remove_copy_if_impl(c, boost::bind(std::not_equal_to<int>(), _1, to_remove));
|
test_remove_copy_if_impl(c, boost::bind(std::not_equal_to<int>(), _1, to_remove));
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
@ -59,6 +59,8 @@ namespace boost
|
|||||||
template< class Container >
|
template< class Container >
|
||||||
void test_remove_if_( const Container& c, int to_remove )
|
void test_remove_if_( const Container& c, int to_remove )
|
||||||
{
|
{
|
||||||
|
using namespace boost::placeholders;
|
||||||
|
|
||||||
test_remove_if_impl(c, boost::bind(std::equal_to<int>(), _1, to_remove));
|
test_remove_if_impl(c, boost::bind(std::equal_to<int>(), _1, to_remove));
|
||||||
test_remove_if_impl(c, boost::bind(std::not_equal_to<int>(), _1, to_remove));
|
test_remove_if_impl(c, boost::bind(std::not_equal_to<int>(), _1, to_remove));
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
@ -66,6 +66,8 @@ namespace
|
|||||||
template< class Container >
|
template< class Container >
|
||||||
void test_replace_copy_if_( const Container& c, int to_replace )
|
void test_replace_copy_if_( const Container& c, int to_replace )
|
||||||
{
|
{
|
||||||
|
using namespace boost::placeholders;
|
||||||
|
|
||||||
test_replace_copy_if_impl(c, boost::bind(std::equal_to<int>(), _1, to_replace));
|
test_replace_copy_if_impl(c, boost::bind(std::equal_to<int>(), _1, to_replace));
|
||||||
test_replace_copy_if_impl(c, boost::bind(std::not_equal_to<int>(), _1, to_replace));
|
test_replace_copy_if_impl(c, boost::bind(std::not_equal_to<int>(), _1, to_replace));
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
@ -29,6 +29,8 @@ namespace boost
|
|||||||
template< class Container, class UnaryPredicate >
|
template< class Container, class UnaryPredicate >
|
||||||
void test_replace_if_impl(Container& cont, UnaryPredicate pred)
|
void test_replace_if_impl(Container& cont, UnaryPredicate pred)
|
||||||
{
|
{
|
||||||
|
using namespace boost::placeholders;
|
||||||
|
|
||||||
const int what = 2;
|
const int what = 2;
|
||||||
const int with_what = 5;
|
const int with_what = 5;
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include "../test_driver/range_return_test_driver.hpp"
|
#include "../test_driver/range_return_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include "../test_driver/range_overload_test_driver.hpp"
|
#include "../test_driver/range_overload_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
#include <boost/assign.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include "../test_driver/range_return_test_driver.hpp"
|
#include "../test_driver/range_return_test_driver.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
@ -35,7 +35,7 @@ void check_array()
|
|||||||
|
|
||||||
|
|
||||||
// BOOST_RANGE_NO_STATIC_ASSERT
|
// BOOST_RANGE_NO_STATIC_ASSERT
|
||||||
#if !defined( __BORLANDC__ )
|
#if !defined( BOOST_BORLANDC )
|
||||||
#else
|
#else
|
||||||
BOOST_STATIC_ASSERT(( is_same< range_value<array_t>::type, int >::value ));
|
BOOST_STATIC_ASSERT(( is_same< range_value<array_t>::type, int >::value ));
|
||||||
BOOST_STATIC_ASSERT(( is_same< range_iterator<array_t>::type, int* >::value ));
|
BOOST_STATIC_ASSERT(( is_same< range_iterator<array_t>::type, int* >::value ));
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
// For more information, see http://www.boost.org/libs/range/
|
// For more information, see http://www.boost.org/libs/range/
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#define BOOST_ALLOW_DEPRECATED_HEADERS
|
||||||
#include <boost/range/const_reverse_iterator.hpp>
|
#include <boost/range/const_reverse_iterator.hpp>
|
||||||
#include <boost/static_assert.hpp>
|
#include <boost/static_assert.hpp>
|
||||||
#include <boost/type_traits/is_same.hpp>
|
#include <boost/type_traits/is_same.hpp>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/workaround.hpp>
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
|
||||||
# pragma warn -8091 // suppress warning in Boost.Test
|
# pragma warn -8091 // suppress warning in Boost.Test
|
||||||
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
# pragma warn -8057 // unused argument argc/argv in Boost.Test
|
||||||
#endif
|
#endif
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user