aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/restricted/boost/range
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2022-08-14 22:25:25 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2022-08-14 22:25:25 +0300
commit8016a3961c382e8271812896f6d47ce9079d2023 (patch)
tree3a35fd6d0ba9133c7f560778faa93429d064d6ff /contrib/restricted/boost/range
parentde599f9839ac0c83e84057efbb81ea0840c1a4b5 (diff)
downloadydb-8016a3961c382e8271812896f6d47ce9079d2023.tar.gz
Update contrib/restricted/boost/range to 1.80.0
Diffstat (limited to 'contrib/restricted/boost/range')
-rw-r--r--contrib/restricted/boost/range/include/boost/range/as_literal.hpp49
-rw-r--r--contrib/restricted/boost/range/include/boost/range/begin.hpp32
-rw-r--r--contrib/restricted/boost/range/include/boost/range/concepts.hpp4
-rw-r--r--contrib/restricted/boost/range/include/boost/range/config.hpp2
-rw-r--r--contrib/restricted/boost/range/include/boost/range/const_reverse_iterator.hpp35
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/as_literal.hpp33
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/begin.hpp83
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/common.hpp4
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/default_constructible_unary_fn.hpp17
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/detail_str.hpp376
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/end.hpp86
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/implementation_help.hpp4
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/remove_extent.hpp157
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/size_type.hpp55
-rw-r--r--contrib/restricted/boost/range/include/boost/range/detail/value_type.hpp72
-rw-r--r--contrib/restricted/boost/range/include/boost/range/distance.hpp16
-rw-r--r--contrib/restricted/boost/range/include/boost/range/end.hpp34
-rw-r--r--contrib/restricted/boost/range/include/boost/range/has_range_iterator.hpp6
-rw-r--r--contrib/restricted/boost/range/include/boost/range/irange.hpp11
-rw-r--r--contrib/restricted/boost/range/include/boost/range/iterator_range_core.hpp32
-rw-r--r--contrib/restricted/boost/range/include/boost/range/metafunctions.hpp3
-rw-r--r--contrib/restricted/boost/range/include/boost/range/rbegin.hpp13
-rw-r--r--contrib/restricted/boost/range/include/boost/range/rend.hpp13
-rw-r--r--contrib/restricted/boost/range/include/boost/range/result_iterator.hpp33
-rw-r--r--contrib/restricted/boost/range/include/boost/range/reverse_result_iterator.hpp32
-rw-r--r--contrib/restricted/boost/range/include/boost/range/size.hpp2
26 files changed, 125 insertions, 1079 deletions
diff --git a/contrib/restricted/boost/range/include/boost/range/as_literal.hpp b/contrib/restricted/boost/range/include/boost/range/as_literal.hpp
index 1c16e4a0f7..074f1d7f16 100644
--- a/contrib/restricted/boost/range/include/boost/range/as_literal.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/as_literal.hpp
@@ -15,16 +15,17 @@
# pragma once
#endif
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-#include <boost/range/detail/as_literal.hpp>
-#else
-
#include <boost/range/iterator_range.hpp>
#include <boost/range/detail/str_types.hpp>
#include <boost/detail/workaround.hpp>
#include <cstring>
+
+#if !defined(BOOST_NO_CXX11_CHAR16_T) || !defined(BOOST_NO_CXX11_CHAR32_T)
+#include <string> // for std::char_traits
+#endif
+
#ifndef BOOST_NO_CWCHAR
#include <cwchar>
#endif
@@ -38,6 +39,20 @@ namespace boost
return strlen( s );
}
+#ifndef BOOST_NO_CXX11_CHAR16_T
+ inline std::size_t length( const char16_t* s )
+ {
+ return std::char_traits<char16_t>::length( s );
+ }
+#endif
+
+#ifndef BOOST_NO_CXX11_CHAR32_T
+ inline std::size_t length( const char32_t* s )
+ {
+ return std::char_traits<char32_t>::length( s );
+ }
+#endif
+
#ifndef BOOST_NO_CWCHAR
inline std::size_t length( const wchar_t* s )
{
@@ -61,6 +76,30 @@ namespace boost
return true;
}
+#ifndef BOOST_NO_CXX11_CHAR16_T
+ inline bool is_char_ptr( char16_t* )
+ {
+ return true;
+ }
+
+ inline bool is_char_ptr( const char16_t* )
+ {
+ return true;
+ }
+#endif
+
+#ifndef BOOST_NO_CXX11_CHAR32_T
+ inline bool is_char_ptr( char32_t* )
+ {
+ return true;
+ }
+
+ inline bool is_char_ptr( const char32_t* )
+ {
+ return true;
+ }
+#endif
+
#ifndef BOOST_NO_CWCHAR
inline bool is_char_ptr( wchar_t* )
{
@@ -122,6 +161,4 @@ namespace boost
}
}
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/begin.hpp b/contrib/restricted/boost/range/include/boost/range/begin.hpp
index ba5a73b92d..17d9f8423c 100644
--- a/contrib/restricted/boost/range/include/boost/range/begin.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/begin.hpp
@@ -17,16 +17,14 @@
#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/config.hpp>
+#include <boost/config/workaround.hpp>
namespace boost
{
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
namespace range_detail
{
#endif
@@ -36,7 +34,7 @@ namespace range_detail
//////////////////////////////////////////////////////////////////////
template< typename C >
- inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
+ BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
range_begin( C& c )
{
//
@@ -52,13 +50,13 @@ namespace range_detail
//////////////////////////////////////////////////////////////////////
template< typename Iterator >
- inline Iterator range_begin( const std::pair<Iterator,Iterator>& p )
+ BOOST_CONSTEXPR inline Iterator range_begin( const std::pair<Iterator,Iterator>& p )
{
return p.first;
}
template< typename Iterator >
- inline Iterator range_begin( std::pair<Iterator,Iterator>& p )
+ BOOST_CONSTEXPR inline Iterator range_begin( std::pair<Iterator,Iterator>& p )
{
return p.first;
}
@@ -71,19 +69,19 @@ namespace range_detail
// May this be discarded? Or is it needed for bad compilers?
//
template< typename T, std::size_t sz >
- inline const T* range_begin( const T (&a)[sz] )
+ BOOST_CONSTEXPR inline const T* range_begin( const T (&a)[sz] ) BOOST_NOEXCEPT
{
return a;
}
template< typename T, std::size_t sz >
- inline T* range_begin( T (&a)[sz] )
+ BOOST_CONSTEXPR inline T* range_begin( T (&a)[sz] ) BOOST_NOEXCEPT
{
return a;
}
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
} // namespace 'range_detail'
#endif
@@ -94,18 +92,24 @@ namespace range_adl_barrier
{
template< class T >
+#if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
+BOOST_CONSTEXPR
+#endif
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;
#endif
return range_begin( r );
}
template< class T >
+#if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
+BOOST_CONSTEXPR
+#endif
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;
#endif
return range_begin( r );
@@ -114,8 +118,6 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
} // namespace range_adl_barrier
} // namespace boost
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
namespace boost
{
namespace range_adl_barrier
diff --git a/contrib/restricted/boost/range/include/boost/range/concepts.hpp b/contrib/restricted/boost/range/include/boost/range/concepts.hpp
index 87c1e9893d..d6235d66fd 100644
--- a/contrib/restricted/boost/range/include/boost/range/concepts.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/concepts.hpp
@@ -84,7 +84,7 @@ namespace boost {
#endif
#endif
- #ifdef __BORLANDC__
+ #ifdef BOOST_BORLANDC
#define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
#endif
@@ -252,7 +252,7 @@ namespace boost {
n = i - j;
}
private:
- BOOST_DEDUCED_TYPENAME RandomAccessIteratorConcept::difference_type n;
+ BOOST_DEDUCED_TYPENAME BidirectionalIteratorConcept<Iterator>::difference_type n;
Iterator i;
Iterator j;
#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/config.hpp b/contrib/restricted/boost/range/include/boost/range/config.hpp
index 7600a5ff82..636df7be57 100644
--- a/contrib/restricted/boost/range/include/boost/range/config.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/config.hpp
@@ -23,7 +23,7 @@
#error "macro already defined!"
#endif
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
# define BOOST_RANGE_DEDUCED_TYPENAME typename
#else
#define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
diff --git a/contrib/restricted/boost/range/include/boost/range/const_reverse_iterator.hpp b/contrib/restricted/boost/range/include/boost/range/const_reverse_iterator.hpp
deleted file mode 100644
index bfe161561c..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/const_reverse_iterator.hpp
+++ /dev/null
@@ -1,35 +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_CONST_REVERSE_ITERATOR_HPP
-#define BOOST_RANGE_CONST_REVERSE_ITERATOR_HPP
-
-#if defined(_MSC_VER)
-# pragma once
-#endif
-
-#include <boost/range/reverse_iterator.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-
-namespace boost
-{
- //
- // This interface is deprecated, use range_reverse_iterator<const T>
- //
-
- template< typename C >
- struct range_const_reverse_iterator
- : range_reverse_iterator<
- const BOOST_DEDUCED_TYPENAME remove_reference<C>::type>
- { };
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/as_literal.hpp b/contrib/restricted/boost/range/include/boost/range/detail/as_literal.hpp
deleted file mode 100644
index 8b219ea246..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/as_literal.hpp
+++ /dev/null
@@ -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
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/begin.hpp b/contrib/restricted/boost/range/include/boost/range/detail/begin.hpp
deleted file mode 100644
index 1d9390ff85..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/begin.hpp
+++ /dev/null
@@ -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 >
- 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 >
- 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>
- static BOOST_RANGE_DEDUCED_TYPENAME range_value<T>::type* fun(T& t)
- {
- return t;
- }
- };
-
- } // namespace 'range_detail'
-
- namespace range_adl_barrier
- {
- template< typename C >
- inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
- begin( C& c )
- {
- return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
- }
- }
-} // namespace 'boost'
-
-
-#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/common.hpp b/contrib/restricted/boost/range/include/boost/range/detail/common.hpp
index 00b665bef8..2cbc55411d 100644
--- a/contrib/restricted/boost/range/include/boost/range/detail/common.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/detail/common.hpp
@@ -18,10 +18,8 @@
#include <boost/range/config.hpp>
#include <boost/range/detail/sfinae.hpp>
#include <boost/type_traits/is_void.hpp>
-#include <boost/mpl/bool.hpp>
#include <boost/mpl/if.hpp>
#include <boost/mpl/int.hpp>
-#include <boost/mpl/or.hpp>
#include <cstddef>
//////////////////////////////////////////////////////////////////////////////
@@ -71,7 +69,7 @@ namespace boost
BOOST_STATIC_CONSTANT( bool, is_const_wchar_t_ptr_ = sizeof( boost::range_detail::is_const_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type ) );
BOOST_STATIC_CONSTANT( bool, is_char_array_ = sizeof( boost::range_detail::is_char_array_impl( ptr ) ) == sizeof( yes_type ) );
BOOST_STATIC_CONSTANT( bool, is_wchar_t_array_ = sizeof( boost::range_detail::is_wchar_t_array_impl( ptr ) ) == sizeof( yes_type ) );
- BOOST_STATIC_CONSTANT( bool, is_string_ = (boost::mpl::or_<boost::mpl::bool_<is_const_char_ptr_>, boost::mpl::bool_<is_const_wchar_t_ptr_> >::value ));
+ BOOST_STATIC_CONSTANT( bool, is_string_ = (is_const_char_ptr_ || is_const_wchar_t_ptr_));
BOOST_STATIC_CONSTANT( bool, is_array_ = boost::is_array<C>::value );
};
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/default_constructible_unary_fn.hpp b/contrib/restricted/boost/range/include/boost/range/detail/default_constructible_unary_fn.hpp
index 374ddda15d..9729e3cb80 100644
--- a/contrib/restricted/boost/range/include/boost/range/detail/default_constructible_unary_fn.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/detail/default_constructible_unary_fn.hpp
@@ -32,6 +32,23 @@ public:
: m_impl(source)
{
}
+ default_constructible_unary_fn_wrapper(const default_constructible_unary_fn_wrapper& source)
+ : m_impl(source.m_impl)
+ {
+ }
+ default_constructible_unary_fn_wrapper& operator=(const default_constructible_unary_fn_wrapper& source)
+ {
+ if (source.m_impl)
+ {
+ // Lambda are not copy/move assignable.
+ m_impl.emplace(*source.m_impl);
+ }
+ else
+ {
+ m_impl.reset();
+ }
+ return *this;
+ }
template<typename Arg>
R operator()(const Arg& arg) const
{
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/detail_str.hpp b/contrib/restricted/boost/range/include/boost/range/detail/detail_str.hpp
deleted file mode 100644
index 5ef7a3450e..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/detail_str.hpp
+++ /dev/null
@@ -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
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/end.hpp b/contrib/restricted/boost/range/include/boost/range/detail/end.hpp
deleted file mode 100644
index f2f71780a7..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/end.hpp
+++ /dev/null
@@ -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 >
- static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
- fun( C& c )
- {
- return c.end();
- };
- };
-
- //////////////////////////////////////////////////////////////////////
- // pair
- //////////////////////////////////////////////////////////////////////
-
- template<>
- struct range_end<std_pair_>
- {
- template< typename P >
- static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
- fun( const P& p )
- {
- return p.second;
- }
- };
-
- //////////////////////////////////////////////////////////////////////
- // array
- //////////////////////////////////////////////////////////////////////
-
- template<>
- struct range_end<array_>
- {
- template<typename T>
- 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 >
- 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
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/implementation_help.hpp b/contrib/restricted/boost/range/include/boost/range/detail/implementation_help.hpp
index f35953f349..59a3ade837 100644
--- a/contrib/restricted/boost/range/include/boost/range/detail/implementation_help.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/detail/implementation_help.hpp
@@ -60,13 +60,13 @@ namespace boost
}
template< class T, std::size_t sz >
- inline T* array_end( T BOOST_RANGE_ARRAY_REF()[sz] )
+ BOOST_CONSTEXPR inline T* array_end( T BOOST_RANGE_ARRAY_REF()[sz] ) BOOST_NOEXCEPT
{
return boost_range_array + sz;
}
template< class T, std::size_t sz >
- inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] )
+ BOOST_CONSTEXPR inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] ) BOOST_NOEXCEPT
{
return boost_range_array + sz;
}
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/remove_extent.hpp b/contrib/restricted/boost/range/include/boost/range/detail/remove_extent.hpp
deleted file mode 100644
index 68e4597245..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/remove_extent.hpp
+++ /dev/null
@@ -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
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/size_type.hpp b/contrib/restricted/boost/range/include/boost/range/detail/size_type.hpp
deleted file mode 100644
index 78a60a48e9..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/size_type.hpp
+++ /dev/null
@@ -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
-
diff --git a/contrib/restricted/boost/range/include/boost/range/detail/value_type.hpp b/contrib/restricted/boost/range/include/boost/range/detail/value_type.hpp
deleted file mode 100644
index 2784514c6a..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/detail/value_type.hpp
+++ /dev/null
@@ -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
-
diff --git a/contrib/restricted/boost/range/include/boost/range/distance.hpp b/contrib/restricted/boost/range/include/boost/range/distance.hpp
index 075f2d1fb9..5b82cf0ced 100644
--- a/contrib/restricted/boost/range/include/boost/range/distance.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/distance.hpp
@@ -15,20 +15,26 @@
# pragma once
#endif
+#include <boost/iterator/distance.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/difference_type.hpp>
-namespace boost
+namespace boost
{
- template< class T >
- inline BOOST_DEDUCED_TYPENAME range_difference<T>::type
- distance( const T& r )
+ namespace range_distance_adl_barrier
{
- return std::distance( boost::begin( r ), boost::end( r ) );
+ template< class T >
+ inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME range_difference<T>::type
+ distance( const T& r )
+ {
+ return boost::iterators::distance( boost::begin( r ), boost::end( r ) );
+ }
}
+ using namespace range_distance_adl_barrier;
+
} // namespace 'boost'
#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/end.hpp b/contrib/restricted/boost/range/include/boost/range/end.hpp
index f2a3337e34..332590973b 100644
--- a/contrib/restricted/boost/range/include/boost/range/end.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/end.hpp
@@ -17,18 +17,16 @@
#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/iterator.hpp>
#include <boost/range/const_iterator.hpp>
+#include <boost/config.hpp>
+#include <boost/config/workaround.hpp>
namespace boost
{
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
namespace range_detail
{
#endif
@@ -37,7 +35,7 @@ namespace range_detail
// primary template
//////////////////////////////////////////////////////////////////////
template< typename C >
- inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
+ BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
range_end( C& c )
{
//
@@ -53,13 +51,13 @@ namespace range_detail
//////////////////////////////////////////////////////////////////////
template< typename Iterator >
- inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
+ BOOST_CONSTEXPR inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
{
return p.second;
}
template< typename Iterator >
- inline Iterator range_end( std::pair<Iterator,Iterator>& p )
+ BOOST_CONSTEXPR inline Iterator range_end( std::pair<Iterator,Iterator>& p )
{
return p.second;
}
@@ -69,18 +67,18 @@ namespace range_detail
//////////////////////////////////////////////////////////////////////
template< typename T, std::size_t sz >
- inline const T* range_end( const T (&a)[sz] )
+ BOOST_CONSTEXPR inline const T* range_end( const T (&a)[sz] ) BOOST_NOEXCEPT
{
return range_detail::array_end<T,sz>( a );
}
template< typename T, std::size_t sz >
- inline T* range_end( T (&a)[sz] )
+ BOOST_CONSTEXPR inline T* range_end( T (&a)[sz] ) BOOST_NOEXCEPT
{
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'
#endif
@@ -88,18 +86,24 @@ namespace range_adl_barrier
{
template< class T >
+#if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
+BOOST_CONSTEXPR
+#endif
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;
#endif
return range_end( r );
}
template< class T >
+#if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
+BOOST_CONSTEXPR
+#endif
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;
#endif
return range_end( r );
@@ -108,14 +112,12 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
} // namespace range_adl_barrier
} // namespace 'boost'
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
namespace boost
{
namespace range_adl_barrier
{
template< class T >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
const_end( const T& r )
{
return boost::range_adl_barrier::end( r );
diff --git a/contrib/restricted/boost/range/include/boost/range/has_range_iterator.hpp b/contrib/restricted/boost/range/include/boost/range/has_range_iterator.hpp
index 9eb58b35d2..88d8664d16 100644
--- a/contrib/restricted/boost/range/include/boost/range/has_range_iterator.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/has_range_iterator.hpp
@@ -37,9 +37,9 @@ namespace boost
T,
BOOST_DEDUCED_TYPENAME ::boost::enable_if<
BOOST_DEDUCED_TYPENAME mpl::eval_if<is_const<T>,
- has_type<range_const_iterator<
+ has_type<boost::range_const_iterator<
BOOST_DEDUCED_TYPENAME remove_const<T>::type> >,
- has_type<range_mutable_iterator<T> >
+ has_type<boost::range_mutable_iterator<T> >
>::type
>::type
>
@@ -57,7 +57,7 @@ namespace boost
struct has_range_const_iterator_impl<
T,
BOOST_DEDUCED_TYPENAME ::boost::enable_if<
- has_type<range_const_iterator<T> >
+ has_type<boost::range_const_iterator<T> >
>::type
>
: boost::mpl::true_
diff --git a/contrib/restricted/boost/range/include/boost/range/irange.hpp b/contrib/restricted/boost/range/include/boost/range/irange.hpp
index b1a1240655..7d5fee5ca3 100644
--- a/contrib/restricted/boost/range/include/boost/range/irange.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/irange.hpp
@@ -217,7 +217,7 @@ namespace boost
{
BOOST_ASSERT( step_size != 0 );
BOOST_ASSERT( (step_size > 0) ? (last >= first) : (last <= first) );
-
+
typedef typename range_detail::integer_iterator_with_step<Integer> iterator_t;
const std::ptrdiff_t sz = static_cast<std::ptrdiff_t>(step_size >= 0 ? step_size : -step_size);
@@ -225,12 +225,19 @@ namespace boost
const Integer f = step_size >= 0 ? first : last;
const std::ptrdiff_t num_steps = (l - f) / sz + ((l - f) % sz ? 1 : 0);
BOOST_ASSERT(num_steps >= 0);
-
+
return strided_integer_range<Integer>(
iterator_t(first, 0, step_size),
iterator_t(first, num_steps, step_size));
}
+ template<typename Integer>
+ integer_range<Integer>
+ irange(Integer last)
+ {
+ return integer_range<Integer>(static_cast<Integer>(0), last);
+ }
+
} // namespace boost
#endif // include guard
diff --git a/contrib/restricted/boost/range/include/boost/range/iterator_range_core.hpp b/contrib/restricted/boost/range/include/boost/range/iterator_range_core.hpp
index 7f2dc3f9c8..e6d55d3b5b 100644
--- a/contrib/restricted/boost/range/include/boost/range/iterator_range_core.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/iterator_range_core.hpp
@@ -637,8 +637,6 @@ public:
return iterator_range_detail::greater_or_equal_than( l, r );
}
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-#else
template< class Iterator1T, class Iterator2T >
inline bool
operator==( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
@@ -743,8 +741,6 @@ public:
return iterator_range_detail::greater_or_equal_than( l, r );
}
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
// iterator range utilities -----------------------------------------//
//! iterator_range construct helper
@@ -769,17 +765,6 @@ public:
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
/*!
Construct an \c iterator_range from a \c Range containing the begin
@@ -801,8 +786,6 @@ public:
( r, iterator_range_detail::const_range_tag() );
}
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
namespace iterator_range_detail
{
template< class Range >
@@ -827,19 +810,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 >
inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
make_iterator_range( Range& r,
@@ -858,8 +828,6 @@ public:
return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
}
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
//! copy a range into a sequence
/*!
Construct a new sequence of the specified type from the elements
diff --git a/contrib/restricted/boost/range/include/boost/range/metafunctions.hpp b/contrib/restricted/boost/range/include/boost/range/metafunctions.hpp
index 9dc59d0f7c..7ca2f93e38 100644
--- a/contrib/restricted/boost/range/include/boost/range/metafunctions.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/metafunctions.hpp
@@ -17,10 +17,7 @@
#include <boost/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/const_reverse_iterator.hpp>
-#include <boost/range/reverse_result_iterator.hpp>
#include <boost/range/value_type.hpp>
#include <boost/range/size_type.hpp>
#include <boost/range/difference_type.hpp>
diff --git a/contrib/restricted/boost/range/include/boost/range/rbegin.hpp b/contrib/restricted/boost/range/include/boost/range/rbegin.hpp
index 6d66de94b9..83d3ad0b3d 100644
--- a/contrib/restricted/boost/range/include/boost/range/rbegin.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/rbegin.hpp
@@ -21,17 +21,6 @@
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 >
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
rbegin( C& c )
@@ -50,8 +39,6 @@ rbegin( const C& c )
return iter_type( boost::end( c ) );
}
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
template< class T >
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
const_rbegin( const T& r )
diff --git a/contrib/restricted/boost/range/include/boost/range/rend.hpp b/contrib/restricted/boost/range/include/boost/range/rend.hpp
index ef7040780c..c91a05af34 100644
--- a/contrib/restricted/boost/range/include/boost/range/rend.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/rend.hpp
@@ -21,17 +21,6 @@
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 >
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
rend( C& c )
@@ -50,8 +39,6 @@ rend( const C& c )
return iter_type( boost::begin( c ) );
}
-#endif
-
template< class T >
inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
const_rend( const T& r )
diff --git a/contrib/restricted/boost/range/include/boost/range/result_iterator.hpp b/contrib/restricted/boost/range/include/boost/range/result_iterator.hpp
deleted file mode 100644
index 54e343d111..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/result_iterator.hpp
+++ /dev/null
@@ -1,33 +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_RESULT_ITERATOR_HPP
-#define BOOST_RANGE_RESULT_ITERATOR_HPP
-
-#if defined(_MSC_VER)
-# pragma once
-#endif
-
-#include <boost/range/iterator.hpp>
-
-namespace boost
-{
- //
- // This interface is deprecated, use range_iterator<T>
- //
-
- template< typename C >
- struct range_result_iterator : range_iterator<C>
- { };
-
-} // namespace boost
-
-
-#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/reverse_result_iterator.hpp b/contrib/restricted/boost/range/include/boost/range/reverse_result_iterator.hpp
deleted file mode 100644
index d375cfd536..0000000000
--- a/contrib/restricted/boost/range/include/boost/range/reverse_result_iterator.hpp
+++ /dev/null
@@ -1,32 +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_REVERSE_RESULT_ITERATOR_HPP
-#define BOOST_RANGE_REVERSE_RESULT_ITERATOR_HPP
-
-#if defined(_MSC_VER)
-# pragma once
-#endif
-
-#include <boost/range/reverse_iterator.hpp>
-
-namespace boost
-{
- //
- // This interface is deprecated, use range_reverse_iterator<T>
- //
-
- template< typename C >
- struct range_reverse_result_iterator : range_reverse_iterator<C>
- { };
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/range/include/boost/range/size.hpp b/contrib/restricted/boost/range/include/boost/range/size.hpp
index 7f38db8c1e..5f722d080d 100644
--- a/contrib/restricted/boost/range/include/boost/range/size.hpp
+++ b/contrib/restricted/boost/range/include/boost/range/size.hpp
@@ -62,7 +62,7 @@ namespace boost
BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept<SinglePassRange>));
#endif
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) && \
!BOOST_WORKAROUND(__GNUC__, < 3) \
/**/
using namespace range_detail;