diff options
author | AlexSm <alex@ydb.tech> | 2024-05-06 18:27:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-06 18:27:11 +0200 |
commit | 068e8291de67631f063304b76dda3c1fd6601c12 (patch) | |
tree | f9058c69ef88f04c55ff9c92949dffa8cd6b83a5 /contrib/restricted | |
parent | 653a427438ab0fa69068180c34233b015af0d405 (diff) | |
parent | 41f0129e44731de1ba129fbae27008f8a4048fdc (diff) | |
download | ydb-068e8291de67631f063304b76dda3c1fd6601c12.tar.gz |
Merge pull request #4325 from ydb-platform/mergelibs-240506-1255
Library import 240506-1255
Diffstat (limited to 'contrib/restricted')
205 files changed, 3333 insertions, 6939 deletions
diff --git a/contrib/restricted/boost/any/include/boost/any.hpp b/contrib/restricted/boost/any/include/boost/any.hpp index f7812eef9f..483498b10e 100644 --- a/contrib/restricted/boost/any/include/boost/any.hpp +++ b/contrib/restricted/boost/any/include/boost/any.hpp @@ -358,7 +358,7 @@ namespace boost } // Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved. -// Copyright Antony Polukhin, 2013-2023. +// Copyright Antony Polukhin, 2013-2024. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/any/include/boost/any/bad_any_cast.hpp b/contrib/restricted/boost/any/include/boost/any/bad_any_cast.hpp index ed456021a3..309b8a0b9e 100644 --- a/contrib/restricted/boost/any/include/boost/any/bad_any_cast.hpp +++ b/contrib/restricted/boost/any/include/boost/any/bad_any_cast.hpp @@ -1,4 +1,4 @@ -// Copyright Antony Polukhin, 2020-2023. +// Copyright Antony Polukhin, 2020-2024. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/any/include/boost/any/detail/placeholder.hpp b/contrib/restricted/boost/any/include/boost/any/detail/placeholder.hpp index 360d78cb08..bf7395c172 100644 --- a/contrib/restricted/boost/any/include/boost/any/detail/placeholder.hpp +++ b/contrib/restricted/boost/any/include/boost/any/detail/placeholder.hpp @@ -1,4 +1,4 @@ -// Copyright Antony Polukhin, 2021-2023. +// Copyright Antony Polukhin, 2021-2024. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/any/include/boost/any/fwd.hpp b/contrib/restricted/boost/any/include/boost/any/fwd.hpp index 752f3aceff..be70d6008c 100644 --- a/contrib/restricted/boost/any/include/boost/any/fwd.hpp +++ b/contrib/restricted/boost/any/include/boost/any/fwd.hpp @@ -1,4 +1,4 @@ -// Copyright Antony Polukhin, 2021-2023. +// Copyright Antony Polukhin, 2021-2024. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/any/ya.make b/contrib/restricted/boost/any/ya.make index 4b831e73c3..f2648ff609 100644 --- a/contrib/restricted/boost/any/ya.make +++ b/contrib/restricted/boost/any/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/any/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/any/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/array/ya.make b/contrib/restricted/boost/array/ya.make index 7e18e9c6af..1c990965fe 100644 --- a/contrib/restricted/boost/array/ya.make +++ b/contrib/restricted/boost/array/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/array/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/array/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/assert/include/boost/assert/source_location.hpp b/contrib/restricted/boost/assert/include/boost/assert/source_location.hpp index a265ad5cb8..c4d5f1b173 100644 --- a/contrib/restricted/boost/assert/include/boost/assert/source_location.hpp +++ b/contrib/restricted/boost/assert/include/boost/assert/source_location.hpp @@ -144,6 +144,10 @@ template<class E, class T> std::basic_ostream<E, T> & operator<<( std::basic_ost # define BOOST_CURRENT_LOCATION ::boost::source_location() +#elif defined(BOOST_MSVC) && BOOST_MSVC >= 1935 + +# define BOOST_CURRENT_LOCATION ::boost::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCSIG(), __builtin_COLUMN()) + #elif defined(BOOST_MSVC) && BOOST_MSVC >= 1926 // std::source_location::current() is available in -std:c++20, but fails with consteval errors before 19.31, and doesn't produce diff --git a/contrib/restricted/boost/assert/ya.make b/contrib/restricted/boost/assert/ya.make index 46ab40f809..62b683cdd1 100644 --- a/contrib/restricted/boost/assert/ya.make +++ b/contrib/restricted/boost/assert/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/assert/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/assert/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/atomic/include/boost/atomic/detail/pause.hpp b/contrib/restricted/boost/atomic/include/boost/atomic/detail/pause.hpp index efdfb62b6a..0d47c927aa 100644 --- a/contrib/restricted/boost/atomic/include/boost/atomic/detail/pause.hpp +++ b/contrib/restricted/boost/atomic/include/boost/atomic/detail/pause.hpp @@ -48,6 +48,13 @@ BOOST_FORCEINLINE void pause() BOOST_NOEXCEPT __asm__ __volatile__("pause;" : : : "memory"); #elif (defined(__ARM_ARCH) && __ARM_ARCH >= 8) || defined(__ARM_ARCH_8A__) || defined(__aarch64__) __asm__ __volatile__("yield;" : : : "memory"); +#elif defined(__riscv) && __riscv_xlen == 64 +#if defined(__riscv_zihintpause) + __asm__ __volatile__("pause" : : : "memory"); +#else + /* Encoding of the pause instruction */ + __asm__ __volatile__ (".4byte 0x100000F"); +#endif #endif #endif } diff --git a/contrib/restricted/boost/atomic/ya.make b/contrib/restricted/boost/atomic/ya.make index beac80ecb1..8151509c51 100644 --- a/contrib/restricted/boost/atomic/ya.make +++ b/contrib/restricted/boost/atomic/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/atomic/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/atomic/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/align diff --git a/contrib/restricted/boost/bind/include/boost/bind/bind.hpp b/contrib/restricted/boost/bind/include/boost/bind/bind.hpp index fd0ee144fd..2d5b454e90 100644 --- a/contrib/restricted/boost/bind/include/boost/bind/bind.hpp +++ b/contrib/restricted/boost/bind/include/boost/bind/bind.hpp @@ -8,46 +8,33 @@ #endif // -// bind.hpp - binds function objects to arguments +// bind.hpp - binds function objects to arguments // -// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2001 David Abrahams -// Copyright (c) 2005 Peter Dimov +// Copyright 2001-2005, 2024 Peter Dimov +// Copyright 2001 David Abrahams // // 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) // -// See http://www.boost.org/libs/bind/bind.html for documentation. +// See http://www.boost.org/libs/bind for documentation. // -#include <boost/bind/detail/requires_cxx11.hpp> -#include <boost/config.hpp> #include <boost/bind/mem_fn.hpp> -#include <boost/type.hpp> -#include <boost/is_placeholder.hpp> #include <boost/bind/arg.hpp> -#include <boost/bind/detail/result_traits.hpp> #include <boost/bind/std_placeholders.hpp> -#include <boost/config/workaround.hpp> +#include <boost/bind/detail/result_traits.hpp> +#include <boost/bind/detail/tuple_for_each.hpp> +#include <boost/bind/detail/integer_sequence.hpp> #include <boost/visit_each.hpp> +#include <boost/is_placeholder.hpp> +#include <boost/type.hpp> #include <boost/core/ref.hpp> -#include <boost/core/enable_if.hpp> -#include <boost/bind/detail/is_same.hpp> - -#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) -#include <utility> // std::forward -#endif - -// Borland-specific bug, visit_each() silently fails to produce code - -#if defined(BOOST_BORLANDC) -# define BOOST_BIND_VISIT_EACH boost::visit_each -#else -# define BOOST_BIND_VISIT_EACH visit_each -#endif - -#include <boost/bind/storage.hpp> +#include <boost/config.hpp> +#include <boost/config/workaround.hpp> +#include <utility> +#include <type_traits> +#include <tuple> #ifdef BOOST_MSVC # pragma warning(push) @@ -64,22 +51,22 @@ namespace _bi // implementation details // ref_compare -template<class T> bool ref_compare( T const & a, T const & b, long ) +template<class T> bool ref_compare( T const & a, T const & b ) { return a == b; } -template<int I> bool ref_compare( arg<I> const &, arg<I> const &, int ) +template<int I> bool ref_compare( arg<I> const &, arg<I> const & ) { return true; } -template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) (), int ) +template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) () ) { return true; } -template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b, int ) +template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b ) { return a.get_pointer() == b.get_pointer(); } @@ -88,7 +75,7 @@ template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wr template<class R, class F, class L> class bind_t; -template<class R, class F, class L> bool ref_compare( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int ) +template<class R, class F, class L> bool ref_compare( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b ) { return a.compare( b ); } @@ -116,7 +103,7 @@ private: // ref_compare for weak_ptr -template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b, int ) +template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b ) { return !(a.get() < b.get()) && !(b.get() < a.get()); } @@ -145,1110 +132,170 @@ template<class F> struct unwrapper } }; -// listN +// list -class list0 +template<class V> struct accept_lambda { -public: - - list0() {} - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } + V& v_; - template<class R, class F, class A> R operator()(type<R>, F & f, A &, long) - { - return unwrapper<F>::unwrap(f, 0)(); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A &, long) const - { - return unwrapper<F const>::unwrap(f, 0)(); - } - - template<class F, class A> void operator()(type<void>, F & f, A &, int) - { - unwrapper<F>::unwrap(f, 0)(); - } - - template<class F, class A> void operator()(type<void>, F const & f, A &, int) const - { - unwrapper<F const>::unwrap(f, 0)(); - } - - template<class V> void accept(V &) const - { - } + explicit accept_lambda( V& v ): v_( v ) {} - bool operator==(list0 const &) const + template<class A> void operator()( A& a ) const { - return true; + visit_each( v_, a, 0 ); } }; -#ifdef BOOST_MSVC -// MSVC is bright enough to realise that the parameter rhs -// in operator==may be unused for some template argument types: -#pragma warning(push) -#pragma warning(disable:4100) -#endif - -template< class A1 > class list1: private storage1< A1 > +struct equal_lambda { -private: - - typedef storage1< A1 > base_type; - -public: - - explicit list1( A1 a1 ): base_type( a1 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + bool result; - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + equal_lambda(): result( true ) {} - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list1 const & rhs) const + template<class A1, class A2> void operator()( A1& a1, A2& a2 ) { - return ref_compare(base_type::a1_, rhs.a1_, 0); + result = result && ref_compare( a1, a2 ); } }; struct logical_and; struct logical_or; -template< class A1, class A2 > class list2: private storage2< A1, A2 > -{ -private: - - typedef storage2< A1, A2 > base_type; - -public: - - list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); - } - - template<class A> bool operator()( type<bool>, logical_and & /*f*/, A & a, int ) - { - return a[ base_type::a1_ ] && a[ base_type::a2_ ]; - } - - template<class A> bool operator()( type<bool>, logical_and const & /*f*/, A & a, int ) const - { - return a[ base_type::a1_ ] && a[ base_type::a2_ ]; - } - - template<class A> bool operator()( type<bool>, logical_or & /*f*/, A & a, int ) - { - return a[ base_type::a1_ ] || a[ base_type::a2_ ]; - } - - template<class A> bool operator()( type<bool>, logical_or const & /*f*/, A & a, int ) const - { - return a[ base_type::a1_ ] || a[ base_type::a2_ ]; - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list2 const & rhs) const - { - return ref_compare(base_type::a1_, rhs.a1_, 0) && ref_compare(base_type::a2_, rhs.a2_, 0); - } -}; - -template< class A1, class A2, class A3 > class list3: private storage3< A1, A2, A3 > -{ -private: - - typedef storage3< A1, A2, A3 > base_type; - -public: - - list3( A1 a1, A2 a2, A3 a3 ): base_type( a1, a2, a3 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list3 const & rhs) const - { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ); - } -}; - -template< class A1, class A2, class A3, class A4 > class list4: private storage4< A1, A2, A3, A4 > -{ -private: - - typedef storage4< A1, A2, A3, A4 > base_type; - -public: - - list4( A1 a1, A2 a2, A3 a3, A4 a4 ): base_type( a1, a2, a3, a4 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - A4 operator[] (boost::arg<4>) const { return base_type::a4_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list4 const & rhs) const - { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ) && - ref_compare( base_type::a4_, rhs.a4_, 0 ); - } -}; - -template< class A1, class A2, class A3, class A4, class A5 > class list5: private storage5< A1, A2, A3, A4, A5 > -{ -private: - - typedef storage5< A1, A2, A3, A4, A5 > base_type; - -public: - - list5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): base_type( a1, a2, a3, a4, a5 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - A4 operator[] (boost::arg<4>) const { return base_type::a4_; } - A5 operator[] (boost::arg<5>) const { return base_type::a5_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list5 const & rhs) const - { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ) && - ref_compare( base_type::a4_, rhs.a4_, 0 ) && - ref_compare( base_type::a5_, rhs.a5_, 0 ); - } -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6> class list6: private storage6< A1, A2, A3, A4, A5, A6 > -{ -private: - - typedef storage6< A1, A2, A3, A4, A5, A6 > base_type; - -public: - - list6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): base_type( a1, a2, a3, a4, a5, a6 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - A4 operator[] (boost::arg<4>) const { return base_type::a4_; } - A5 operator[] (boost::arg<5>) const { return base_type::a5_; } - A6 operator[] (boost::arg<6>) const { return base_type::a6_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list6 const & rhs) const - { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ) && - ref_compare( base_type::a4_, rhs.a4_, 0 ) && - ref_compare( base_type::a5_, rhs.a5_, 0 ) && - ref_compare( base_type::a6_, rhs.a6_, 0 ); - } -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> class list7: private storage7< A1, A2, A3, A4, A5, A6, A7 > -{ -private: - - typedef storage7< A1, A2, A3, A4, A5, A6, A7 > base_type; - -public: - - list7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): base_type( a1, a2, a3, a4, a5, a6, a7 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - A4 operator[] (boost::arg<4>) const { return base_type::a4_; } - A5 operator[] (boost::arg<5>) const { return base_type::a5_; } - A6 operator[] (boost::arg<6>) const { return base_type::a6_; } - A7 operator[] (boost::arg<7>) const { return base_type::a7_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } - A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list7 const & rhs) const - { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ) && - ref_compare( base_type::a4_, rhs.a4_, 0 ) && - ref_compare( base_type::a5_, rhs.a5_, 0 ) && - ref_compare( base_type::a6_, rhs.a6_, 0 ) && - ref_compare( base_type::a7_, rhs.a7_, 0 ); - } -}; - -template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class list8: private storage8< A1, A2, A3, A4, A5, A6, A7, A8 > -{ -private: - - typedef storage8< A1, A2, A3, A4, A5, A6, A7, A8 > base_type; - -public: - - list8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - A4 operator[] (boost::arg<4>) const { return base_type::a4_; } - A5 operator[] (boost::arg<5>) const { return base_type::a5_; } - A6 operator[] (boost::arg<6>) const { return base_type::a6_; } - A7 operator[] (boost::arg<7>) const { return base_type::a7_; } - A8 operator[] (boost::arg<8>) const { return base_type::a8_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } - A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; } - A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); - } - - template<class F, class A> void operator()(type<void>, F & f, A & a, int) - { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); - } - - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const - { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); - } - - template<class V> void accept(V & v) const - { - base_type::accept(v); - } - - bool operator==(list8 const & rhs) const - { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ) && - ref_compare( base_type::a4_, rhs.a4_, 0 ) && - ref_compare( base_type::a5_, rhs.a5_, 0 ) && - ref_compare( base_type::a6_, rhs.a6_, 0 ) && - ref_compare( base_type::a7_, rhs.a7_, 0 ) && - ref_compare( base_type::a8_, rhs.a8_, 0 ); - } -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class list9: private storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > +template<class... A> class list { private: - typedef storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > base_type; + typedef std::tuple<A...> data_type; + data_type data_; public: - list9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) {} - - A1 operator[] (boost::arg<1>) const { return base_type::a1_; } - A2 operator[] (boost::arg<2>) const { return base_type::a2_; } - A3 operator[] (boost::arg<3>) const { return base_type::a3_; } - A4 operator[] (boost::arg<4>) const { return base_type::a4_; } - A5 operator[] (boost::arg<5>) const { return base_type::a5_; } - A6 operator[] (boost::arg<6>) const { return base_type::a6_; } - A7 operator[] (boost::arg<7>) const { return base_type::a7_; } - A8 operator[] (boost::arg<8>) const { return base_type::a8_; } - A9 operator[] (boost::arg<9>) const { return base_type::a9_; } - - A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } - A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } - A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } - A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } - A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } - A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } - A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; } - A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; } - A9 operator[] (boost::arg<9> (*) ()) const { return base_type::a9_; } - - template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } - - template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); } + list( A... a ): data_( a... ) {} - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); } - - template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long) - { - return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); - } - - template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const - { - return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); - } +#if defined(BOOST_MSVC) +# pragma warning( push ) +# pragma warning( disable: 4100 ) // unreferenced formal parameter 'a2' +#endif - template<class F, class A> void operator()(type<void>, F & f, A & a, int) + template<class R, class F, class A2, std::size_t... I> R call_impl( type<R>, F & f, A2 & a2, _bi::index_sequence<I...> ) { - unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); + return unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... ); } - template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const + template<class R, class F, class A2, std::size_t... I> R call_impl( type<R>, F & f, A2 & a2, _bi::index_sequence<I...> ) const { - unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); + return unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... ); } - template<class V> void accept(V & v) const + template<class F, class A2, std::size_t... I> void call_impl( type<void>, F & f, A2 & a2, _bi::index_sequence<I...> ) { - base_type::accept(v); + unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... ); } - bool operator==(list9 const & rhs) const + template<class F, class A2, std::size_t... I> void call_impl( type<void>, F & f, A2 & a2, _bi::index_sequence<I...> ) const { - return - - ref_compare( base_type::a1_, rhs.a1_, 0 ) && - ref_compare( base_type::a2_, rhs.a2_, 0 ) && - ref_compare( base_type::a3_, rhs.a3_, 0 ) && - ref_compare( base_type::a4_, rhs.a4_, 0 ) && - ref_compare( base_type::a5_, rhs.a5_, 0 ) && - ref_compare( base_type::a6_, rhs.a6_, 0 ) && - ref_compare( base_type::a7_, rhs.a7_, 0 ) && - ref_compare( base_type::a8_, rhs.a8_, 0 ) && - ref_compare( base_type::a9_, rhs.a9_, 0 ); + unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... ); } -}; -#ifdef BOOST_MSVC -#pragma warning(pop) +#if defined(BOOST_MSVC) +# pragma warning( pop ) #endif -// bind_t - -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !(defined(BOOST_GCC) && BOOST_GCC < 40600) - -template< class A1 > class rrlist1 -{ -private: - - A1 & a1_; // not A1&& because of msvc-10.0 - -public: - - explicit rrlist1( A1 & a1 ): a1_( a1 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } // not static_cast because of g++ 4.9 - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const - { - rrlist1<A1&> a( a1_ ); - return b.eval( a ); - } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const - { - rrlist1<A1&> a( a1_ ); - return b.eval( a ); - } -}; - -template< class A1, class A2 > class rrlist2 -{ -private: - - A1 & a1_; - A2 & a2_; - -public: - - rrlist2( A1 & a1, A2 & a2 ): a1_( a1 ), a2_( a2 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } + // - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const + template<class R, class F, class A2> R operator()( type<R>, F & f, A2 & a2 ) { - rrlist2<A1&, A2&> a( a1_, a2_ ); - return b.eval( a ); + return call_impl( type<R>(), f, a2, _bi::index_sequence_for<A...>() ); } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const + template<class R, class F, class A2> R operator()( type<R>, F & f, A2 & a2 ) const { - rrlist2<A1&, A2&> a( a1_, a2_ ); - return b.eval( a ); + return call_impl( type<R>(), f, a2, _bi::index_sequence_for<A...>() ); } -}; - -template< class A1, class A2, class A3 > class rrlist3 -{ -private: - - A1 & a1_; - A2 & a2_; - A3 & a3_; - -public: - - rrlist3( A1 & a1, A2 & a2, A3 & a3 ): a1_( a1 ), a2_( a2 ), a3_( a3 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } + // - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const + template<class A2> bool operator()( type<bool>, logical_and & /*f*/, A2 & a2 ) { - rrlist3<A1&, A2&, A3&> a( a1_, a2_, a3_ ); - return b.eval( a ); + static_assert( sizeof...(A) == 2, "operator&& must have two arguments" ); + return a2[ std::get<0>( data_ ) ] && a2[ std::get<1>( data_ ) ]; } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const + template<class A2> bool operator()( type<bool>, logical_and const & /*f*/, A2 & a2 ) const { - rrlist3<A1&, A2&, A3&> a( a1_, a2_, a3_ ); - return b.eval( a ); + static_assert( sizeof...(A) == 2, "operator&& must have two arguments" ); + return a2[ std::get<0>( data_ ) ] && a2[ std::get<1>( data_ ) ]; } -}; - -template< class A1, class A2, class A3, class A4 > class rrlist4 -{ -private: - - A1 & a1_; - A2 & a2_; - A3 & a3_; - A4 & a4_; - -public: - - rrlist4( A1 & a1, A2 & a2, A3 & a3, A4 & a4 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ) {} - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const + template<class A2> bool operator()( type<bool>, logical_or & /*f*/, A2 & a2 ) { - rrlist4<A1&, A2&, A3&, A4&> a( a1_, a2_, a3_, a4_ ); - return b.eval( a ); + static_assert( sizeof...(A) == 2, "operator|| must have two arguments" ); + return a2[ std::get<0>( data_ ) ] || a2[ std::get<1>( data_ ) ]; } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const + template<class A2> bool operator()( type<bool>, logical_or const & /*f*/, A2 & a2 ) const { - rrlist4<A1&, A2&, A3&, A4&> a( a1_, a2_, a3_, a4_ ); - return b.eval( a ); + static_assert( sizeof...(A) == 2, "operator|| must have two arguments" ); + return a2[ std::get<0>( data_ ) ] || a2[ std::get<1>( data_ ) ]; } -}; - -template< class A1, class A2, class A3, class A4, class A5 > class rrlist5 -{ -private: - - A1 & a1_; - A2 & a2_; - A3 & a3_; - A4 & a4_; - A5 & a5_; -public: - - rrlist5( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } + // - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const + template<class V> void accept( V & v ) const { - rrlist5<A1&, A2&, A3&, A4&, A5&> a( a1_, a2_, a3_, a4_, a5_ ); - return b.eval( a ); + _bi::tuple_for_each( accept_lambda<V>( v ), data_ ); } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const + bool operator==( list const & rhs ) const { - rrlist5<A1&, A2&, A3&, A4&, A5&> a( a1_, a2_, a3_, a4_, a5_ ); - return b.eval( a ); + return _bi::tuple_for_each( equal_lambda(), data_, rhs.data_ ).result; } }; -template< class A1, class A2, class A3, class A4, class A5, class A6 > class rrlist6 -{ -private: - - A1 & a1_; - A2 & a2_; - A3 & a3_; - A4 & a4_; - A5 & a5_; - A6 & a6_; - -public: - - rrlist6( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const - { - rrlist6<A1&, A2&, A3&, A4&, A5&, A6&> a( a1_, a2_, a3_, a4_, a5_, a6_ ); - return b.eval( a ); - } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const - { - rrlist6<A1&, A2&, A3&, A4&, A5&, A6&> a( a1_, a2_, a3_, a4_, a5_, a6_ ); - return b.eval( a ); - } -}; +// bind_t -template< class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class rrlist7 +template<class... A> class rrlist { private: - A1 & a1_; - A2 & a2_; - A3 & a3_; - A4 & a4_; - A5 & a5_; - A6 & a6_; - A7 & a7_; - -public: - - rrlist7( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); } - A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); } + using args_type = std::tuple<A...>; - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); } - A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); } + using data_type = std::tuple<A&...>; + data_type data_; - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const - { - rrlist7<A1&, A2&, A3&, A4&, A5&, A6&, A7&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_ ); - return b.eval( a ); - } - - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const - { - rrlist7<A1&, A2&, A3&, A4&, A5&, A6&, A7&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_ ); - return b.eval( a ); - } -}; - -template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class rrlist8 -{ -private: - - A1 & a1_; - A2 & a2_; - A3 & a3_; - A4 & a4_; - A5 & a5_; - A6 & a6_; - A7 & a7_; - A8 & a8_; + template<class...> friend class rrlist; public: - rrlist8( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ), a8_( a8 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); } - A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); } - A8 && operator[] (boost::arg<8>) const { return std::forward<A8>( a8_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); } - A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); } - A8 && operator[] (boost::arg<8> (*) ()) const { return std::forward<A8>( a8_ ); } - - template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } - - template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } + explicit rrlist( A&... a ): data_( a... ) {} + template<class... B> explicit rrlist( rrlist<B...> const& r ): data_( r.data_ ) {} - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const + template<int I> typename std::tuple_element<I-1, args_type>::type&& operator[] ( boost::arg<I> ) const { - rrlist8<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_ ); - return b.eval( a ); + return std::forward<typename std::tuple_element<I-1, args_type>::type>( std::get<I-1>( data_ ) ); } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const + template<int I> typename std::tuple_element<I-1, args_type>::type&& operator[] ( boost::arg<I>(*)() ) const { - rrlist8<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_ ); - return b.eval( a ); + return std::forward<typename std::tuple_element<I-1, args_type>::type>( std::get<I-1>( data_ ) ); } -}; - -template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9 > class rrlist9 -{ -private: - - A1 & a1_; - A2 & a2_; - A3 & a3_; - A4 & a4_; - A5 & a5_; - A6 & a6_; - A7 & a7_; - A8 & a8_; - A9 & a9_; - -public: - - rrlist9( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ), a8_( a8 ), a9_( a9 ) {} - - A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); } - A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); } - A8 && operator[] (boost::arg<8>) const { return std::forward<A8>( a8_ ); } - A9 && operator[] (boost::arg<9>) const { return std::forward<A9>( a9_ ); } - - A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); } - A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); } - A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); } - A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); } - A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); } - A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); } - A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); } - A8 && operator[] (boost::arg<8> (*) ()) const { return std::forward<A8>( a8_ ); } - A9 && operator[] (boost::arg<9> (*) ()) const { return std::forward<A9>( a9_ ); } template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); } template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); } - template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); } + template<class T> T & operator[] ( reference_wrapper<T> const & v ) const { return v.get(); } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const + template<class R, class F, class L> typename result_traits<R, F>::type operator[] ( bind_t<R, F, L> & b ) const { - rrlist9<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&, A9&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_ ); - return b.eval( a ); + rrlist<A&...> a2( *this ); + return b.eval( a2 ); } - template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const + template<class R, class F, class L> typename result_traits<R, F>::type operator[] ( bind_t<R, F, L> const & b ) const { - rrlist9<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&, A9&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_ ); - return b.eval( a ); + rrlist<A&...> a2( *this ); + return b.eval( a2 ); } }; @@ -1264,290 +311,56 @@ public: typedef typename result_traits<R, F>::type result_type; typedef bind_t this_type; - bind_t( F f, L const & l ): f_( f ), l_( l ) {} + bind_t( F f, L const & l ): f_( std::move(f) ), l_( l ) {} // - result_type operator()() - { - list0 a; - return l_( type<result_type>(), f_, a, 0 ); - } - - result_type operator()() const - { - list0 a; - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1> result_type operator()( A1 && a1 ) - { - rrlist1< A1 > a( a1 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1> result_type operator()( A1 && a1 ) const - { - rrlist1< A1 > a( a1 ); - return l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2> result_type operator()( A1 && a1, A2 && a2 ) - { - rrlist2< A1, A2 > a( a1, a2 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2> result_type operator()( A1 && a1, A2 && a2 ) const - { - rrlist2< A1, A2 > a( a1, a2 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3> result_type operator()( A1 && a1, A2 && a2, A3 && a3 ) - { - rrlist3< A1, A2, A3 > a( a1, a2, a3 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3> result_type operator()( A1 && a1, A2 && a2, A3 && a3 ) const - { - rrlist3< A1, A2, A3 > a( a1, a2, a3 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4 ) - { - rrlist4< A1, A2, A3, A4 > a( a1, a2, a3, a4 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4 ) const - { - rrlist4< A1, A2, A3, A4 > a( a1, a2, a3, a4 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5 ) - { - rrlist5< A1, A2, A3, A4, A5 > a( a1, a2, a3, a4, a5 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5 ) const - { - rrlist5< A1, A2, A3, A4, A5 > a( a1, a2, a3, a4, a5 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6 ) - { - rrlist6< A1, A2, A3, A4, A5, A6 > a( a1, a2, a3, a4, a5, a6 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6 ) const - { - rrlist6< A1, A2, A3, A4, A5, A6 > a( a1, a2, a3, a4, a5, a6 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7 ) - { - rrlist7< A1, A2, A3, A4, A5, A6, A7 > a( a1, a2, a3, a4, a5, a6, a7 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7 ) const - { - rrlist7< A1, A2, A3, A4, A5, A6, A7 > a( a1, a2, a3, a4, a5, a6, a7 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8 ) - { - rrlist8< A1, A2, A3, A4, A5, A6, A7, A8 > a( a1, a2, a3, a4, a5, a6, a7, a8 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8 ) const - { - rrlist8< A1, A2, A3, A4, A5, A6, A7, A8 > a( a1, a2, a3, a4, a5, a6, a7, a8 ); - return l_( type<result_type>(), f_, a, 0 ); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8, A9 && a9 ) + template<class... A> result_type operator()( A&&... a ) { - rrlist9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > a( a1, a2, a3, a4, a5, a6, a7, a8, a9 ); - return l_( type<result_type>(), f_, a, 0 ); + rrlist<A...> a2( a... ); + return l_( type<result_type>(), f_, a2 ); } - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8, A9 && a9 ) const + template<class... A> result_type operator()( A&&... a ) const { - rrlist9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > a( a1, a2, a3, a4, a5, a6, a7, a8, a9 ); - return l_( type<result_type>(), f_, a, 0 ); + rrlist<A...> a2( a... ); + return l_( type<result_type>(), f_, a2 ); } // template<class A> result_type eval( A & a ) { - return l_( type<result_type>(), f_, a, 0 ); + return l_( type<result_type>(), f_, a ); } template<class A> result_type eval( A & a ) const { - return l_( type<result_type>(), f_, a, 0 ); + return l_( type<result_type>(), f_, a ); } template<class V> void accept( V & v ) const { -#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( BOOST_BORLANDC ) using boost::visit_each; -#endif - - BOOST_BIND_VISIT_EACH( v, f_, 0 ); + visit_each( v, f_, 0 ); l_.accept( v ); } bool compare( this_type const & rhs ) const { - return ref_compare( f_, rhs.f_, 0 ) && l_ == rhs.l_; + return ref_compare( f_, rhs.f_ ) && l_ == rhs.l_; } }; -#elif !defined( BOOST_NO_VOID_RETURNS ) - -template<class R, class F, class L> class bind_t -{ -public: - - typedef bind_t this_type; - - bind_t(F f, L const & l): f_(f), l_(l) {} - -#define BOOST_BIND_RETURN return -#include <boost/bind/bind_template.hpp> -#undef BOOST_BIND_RETURN - -}; - -#else // no void returns - -template<class R> struct bind_t_generator -{ - -template<class F, class L> class implementation -{ -public: - - typedef implementation this_type; - - implementation(F f, L const & l): f_(f), l_(l) {} - -#define BOOST_BIND_RETURN return -#include <boost/bind/bind_template.hpp> -#undef BOOST_BIND_RETURN - -}; - -}; - -template<> struct bind_t_generator<void> -{ - -template<class F, class L> class implementation -{ -private: - - typedef void R; - -public: - - typedef implementation this_type; - - implementation(F f, L const & l): f_(f), l_(l) {} - -#define BOOST_BIND_RETURN -#include <boost/bind/bind_template.hpp> -#undef BOOST_BIND_RETURN - -}; - -}; - -template<class R2, class F, class L> class bind_t: public bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L> -{ -public: - - bind_t(F f, L const & l): bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>(f, l) {} - -}; - -#endif - // function_equal -#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP - -// put overloads in _bi, rely on ADL - -# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - template<class R, class F, class L> bool function_equal( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b ) { return a.compare(b); } -# else - -template<class R, class F, class L> bool function_equal_impl( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int ) -{ - return a.compare(b); -} - -# endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -#else // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP - -// put overloads in boost - -} // namespace _bi - -# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -template<class R, class F, class L> bool function_equal( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b ) -{ - return a.compare(b); -} - -# else - -template<class R, class F, class L> bool function_equal_impl( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b, int ) -{ - return a.compare(b); -} - -# endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -namespace _bi -{ - -#endif // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP - // add_value -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530) - -#if defined( BOOST_BORLANDC ) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x582) ) - -template<class T> struct add_value -{ - typedef _bi::value<T> type; -}; - -#else - template< class T, int I > struct add_value_2 { typedef boost::arg<I> type; @@ -1563,8 +376,6 @@ template<class T> struct add_value typedef typename add_value_2< T, boost::is_placeholder< T >::value >::type type; }; -#endif - template<class T> struct add_value< value<T> > { typedef _bi::value<T> type; @@ -1590,135 +401,11 @@ template<class R, class F, class L> struct add_value< bind_t<R, F, L> > typedef bind_t<R, F, L> type; }; -#else - -template<int I> struct _avt_0; +// list_av -template<> struct _avt_0<1> +template<class... A> struct list_av { - template<class T> struct inner - { - typedef T type; - }; -}; - -template<> struct _avt_0<2> -{ - template<class T> struct inner - { - typedef value<T> type; - }; -}; - -typedef char (&_avt_r1) [1]; -typedef char (&_avt_r2) [2]; - -template<class T> _avt_r1 _avt_f(value<T>); -template<class T> _avt_r1 _avt_f(reference_wrapper<T>); -template<int I> _avt_r1 _avt_f(arg<I>); -template<int I> _avt_r1 _avt_f(arg<I> (*) ()); -template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>); - -_avt_r2 _avt_f(...); - -template<class T> struct add_value -{ - static T t(); - typedef typename _avt_0<sizeof(_avt_f(t()))>::template inner<T>::type type; -}; - -#endif - -// list_av_N - -template<class A1> struct list_av_1 -{ - typedef typename add_value<A1>::type B1; - typedef list1<B1> type; -}; - -template<class A1, class A2> struct list_av_2 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef list2<B1, B2> type; -}; - -template<class A1, class A2, class A3> struct list_av_3 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef list3<B1, B2, B3> type; -}; - -template<class A1, class A2, class A3, class A4> struct list_av_4 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef typename add_value<A4>::type B4; - typedef list4<B1, B2, B3, B4> type; -}; - -template<class A1, class A2, class A3, class A4, class A5> struct list_av_5 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef typename add_value<A4>::type B4; - typedef typename add_value<A5>::type B5; - typedef list5<B1, B2, B3, B4, B5> type; -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6> struct list_av_6 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef typename add_value<A4>::type B4; - typedef typename add_value<A5>::type B5; - typedef typename add_value<A6>::type B6; - typedef list6<B1, B2, B3, B4, B5, B6> type; -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct list_av_7 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef typename add_value<A4>::type B4; - typedef typename add_value<A5>::type B5; - typedef typename add_value<A6>::type B6; - typedef typename add_value<A7>::type B7; - typedef list7<B1, B2, B3, B4, B5, B6, B7> type; -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct list_av_8 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef typename add_value<A4>::type B4; - typedef typename add_value<A5>::type B5; - typedef typename add_value<A6>::type B6; - typedef typename add_value<A7>::type B7; - typedef typename add_value<A8>::type B8; - typedef list8<B1, B2, B3, B4, B5, B6, B7, B8> type; -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct list_av_9 -{ - typedef typename add_value<A1>::type B1; - typedef typename add_value<A2>::type B2; - typedef typename add_value<A3>::type B3; - typedef typename add_value<A4>::type B4; - typedef typename add_value<A5>::type B5; - typedef typename add_value<A6>::type B6; - typedef typename add_value<A7>::type B7; - typedef typename add_value<A8>::type B8; - typedef typename add_value<A9>::type B9; - typedef list9<B1, B2, B3, B4, B5, B6, B7, B8, B9> type; + typedef list< typename add_value<A>::type... > type; }; // operator! @@ -1729,10 +416,10 @@ struct logical_not }; template<class R, class F, class L> - bind_t< bool, logical_not, list1< bind_t<R, F, L> > > + bind_t< bool, logical_not, list< bind_t<R, F, L> > > operator! (bind_t<R, F, L> const & f) { - typedef list1< bind_t<R, F, L> > list_type; + typedef list< bind_t<R, F, L> > list_type; return bind_t<bool, logical_not, list_type> ( logical_not(), list_type(f) ); } @@ -1746,11 +433,11 @@ struct name \ }; \ \ template<class R, class F, class L, class A2> \ - bind_t< bool, name, list2< bind_t<R, F, L>, typename add_value<A2>::type > > \ + bind_t< bool, name, list< bind_t<R, F, L>, typename add_value<A2>::type > > \ operator op (bind_t<R, F, L> const & f, A2 a2) \ { \ typedef typename add_value<A2>::type B2; \ - typedef list2< bind_t<R, F, L>, B2> list_type; \ + typedef list< bind_t<R, F, L>, B2> list_type; \ return bind_t<bool, name, list_type> ( name(), list_type(f, a2) ); \ } @@ -1768,36 +455,12 @@ BOOST_BIND_OPERATOR( ||, logical_or ) #undef BOOST_BIND_OPERATOR -#if defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3) - -// resolve ambiguity with rel_ops - -#define BOOST_BIND_OPERATOR( op, name ) \ -\ -template<class R, class F, class L> \ - bind_t< bool, name, list2< bind_t<R, F, L>, bind_t<R, F, L> > > \ - operator op (bind_t<R, F, L> const & f, bind_t<R, F, L> const & g) \ -{ \ - typedef list2< bind_t<R, F, L>, bind_t<R, F, L> > list_type; \ - return bind_t<bool, name, list_type> ( name(), list_type(f, g) ); \ -} - -BOOST_BIND_OPERATOR( !=, not_equal ) -BOOST_BIND_OPERATOR( <=, less_equal ) -BOOST_BIND_OPERATOR( >, greater ) -BOOST_BIND_OPERATOR( >=, greater_equal ) - -#endif - -// visit_each, ADL - -#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( BOOST_BORLANDC ) \ - && !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3) +// visit_each template<class V, class T> void visit_each( V & v, value<T> const & t, int ) { using boost::visit_each; - BOOST_BIND_VISIT_EACH( v, t.get(), 0 ); + visit_each( v, t.get(), 0 ); } template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F, L> const & t, int ) @@ -1805,27 +468,8 @@ template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F t.accept( v ); } -#endif - } // namespace _bi -// visit_each, no ADL - -#if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( BOOST_BORLANDC ) \ - || (defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3) - -template<class V, class T> void visit_each( V & v, _bi::value<T> const & t, int ) -{ - BOOST_BIND_VISIT_EACH( v, t.get(), 0 ); -} - -template<class V, class R, class F, class L> void visit_each( V & v, _bi::bind_t<R, F, L> const & t, int ) -{ - t.accept( v ); -} - -#endif - // is_bind_expression template< class T > struct is_bind_expression @@ -1833,15 +477,11 @@ template< class T > struct is_bind_expression enum _vt { value = 0 }; }; -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, F, L > > { enum _vt { value = 1 }; }; -#endif - // bind #ifndef BOOST_BIND @@ -1850,266 +490,135 @@ template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, // generic function objects -template<class R, class F> - _bi::bind_t<R, F, _bi::list0> - BOOST_BIND(F f) -{ - typedef _bi::list0 list_type; - return _bi::bind_t<R, F, list_type> (f, list_type()); -} - -template<class R, class F, class A1> - _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type> - BOOST_BIND(F f, A1 a1) -{ - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<R, F, list_type> (f, list_type(a1)); -} - -template<class R, class F, class A1, class A2> - _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(F f, A1 a1, A2 a2) -{ - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2)); -} - -template<class R, class F, class A1, class A2, class A3> - _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3) -{ - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3)); -} - -template<class R, class F, class A1, class A2, class A3, class A4> - _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4)); -} - -template<class R, class F, class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5)); -} - -template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6)); -} +#if !BOOST_WORKAROUND(__GNUC__, < 6) -template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +template<class R, class F, class... A> + _bi::bind_t<R, F, typename _bi::list_av<A...>::type> + BOOST_BIND( F f, A... a ) { - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7)); + typedef typename _bi::list_av<A...>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a... ) ); } -template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} +#else -// generic function objects, alternative syntax +// g++ 4.x (and some 5.x) consider boost::bind<void>( &X::f ) +// ambiguous if the variadic form above is used template<class R, class F> - _bi::bind_t<R, F, _bi::list0> - BOOST_BIND(boost::type<R>, F f) + _bi::bind_t<R, F, typename _bi::list_av<>::type> + BOOST_BIND( F f ) { - typedef _bi::list0 list_type; - return _bi::bind_t<R, F, list_type> (f, list_type()); + typedef typename _bi::list_av<>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type() ); } template<class R, class F, class A1> - _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1) + _bi::bind_t<R, F, typename _bi::list_av<A1>::type> + BOOST_BIND( F f, A1 a1 ) { - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<R, F, list_type> (f, list_type(a1)); + typedef typename _bi::list_av<A1>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1 ) ); } template<class R, class F, class A1, class A2> - _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2>::type> + BOOST_BIND( F f, A1 a1, A2 a2 ) { - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2)); + typedef typename _bi::list_av<A1, A2>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2 ) ); } template<class R, class F, class A1, class A2, class A3> - _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3 ) { - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3)); + typedef typename _bi::list_av<A1, A2, A3>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3 ) ); } template<class R, class F, class A1, class A2, class A3, class A4> - _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4 ) { - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4)); + typedef typename _bi::list_av<A1, A2, A3, A4>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4 ) ); } template<class R, class F, class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ) { - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5)); + typedef typename _bi::list_av<A1, A2, A3, A4, A5>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5 ) ); } template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ) { - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6)); + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6 ) ); } template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ) { - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7)); + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6, a7 ) ); } template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ) { - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6, a7, a8 ) ); } template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - -// adaptable function objects - -template<class F> - _bi::bind_t<_bi::unspecified, F, _bi::list0> - BOOST_BIND(F f) -{ - typedef _bi::list0 list_type; - return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type()); -} - -template<class F, class A1> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1<A1>::type> - BOOST_BIND(F f, A1 a1) -{ - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1)); -} - -template<class F, class A1, class A2> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(F f, A1 a1, A2 a2) -{ - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2)); -} - -template<class F, class A1, class A2, class A3> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3) + _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> + BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ) { - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3)); + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ); } -template<class F, class A1, class A2, class A3, class A4> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4)); -} - -template<class F, class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5)); -} +#endif -template<class F, class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6)); -} +// generic function objects, alternative syntax -template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +template<class R, class F, class... A> + _bi::bind_t<R, F, typename _bi::list_av<A...>::type> + BOOST_BIND( boost::type<R>, F f, A... a ) { - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7)); + typedef typename _bi::list_av<A...>::type list_type; + return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a... ) ); } -template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} +// adaptable function objects -template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +template<class F, class... A> + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av<A...>::type> + BOOST_BIND( F f, A... a ) { - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); + typedef typename _bi::list_av<A...>::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>( std::move(f), list_type( a... ) ); } -#endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - // function pointers #define BOOST_BIND_CC #define BOOST_BIND_ST #define BOOST_BIND_NOEXCEPT -#include <boost/bind/bind_cc.hpp> +#include <boost/bind/detail/bind_cc.hpp> # if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED ) # undef BOOST_BIND_NOEXCEPT # define BOOST_BIND_NOEXCEPT noexcept -# include <boost/bind/bind_cc.hpp> +# include <boost/bind/detail/bind_cc.hpp> # endif #undef BOOST_BIND_CC @@ -2122,7 +631,7 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_ST #define BOOST_BIND_NOEXCEPT -#include <boost/bind/bind_cc.hpp> +#include <boost/bind/detail/bind_cc.hpp> #undef BOOST_BIND_CC #undef BOOST_BIND_ST @@ -2136,7 +645,7 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_ST #define BOOST_BIND_NOEXCEPT -#include <boost/bind/bind_cc.hpp> +#include <boost/bind/detail/bind_cc.hpp> #undef BOOST_BIND_CC #undef BOOST_BIND_ST @@ -2150,7 +659,7 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_CC #define BOOST_BIND_NOEXCEPT -#include <boost/bind/bind_cc.hpp> +#include <boost/bind/detail/bind_cc.hpp> #undef BOOST_BIND_ST #undef BOOST_BIND_CC @@ -2164,14 +673,14 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_MF_CC #define BOOST_BIND_MF_NOEXCEPT -#include <boost/bind/bind_mf_cc.hpp> -#include <boost/bind/bind_mf2_cc.hpp> +#include <boost/bind/detail/bind_mf_cc.hpp> +#include <boost/bind/detail/bind_mf2_cc.hpp> # if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED ) # undef BOOST_BIND_MF_NOEXCEPT # define BOOST_BIND_MF_NOEXCEPT noexcept -# include <boost/bind/bind_mf_cc.hpp> -# include <boost/bind/bind_mf2_cc.hpp> +# include <boost/bind/detail/bind_mf_cc.hpp> +# include <boost/bind/detail/bind_mf2_cc.hpp> # endif #undef BOOST_BIND_MF_NAME @@ -2184,8 +693,8 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_MF_CC __cdecl #define BOOST_BIND_MF_NOEXCEPT -#include <boost/bind/bind_mf_cc.hpp> -#include <boost/bind/bind_mf2_cc.hpp> +#include <boost/bind/detail/bind_mf_cc.hpp> +#include <boost/bind/detail/bind_mf2_cc.hpp> #undef BOOST_BIND_MF_NAME #undef BOOST_BIND_MF_CC @@ -2199,8 +708,8 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_MF_CC __stdcall #define BOOST_BIND_MF_NOEXCEPT -#include <boost/bind/bind_mf_cc.hpp> -#include <boost/bind/bind_mf2_cc.hpp> +#include <boost/bind/detail/bind_mf_cc.hpp> +#include <boost/bind/detail/bind_mf2_cc.hpp> #undef BOOST_BIND_MF_NAME #undef BOOST_BIND_MF_CC @@ -2214,8 +723,8 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl #define BOOST_BIND_MF_CC __fastcall #define BOOST_BIND_MF_NOEXCEPT -#include <boost/bind/bind_mf_cc.hpp> -#include <boost/bind/bind_mf2_cc.hpp> +#include <boost/bind/detail/bind_mf_cc.hpp> +#include <boost/bind/detail/bind_mf2_cc.hpp> #undef BOOST_BIND_MF_NAME #undef BOOST_BIND_MF_CC @@ -2225,20 +734,6 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl // data member pointers -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - || ( defined(BOOST_BORLANDC) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT( 0x620 ) ) ) - -template<class R, class T, class A1> -_bi::bind_t< R, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type > - BOOST_BIND(R T::*f, A1 a1) -{ - typedef _mfi::dm<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<R, F, list_type>( F(f), list_type(a1) ); -} - -#else - namespace _bi { @@ -2266,8 +761,6 @@ template< class R, class T > struct add_cref< R (T::*) (), 1 > typedef void type; }; -#if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION - template< class R, class T > struct add_cref< R (T::*) () const, 1 > { typedef void type; @@ -2282,8 +775,6 @@ template< class R, class T > struct add_cref< R (T::*) () const noexcept, 1 > #endif // __cpp_noexcept_function_type -#endif // __IBMCPP__ - template<class R> struct isref { enum value_type { value = 0 }; @@ -2317,19 +808,17 @@ template< class A1, class M, class T > _bi::bind_t< typename _bi::dm_result< M T::*, A1 >::type, _mfi::dm<M, T>, - typename _bi::list_av_1<A1>::type + typename _bi::list_av<A1>::type > BOOST_BIND( M T::*f, A1 a1 ) { typedef typename _bi::dm_result< M T::*, A1 >::type result_type; typedef _mfi::dm<M, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; + typedef typename _bi::list_av<A1>::type list_type; return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) ); } -#endif - } // namespace boost #ifndef BOOST_BIND_NO_PLACEHOLDERS diff --git a/contrib/restricted/boost/bind/include/boost/bind/bind_mf2_cc.hpp b/contrib/restricted/boost/bind/include/boost/bind/bind_mf2_cc.hpp deleted file mode 100644 index be20b1d907..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/bind_mf2_cc.hpp +++ /dev/null @@ -1,228 +0,0 @@ -// -// bind/bind_mf2_cc.hpp - member functions, type<> syntax -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2008 Peter Dimov -// -// 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 -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -// 0 - -template<class Rt2, class R, class T, - class A1> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1)); -} - -template<class Rt2, class R, class T, - class A1> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1)); -} - -// 1 - -template<class Rt2, class R, class T, - class B1, - class A1, class A2> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F; - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2)); -} - -template<class Rt2, class R, class T, - class B1, - class A1, class A2> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F; - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2)); -} - -// 2 - -template<class Rt2, class R, class T, - class B1, class B2, - class A1, class A2, class A3> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3)); -} - -template<class Rt2, class R, class T, - class B1, class B2, - class A1, class A2, class A3> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3)); -} - -// 3 - -template<class Rt2, class R, class T, - class B1, class B2, class B3, - class A1, class A2, class A3, class A4> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, - class A1, class A2, class A3, class A4> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4)); -} - -// 4 - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, - class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, - class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5)); -} - -// 5 - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, - class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, - class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -// 6 - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, - class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, - class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -// 7 - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -// 8 - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} diff --git a/contrib/restricted/boost/bind/include/boost/bind/bind_mf_cc.hpp b/contrib/restricted/boost/bind/include/boost/bind/bind_mf_cc.hpp deleted file mode 100644 index 5a1610b42a..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/bind_mf_cc.hpp +++ /dev/null @@ -1,441 +0,0 @@ -// -// bind/bind_mf_cc.hpp - support for different calling conventions -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// 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) -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -// 0 - -template<class R, class T, - class A1> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1)); -} - -template<class R, class T, - class A1> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1)); -} - -template<class Rt2, class R, class T, - class A1> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1)); -} - -template<class Rt2, class R, class T, - class A1> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F; - typedef typename _bi::list_av_1<A1>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1)); -} - -// 1 - -template<class R, class T, - class B1, - class A1, class A2> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F; - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2)); -} - -template<class R, class T, - class B1, - class A1, class A2> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F; - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2)); -} - -template<class Rt2, class R, class T, - class B1, - class A1, class A2> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F; - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2)); -} - -template<class Rt2, class R, class T, - class B1, - class A1, class A2> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F; - typedef typename _bi::list_av_2<A1, A2>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2)); -} - -// 2 - -template<class R, class T, - class B1, class B2, - class A1, class A2, class A3> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3)); -} - -template<class R, class T, - class B1, class B2, - class A1, class A2, class A3> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3)); -} - -template<class Rt2, class R, class T, - class B1, class B2, - class A1, class A2, class A3> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3)); -} - -template<class Rt2, class R, class T, - class B1, class B2, - class A1, class A2, class A3> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3)); -} - -// 3 - -template<class R, class T, - class B1, class B2, class B3, - class A1, class A2, class A3, class A4> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4)); -} - -template<class R, class T, - class B1, class B2, class B3, - class A1, class A2, class A3, class A4> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, - class A1, class A2, class A3, class A4> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, - class A1, class A2, class A3, class A4> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4)); -} - -// 4 - -template<class R, class T, - class B1, class B2, class B3, class B4, - class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5)); -} - -template<class R, class T, - class B1, class B2, class B3, class B4, - class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, - class A1, class A2, class A3, class A4, class A5> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, - class A1, class A2, class A3, class A4, class A5> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5)); -} - -// 5 - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, - class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, - class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, - class A1, class A2, class A3, class A4, class A5, class A6> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, - class A1, class A2, class A3, class A4, class A5, class A6> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6)); -} - -// 6 - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, - class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, - class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, - class A1, class A2, class A3, class A4, class A5, class A6, class A7> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, - class A1, class A2, class A3, class A4, class A5, class A6, class A7> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); -} - -// 7 - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); -} - -// 8 - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -template<class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} - -template<class Rt2, class R, class T, - class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, - class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, - _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> - >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) -{ - typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; - return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); -} diff --git a/contrib/restricted/boost/bind/include/boost/bind/bind_template.hpp b/contrib/restricted/boost/bind/include/boost/bind/bind_template.hpp deleted file mode 100644 index 212ced7fa7..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/bind_template.hpp +++ /dev/null @@ -1,345 +0,0 @@ -// -// bind/bind_template.hpp -// -// Do not include this header directly. -// -// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd. -// -// 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) -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - - typedef typename result_traits<R, F>::type result_type; - - result_type operator()() - { - list0 a; - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - result_type operator()() const - { - list0 a; - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1> result_type operator()(A1 & a1) - { - list1<A1 &> a(a1); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1> result_type operator()(A1 & a1) const - { - list1<A1 &> a(a1); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1> result_type operator()(A1 const & a1) - { - list1<A1 const &> a(a1); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1> result_type operator()(A1 const & a1) const - { - list1<A1 const &> a(a1); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) - { - list2<A1 &, A2 &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const - { - list2<A1 &, A2 &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) - { - list2<A1 const &, A2 &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const - { - list2<A1 const &, A2 &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - - template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) - { - list2<A1 &, A2 const &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const - { - list2<A1 &, A2 const &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - - template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) - { - list2<A1 const &, A2 const &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const - { - list2<A1 const &, A2 const &> a(a1, a2); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) - { - list3<A1 &, A2 &, A3 &> a(a1, a2, a3); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const - { - list3<A1 &, A2 &, A3 &> a(a1, a2, a3); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) - { - list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const - { - list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) - { - list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const - { - list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) - { - list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const - { - list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) - { - list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const - { - list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) - { - list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const - { - list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) - { - list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const - { - list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) - { - list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const - { - list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) - { - list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const - { - list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) - { - list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const - { - list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) - { - list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const - { - list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) - { - list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const - { - list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) - { - list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const - { - list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) - { - list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const - { - list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9); - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - -#endif - - template<class A> result_type eval(A & a) - { - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class A> result_type eval(A & a) const - { - BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0); - } - - template<class V> void accept(V & v) const - { -#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( BOOST_BORLANDC ) - - using boost::visit_each; - -#endif - BOOST_BIND_VISIT_EACH(v, f_, 0); - l_.accept(v); - } - - bool compare(this_type const & rhs) const - { - return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_; - } - -private: - - F f_; - L l_; diff --git a/contrib/restricted/boost/bind/include/boost/bind/bind_cc.hpp b/contrib/restricted/boost/bind/include/boost/bind/detail/bind_cc.hpp index 278aa9a2a8..fec86d4e0d 100644 --- a/contrib/restricted/boost/bind/include/boost/bind/bind_cc.hpp +++ b/contrib/restricted/boost/bind/include/boost/bind/detail/bind_cc.hpp @@ -13,105 +13,105 @@ // template<class R> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) () BOOST_BIND_NOEXCEPT, _bi::list0> +_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) () BOOST_BIND_NOEXCEPT, typename _bi::list_av<>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) () BOOST_BIND_NOEXCEPT) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) () BOOST_BIND_NOEXCEPT; - typedef _bi::list0 list_type; + typedef typename _bi::list_av<>::type list_type; return _bi::bind_t<R, F, list_type> (f, list_type()); } template<class R, class B1, class A1> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1) BOOST_BIND_NOEXCEPT, typename _bi::list_av_1<A1>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1) BOOST_BIND_NOEXCEPT, A1 a1) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_1<A1>::type list_type; + typedef typename _bi::list_av<A1>::type list_type; return _bi::bind_t<R, F, list_type> (f, list_type(a1)); } template<class R, class B1, class B2, class A1, class A2> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2) BOOST_BIND_NOEXCEPT, typename _bi::list_av_2<A1, A2>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_2<A1, A2>::type list_type; + typedef typename _bi::list_av<A1, A2>::type list_type; return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2)); } template<class R, class B1, class B2, class B3, class A1, class A2, class A3> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3) BOOST_BIND_NOEXCEPT, typename _bi::list_av_3<A1, A2, A3>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_3<A1, A2, A3>::type list_type; + typedef typename _bi::list_av<A1, A2, A3>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3)); } template<class R, class B1, class B2, class B3, class B4, class A1, class A2, class A3, class A4> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4) BOOST_BIND_NOEXCEPT, typename _bi::list_av_4<A1, A2, A3, A4>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3, A4>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type; + typedef typename _bi::list_av<A1, A2, A3, A4>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4)); } template<class R, class B1, class B2, class B3, class B4, class B5, class A1, class A2, class A3, class A4, class A5> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5) BOOST_BIND_NOEXCEPT, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3, A4, A5>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type; + typedef typename _bi::list_av<A1, A2, A3, A4, A5>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5)); } template<class R, class B1, class B2, class B3, class B4, class B5, class B6, class A1, class A2, class A3, class A4, class A5, class A6> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6) BOOST_BIND_NOEXCEPT, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3, A4, A5, A6>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type; + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6)); } template<class R, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class A1, class A2, class A3, class A4, class A5, class A6, class A7> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_NOEXCEPT, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type; + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7)); } template<class R, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_NOEXCEPT, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); } template<class R, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B9, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> - _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8, B9) BOOST_BIND_NOEXCEPT, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> + _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8, B9) BOOST_BIND_NOEXCEPT, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) { typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9) BOOST_BIND_NOEXCEPT; - typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; + typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type; return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); } diff --git a/contrib/restricted/boost/bind/include/boost/bind/detail/bind_mf2_cc.hpp b/contrib/restricted/boost/bind/include/boost/bind/detail/bind_mf2_cc.hpp new file mode 100644 index 0000000000..284f24172a --- /dev/null +++ b/contrib/restricted/boost/bind/include/boost/bind/detail/bind_mf2_cc.hpp @@ -0,0 +1,210 @@ +// +// bind/bind_mf2_cc.hpp - member functions, type<> syntax +// +// Do not include this header directly. +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2008 Peter Dimov +// +// 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 +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +// 0 + +template<class Rt2, class R, class T, + class A1> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1 ); +} + +template<class Rt2, class R, class T, + class A1> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1 ); +} + +// 1 + +template<class Rt2, class R, class T, + class B1, + class A1, class A2> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2 ); +} + +template<class Rt2, class R, class T, + class B1, + class A1, class A2> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2 ); +} + +// 2 + +template<class Rt2, class R, class T, + class B1, class B2, + class A1, class A2, class A3> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, + class A1, class A2, class A3> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3 ); +} + +// 3 + +template<class Rt2, class R, class T, + class B1, class B2, class B3, + class A1, class A2, class A3, class A4> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, + class A1, class A2, class A3, class A4> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4 ); +} + +// 4 + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, + class A1, class A2, class A3, class A4, class A5> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, + class A1, class A2, class A3, class A4, class A5> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5 ); +} + +// 5 + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, + class A1, class A2, class A3, class A4, class A5, class A6> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, + class A1, class A2, class A3, class A4, class A5, class A6> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); +} + +// 6 + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, + class A1, class A2, class A3, class A4, class A5, class A6, class A7> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, + class A1, class A2, class A3, class A4, class A5, class A6, class A7> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); +} + +// 7 + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); +} + +// 8 + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> + auto + BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) + -> decltype( boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) +{ + return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); +} diff --git a/contrib/restricted/boost/bind/include/boost/bind/detail/bind_mf_cc.hpp b/contrib/restricted/boost/bind/include/boost/bind/detail/bind_mf_cc.hpp new file mode 100644 index 0000000000..2336ca204c --- /dev/null +++ b/contrib/restricted/boost/bind/include/boost/bind/detail/bind_mf_cc.hpp @@ -0,0 +1,405 @@ +// +// bind/bind_mf_cc.hpp - support for different calling conventions +// +// Do not include this header directly. +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// +// 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) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +// 0 + +template<class R, class T, + class A1> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1 ); +} + +template<class R, class T, + class A1> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1 ); +} + +template<class Rt2, class R, class T, + class A1, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ); +} + +template<class Rt2, class R, class T, + class A1, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ); +} + +// 1 + +template<class R, class T, + class B1, + class A1, class A2> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ); +} + +template<class R, class T, + class B1, + class A1, class A2> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ); +} + +template<class Rt2, class R, class T, + class B1, + class A1, class A2, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ); +} + +template<class Rt2, class R, class T, + class B1, + class A1, class A2, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ); +} + +// 2 + +template<class R, class T, + class B1, class B2, + class A1, class A2, class A3> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ); +} + +template<class R, class T, + class B1, class B2, + class A1, class A2, class A3> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, + class A1, class A2, class A3, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, + class A1, class A2, class A3, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ); +} + +// 3 + +template<class R, class T, + class B1, class B2, class B3, + class A1, class A2, class A3, class A4> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ); +} + +template<class R, class T, + class B1, class B2, class B3, + class A1, class A2, class A3, class A4> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, + class A1, class A2, class A3, class A4, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, + class A1, class A2, class A3, class A4, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ); +} + +// 4 + +template<class R, class T, + class B1, class B2, class B3, class B4, + class A1, class A2, class A3, class A4, class A5> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); +} + +template<class R, class T, + class B1, class B2, class B3, class B4, + class A1, class A2, class A3, class A4, class A5> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, + class A1, class A2, class A3, class A4, class A5, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, + class A1, class A2, class A3, class A4, class A5, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); +} + +// 5 + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, + class A1, class A2, class A3, class A4, class A5, class A6> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); +} + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, + class A1, class A2, class A3, class A4, class A5, class A6> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, + class A1, class A2, class A3, class A4, class A5, class A6, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, + class A1, class A2, class A3, class A4, class A5, class A6, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); +} + +// 6 + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, + class A1, class A2, class A3, class A4, class A5, class A6, class A7> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); +} + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, + class A1, class A2, class A3, class A4, class A5, class A6, class A7> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); +} + +// 7 + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); +} + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); +} + +// 8 + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); +} + +template<class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) + -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) +{ + return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); +} + +template<class Rt2, class R, class T, + class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, + class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, + class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> + auto + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) + -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) +{ + return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); +} diff --git a/contrib/restricted/boost/bind/include/boost/bind/detail/integer_sequence.hpp b/contrib/restricted/boost/bind/include/boost/bind/detail/integer_sequence.hpp new file mode 100644 index 0000000000..ce2c2b0168 --- /dev/null +++ b/contrib/restricted/boost/bind/include/boost/bind/detail/integer_sequence.hpp @@ -0,0 +1,111 @@ +#ifndef BOOST_BIND_DETAIL_INTEGER_SEQUENCE_HPP_INCLUDED +#define BOOST_BIND_DETAIL_INTEGER_SEQUENCE_HPP_INCLUDED + +// Copyright 2015, 2017, 2019 Peter Dimov. +// +// 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 + +#include <cstddef> + +#if defined(__has_builtin) +# if __has_builtin(__make_integer_seq) +# define BOOST_BIND_DETAIL_HAS_MAKE_INTEGER_SEQ +# endif +#endif + +namespace boost +{ +namespace _bi +{ + +// integer_sequence +template<class T, T... I> struct integer_sequence +{ +}; + +#if defined(BOOST_BIND_DETAIL_HAS_MAKE_INTEGER_SEQ) + +template<class T, T N> using make_integer_sequence = __make_integer_seq<integer_sequence, T, N>; + +#else + +// detail::make_integer_sequence_impl +namespace detail +{ + +// iseq_if_c +template<bool C, class T, class E> struct iseq_if_c_impl; + +template<class T, class E> struct iseq_if_c_impl<true, T, E> +{ + using type = T; +}; + +template<class T, class E> struct iseq_if_c_impl<false, T, E> +{ + using type = E; +}; + +template<bool C, class T, class E> using iseq_if_c = typename iseq_if_c_impl<C, T, E>::type; + +// iseq_identity +template<class T> struct iseq_identity +{ + using type = T; +}; + +template<class S1, class S2> struct append_integer_sequence; + +template<class T, T... I, T... J> struct append_integer_sequence<integer_sequence<T, I...>, integer_sequence<T, J...>> +{ + using type = integer_sequence< T, I..., ( J + sizeof...(I) )... >; +}; + +template<class T, T N> struct make_integer_sequence_impl; + +template<class T, T N> struct make_integer_sequence_impl_ +{ +private: + + static_assert( N >= 0, "make_integer_sequence<T, N>: N must not be negative" ); + + static T const M = N / 2; + static T const R = N % 2; + + using S1 = typename make_integer_sequence_impl<T, M>::type; + using S2 = typename append_integer_sequence<S1, S1>::type; + using S3 = typename make_integer_sequence_impl<T, R>::type; + using S4 = typename append_integer_sequence<S2, S3>::type; + +public: + + using type = S4; +}; + +template<class T, T N> struct make_integer_sequence_impl: iseq_if_c<N == 0, iseq_identity<integer_sequence<T>>, iseq_if_c<N == 1, iseq_identity<integer_sequence<T, 0>>, make_integer_sequence_impl_<T, N> > > +{ +}; + +} // namespace detail + +// make_integer_sequence +template<class T, T N> using make_integer_sequence = typename detail::make_integer_sequence_impl<T, N>::type; + +#endif // defined(BOOST_BIND_DETAIL_HAS_MAKE_INTEGER_SEQ) + +// index_sequence +template<std::size_t... I> using index_sequence = integer_sequence<std::size_t, I...>; + +// make_index_sequence +template<std::size_t N> using make_index_sequence = make_integer_sequence<std::size_t, N>; + +// index_sequence_for +template<class... T> using index_sequence_for = make_integer_sequence<std::size_t, sizeof...(T)>; + +} // namespace _bi +} // namespace boost + +#endif // #ifndef BOOST_BIND_DETAIL_INTEGER_SEQUENCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/bind/include/boost/bind/detail/is_same.hpp b/contrib/restricted/boost/bind/include/boost/bind/detail/is_same.hpp deleted file mode 100644 index 995b39f4e6..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/detail/is_same.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef BOOST_BIND_DETAIL_IS_SAME_HPP_INCLUDED -#define BOOST_BIND_DETAIL_IS_SAME_HPP_INCLUDED - -// is_same<T1,T2>::value is true when T1 == T2 -// -// Copyright 2014 Peter Dimov -// -// 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 - -#include <boost/config.hpp> - -#if defined(BOOST_HAS_PRAGMA_ONCE) -# pragma once -#endif - -namespace boost -{ -namespace _bi -{ - -template< class T1, class T2 > struct is_same -{ - BOOST_STATIC_CONSTANT( bool, value = false ); -}; - -template< class T > struct is_same< T, T > -{ - BOOST_STATIC_CONSTANT( bool, value = true ); -}; - -} // namespace _bi -} // namespace boost - -#endif // #ifndef BOOST_BIND_DETAIL_IS_SAME_HPP_INCLUDED diff --git a/contrib/restricted/boost/bind/include/boost/bind/detail/tuple_for_each.hpp b/contrib/restricted/boost/bind/include/boost/bind/detail/tuple_for_each.hpp new file mode 100644 index 0000000000..d1eabff87a --- /dev/null +++ b/contrib/restricted/boost/bind/include/boost/bind/detail/tuple_for_each.hpp @@ -0,0 +1,64 @@ +#ifndef BOOST_BIND_DETAIL_TUPLE_FOR_EACH_HPP_INCLUDED +#define BOOST_BIND_DETAIL_TUPLE_FOR_EACH_HPP_INCLUDED + +// Copyright 2015-2020, 2024 Peter Dimov. +// +// 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 + +#include <boost/bind/detail/integer_sequence.hpp> +#include <boost/config.hpp> +#include <utility> +#include <type_traits> +#include <cstddef> + +#if defined(BOOST_MSVC) +# pragma warning( push ) +# pragma warning( disable: 4100 ) // unreferenced formal parameter 'tp' +#endif + +namespace boost +{ +namespace _bi +{ + +// tuple_for_each( f, tp ) + +template<class F, class Tp, std::size_t... J> F tuple_for_each_impl( F&& f, Tp&& tp, integer_sequence<std::size_t, J...> ) +{ + using A = int[ 1 + sizeof...(J) ]; + using std::get; + return (void)A{ 0, ((void)f(get<J>(std::forward<Tp>(tp))), 0)... }, std::forward<F>(f); +} + +template<class F, class Tp> F tuple_for_each( F&& f, Tp&& tp ) +{ + using seq = make_index_sequence<std::tuple_size<typename std::remove_reference<Tp>::type>::value>; + return _bi::tuple_for_each_impl( std::forward<F>(f), std::forward<Tp>(tp), seq() ); +} + +// tuple_for_each( f, tp1, tp2 ) + +template<class F, class Tp1, class Tp2, std::size_t... J> F tuple_for_each_impl( F&& f, Tp1&& tp1, Tp2&& tp2, integer_sequence<std::size_t, J...> ) +{ + using A = int[ 1 + sizeof...(J) ]; + using std::get; + return (void)A{ 0, ((void)f( get<J>(std::forward<Tp1>(tp1)), get<J>(std::forward<Tp2>(tp2)) ), 0)... }, std::forward<F>(f); +} + +template<class F, class Tp1, class Tp2> F tuple_for_each( F&& f, Tp1&& tp1, Tp2&& tp2 ) +{ + using seq = make_index_sequence<std::tuple_size<typename std::remove_reference<Tp1>::type>::value>; + return _bi::tuple_for_each_impl( std::forward<F>(f), std::forward<Tp1>(tp1), std::forward<Tp2>(tp2), seq() ); +} + +} // namespace _bi +} // namespace boost + +#if defined(BOOST_MSVC) +# pragma warning( pop ) +#endif + +#endif // #ifndef BOOST_BIND_DETAIL_TUPLE_FOR_EACH_HPP_INCLUDED diff --git a/contrib/restricted/boost/bind/include/boost/bind/mem_fn.hpp b/contrib/restricted/boost/bind/include/boost/bind/mem_fn.hpp index 1078e7c5a9..5cfbb99e69 100644 --- a/contrib/restricted/boost/bind/include/boost/bind/mem_fn.hpp +++ b/contrib/restricted/boost/bind/include/boost/bind/mem_fn.hpp @@ -8,318 +8,162 @@ #endif // -// mem_fn.hpp - a generalization of std::mem_fun[_ref] +// mem_fn.hpp - a generalization of std::mem_fun[_ref] // -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2001 David Abrahams -// Copyright (c) 2003-2005 Peter Dimov +// Copyright 2001-2005, 2024 Peter Dimov +// Copyright 2001 David Abrahams // // 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) // -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. +// See http://www.boost.org/libs/bind/mem_fn.html for documentation. // -#include <boost/bind/detail/requires_cxx11.hpp> #include <boost/get_pointer.hpp> #include <boost/config.hpp> #include <boost/config/workaround.hpp> +#include <type_traits> namespace boost { -#if defined(BOOST_NO_VOID_RETURNS) - -#define BOOST_MEM_FN_CLASS_F , class F -#define BOOST_MEM_FN_TYPEDEF(X) - -namespace _mfi // mem_fun_impl +namespace _mfi { -template<class V> struct mf +template<class T> struct remove_cvref: std::remove_cv< typename std::remove_reference<T>::type > { +}; -#define BOOST_MEM_FN_RETURN return - -#define BOOST_MEM_FN_NAME(X) inner_##X -#define BOOST_MEM_FN_CC - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl -#define BOOST_MEM_FN_CC __cdecl - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#if defined(BOOST_MEM_FN_ENABLE_STDCALL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall -#define BOOST_MEM_FN_CC __stdcall - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#if defined(BOOST_MEM_FN_ENABLE_FASTCALL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall -#define BOOST_MEM_FN_CC __fastcall - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#undef BOOST_MEM_FN_RETURN - -}; // struct mf<V> - -template<> struct mf<void> +template<class Pm, class R, class T, class... A> class mf { +public: -#define BOOST_MEM_FN_RETURN - -#define BOOST_MEM_FN_NAME(X) inner_##X -#define BOOST_MEM_FN_CC - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl -#define BOOST_MEM_FN_CC __cdecl - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#ifdef BOOST_MEM_FN_ENABLE_STDCALL - -#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall -#define BOOST_MEM_FN_CC __stdcall - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#ifdef BOOST_MEM_FN_ENABLE_FASTCALL - -#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall -#define BOOST_MEM_FN_CC __fastcall - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#undef BOOST_MEM_FN_RETURN - -}; // struct mf<void> - -#undef BOOST_MEM_FN_CLASS_F -#undef BOOST_MEM_FN_TYPEDEF_F - -#define BOOST_MEM_FN_NAME(X) X -#define BOOST_MEM_FN_NAME2(X) inner_##X -#define BOOST_MEM_FN_CC - -#include <boost/bind/mem_fn_vw.hpp> - -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_NAME2 -#undef BOOST_MEM_FN_CC - -#if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) X##_cdecl -#define BOOST_MEM_FN_NAME2(X) inner_##X##_cdecl -#define BOOST_MEM_FN_CC __cdecl - -#include <boost/bind/mem_fn_vw.hpp> - -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_NAME2 -#undef BOOST_MEM_FN_CC - -#endif + typedef R result_type; -#ifdef BOOST_MEM_FN_ENABLE_STDCALL +private: -#define BOOST_MEM_FN_NAME(X) X##_stdcall -#define BOOST_MEM_FN_NAME2(X) inner_##X##_stdcall -#define BOOST_MEM_FN_CC __stdcall + Pm pm_; -#include <boost/bind/mem_fn_vw.hpp> +public: -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_NAME2 -#undef BOOST_MEM_FN_CC + mf( Pm pm ): pm_( pm ) {} -#endif + template<class U, + class Ud = typename _mfi::remove_cvref<U>::type, + class En = typename std::enable_if< + std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value + >::type + > -#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + R operator()( U&& u, A... a ) const + { + return (std::forward<U>( u ).*pm_)( std::forward<A>( a )... ); + } -#define BOOST_MEM_FN_NAME(X) X##_fastcall -#define BOOST_MEM_FN_NAME2(X) inner_##X##_fastcall -#define BOOST_MEM_FN_CC __fastcall + template<class U, + class Ud = typename _mfi::remove_cvref<U>::type, + class E1 = void, + class En = typename std::enable_if< + !(std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value) + >::type + > -#include <boost/bind/mem_fn_vw.hpp> + R operator()( U&& u, A... a ) const + { + return (get_pointer( std::forward<U>( u ) )->*pm_)( std::forward<A>( a )... ); + } -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_NAME2 -#undef BOOST_MEM_FN_CC + bool operator==( mf const & rhs ) const + { + return pm_ == rhs.pm_; + } -#endif + bool operator!=( mf const & rhs ) const + { + return pm_ != rhs.pm_; + } +}; } // namespace _mfi -#else // #ifdef BOOST_NO_VOID_RETURNS - -#define BOOST_MEM_FN_CLASS_F -#define BOOST_MEM_FN_TYPEDEF(X) typedef X; +// -namespace _mfi +template<class R, class T, class... A> +auto mem_fn( R (T::*pmf) (A...) ) -> _mfi::mf<decltype(pmf), R, T, A...> { + return pmf; +} -#define BOOST_MEM_FN_RETURN return - -#define BOOST_MEM_FN_NAME(X) X -#define BOOST_MEM_FN_CC - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) X##_cdecl -#define BOOST_MEM_FN_CC __cdecl - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#if defined(BOOST_MEM_FN_ENABLE_STDCALL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) X##_stdcall -#define BOOST_MEM_FN_CC __stdcall - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#if defined(BOOST_MEM_FN_ENABLE_FASTCALL) && !defined(_M_X64) - -#define BOOST_MEM_FN_NAME(X) X##_fastcall -#define BOOST_MEM_FN_CC __fastcall - -#include <boost/bind/mem_fn_template.hpp> - -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NAME - -#endif - -#undef BOOST_MEM_FN_RETURN - -} // namespace _mfi - -#undef BOOST_MEM_FN_CLASS_F -#undef BOOST_MEM_FN_TYPEDEF - -#endif // #ifdef BOOST_NO_VOID_RETURNS +template<class R, class T, class... A> +auto mem_fn( R (T::*pmf) (A...) const ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#define BOOST_MEM_FN_NAME(X) X -#define BOOST_MEM_FN_CC -#define BOOST_MEM_FN_NOEXCEPT +#if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED ) -#include <boost/bind/mem_fn_cc.hpp> +template<class R, class T, class... A> +auto mem_fn( R (T::*pmf) (A...) noexcept ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED ) -# undef BOOST_MEM_FN_NOEXCEPT -# define BOOST_MEM_FN_NOEXCEPT noexcept -# include <boost/bind/mem_fn_cc.hpp> -#endif +template<class R, class T, class... A> +auto mem_fn( R (T::*pmf) (A...) const noexcept ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NOEXCEPT +#endif // #if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED ) #if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) -#define BOOST_MEM_FN_NAME(X) X##_cdecl -#define BOOST_MEM_FN_CC __cdecl -#define BOOST_MEM_FN_NOEXCEPT +template<class R, class T, class... A> +auto mem_fn( R (__cdecl T::*pmf) (A...) ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#include <boost/bind/mem_fn_cc.hpp> +template<class R, class T, class... A> +auto mem_fn( R (__cdecl T::*pmf) (A...) const ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NOEXCEPT - -#endif +#endif // #if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) #if defined(BOOST_MEM_FN_ENABLE_STDCALL) && !defined(_M_X64) -#define BOOST_MEM_FN_NAME(X) X##_stdcall -#define BOOST_MEM_FN_CC __stdcall -#define BOOST_MEM_FN_NOEXCEPT - -#include <boost/bind/mem_fn_cc.hpp> +template<class R, class T, class... A> +auto mem_fn( R (__stdcall T::*pmf) (A...) ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NOEXCEPT +template<class R, class T, class... A> +auto mem_fn( R (__stdcall T::*pmf) (A...) const ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#endif +#endif // #if defined(BOOST_MEM_FN_ENABLE_STDCALL) && !defined(_M_X64) #if defined(BOOST_MEM_FN_ENABLE_FASTCALL) && !defined(_M_X64) -#define BOOST_MEM_FN_NAME(X) X##_fastcall -#define BOOST_MEM_FN_CC __fastcall -#define BOOST_MEM_FN_NOEXCEPT - -#include <boost/bind/mem_fn_cc.hpp> +template<class R, class T, class... A> +auto mem_fn( R (__fastcall T::*pmf) (A...) ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#undef BOOST_MEM_FN_NAME -#undef BOOST_MEM_FN_CC -#undef BOOST_MEM_FN_NOEXCEPT +template<class R, class T, class... A> +auto mem_fn( R (__fastcall T::*pmf) (A...) const ) -> _mfi::mf<decltype(pmf), R, T, A...> +{ + return pmf; +} -#endif +#endif // #if defined(BOOST_MEM_FN_ENABLE_FASTCALL) && !defined(_M_X64) // data member support @@ -334,69 +178,74 @@ public: typedef T const * argument_type; private: - - typedef R (T::*F); - F f_; - template<class U> R const & call(U & u, T const *) const - { - return (u.*f_); - } - - template<class U> R const & call(U & u, void const *) const - { - return (get_pointer(u)->*f_); - } + typedef R (T::*Pm); + Pm pm_; public: - - explicit dm(F f): f_(f) {} - R & operator()(T * p) const - { - return (p->*f_); - } + dm( Pm pm ): pm_( pm ) {} - R const & operator()(T const * p) const + template<class U, + class Ud = typename _mfi::remove_cvref<U>::type, + class En = typename std::enable_if< + std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value + >::type + > + + auto operator()( U&& u ) const -> decltype( std::forward<U>( u ).*pm_ ) { - return (p->*f_); + return std::forward<U>( u ).*pm_; } - template<class U> R const & operator()(U const & u) const + template<class U, + class Ud = typename _mfi::remove_cvref<U>::type, + class E1 = void, + class En = typename std::enable_if< + !(std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value) + >::type + > + + auto operator()( U&& u ) const -> decltype( get_pointer( std::forward<U>( u ) )->*pm_ ) { - return call(u, &u); + return get_pointer( std::forward<U>( u ) )->*pm_; } -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__MWERKS__, < 0x3200) +#if BOOST_WORKAROUND(BOOST_MSVC, < 1910) - R & operator()(T & t) const + template<class U> + R& operator()( U* u ) const { - return (t.*f_); + return u->*pm_; } - R const & operator()(T const & t) const + template<class U> + R const& operator()( U const* u ) const { - return (t.*f_); + return u->*pm_; } #endif - bool operator==(dm const & rhs) const + bool operator==( dm const & rhs ) const { - return f_ == rhs.f_; + return pm_ == rhs.pm_; } - bool operator!=(dm const & rhs) const + bool operator!=( dm const & rhs ) const { - return f_ != rhs.f_; + return pm_ != rhs.pm_; } }; } // namespace _mfi -template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f) +template<class R, class T, + class E = typename std::enable_if< !std::is_function<R>::value >::type +> +_mfi::dm<R, T> mem_fn( R T::*pm ) { - return _mfi::dm<R, T>(f); + return pm; } } // namespace boost diff --git a/contrib/restricted/boost/bind/include/boost/bind/mem_fn_cc.hpp b/contrib/restricted/boost/bind/include/boost/bind/mem_fn_cc.hpp deleted file mode 100644 index 03e38300a5..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/mem_fn_cc.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -// bind/mem_fn_cc.hpp - support for different calling conventions -// -// Do not include this header directly. -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// 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) -// -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. -// - -template<class R, class T> _mfi::BOOST_MEM_FN_NAME(mf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) () BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf0)<R, T>(f); -} - -template<class R, class T> _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) () const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T>(f); -} - -template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1>(f); -} - -template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1>(f); -} - -template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2>(f); -} - -template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2>(f); -} - -template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3>(f); -} - -template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f); -} - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const BOOST_MEM_FN_NOEXCEPT) -{ - return _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f); -} diff --git a/contrib/restricted/boost/bind/include/boost/bind/mem_fn_template.hpp b/contrib/restricted/boost/bind/include/boost/bind/mem_fn_template.hpp deleted file mode 100644 index b26d585dbc..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/mem_fn_template.hpp +++ /dev/null @@ -1,1047 +0,0 @@ -// -// bind/mem_fn_template.hpp -// -// Do not include this header directly -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// 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) -// -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. -// - -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) -# define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS -#endif - -// mf0 - -template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf0) -{ -public: - - typedef R result_type; - typedef T * argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ()) - F f_; - - template<class U> R call(U & u, T const *) const - { - BOOST_MEM_FN_RETURN (u.*f_)(); - } - - template<class U> R call(U & u, void const *) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {} - - R operator()(T * p) const - { - BOOST_MEM_FN_RETURN (p->*f_)(); - } - - template<class U> R operator()(U & u) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p); - } - -#endif - - R operator()(T & t) const - { - BOOST_MEM_FN_RETURN (t.*f_)(); - } - - bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf0 - -template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf0) -{ -public: - - typedef R result_type; - typedef T const * argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const) - F f_; - - template<class U> R call(U & u, T const *) const - { - BOOST_MEM_FN_RETURN (u.*f_)(); - } - - template<class U> R call(U & u, void const *) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {} - - template<class U> R operator()(U const & u) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p); - } - - R operator()(T const & t) const - { - BOOST_MEM_FN_RETURN (t.*f_)(); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf1 - -template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf1) -{ -public: - - typedef R result_type; - typedef T * first_argument_type; - typedef A1 second_argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1)) - F f_; - - template<class U, class B1> R call(U & u, T const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1); - } - - template<class U, class B1> R call(U & u, void const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {} - - R operator()(T * p, A1 a1) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1); - } - - template<class U> R operator()(U & u, A1 a1) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1); - } - -#endif - - R operator()(T & t, A1 a1) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1); - } - - bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf1 - -template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf1) -{ -public: - - typedef R result_type; - typedef T const * first_argument_type; - typedef A1 second_argument_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const) - F f_; - - template<class U, class B1> R call(U & u, T const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1); - } - - template<class U, class B1> R call(U & u, void const *, B1 & b1) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1); - } - - R operator()(T const & t, A1 a1) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf2 - -template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf2) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2)) - F f_; - - template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); - } - - template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); - } - - bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf2 - -template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf2) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const) - F f_; - - template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); - } - - template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1, A2 a2) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2); - } - - R operator()(T const & t, A1 a1, A2 a2) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf3 - -template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf3) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3)) - F f_; - - template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); - } - - template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); - } - - bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf3 - -template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf3) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const) - F f_; - - template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); - } - - template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf4 - -template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf4) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4)) - F f_; - - template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); - } - - template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); - } - - bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf4 - -template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf4) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const) - F f_; - - template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); - } - - template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf5 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf5) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5)) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); - } - - template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); - } - - bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf5 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf5) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); - } - - template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf6 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf6) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6)) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); - } - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); - } - - bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf6 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf6) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); - } - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf7 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf7) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7)) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); - } - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); - } - - bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf7 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf7) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); - } - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {} - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// mf8 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf8) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8)) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - -public: - - explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {} - - R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); - } - -#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); - } - -#endif - - R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -// cmf8 - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf8) -{ -public: - - typedef R result_type; - -private: - - BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const) - F f_; - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - - template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const - { - BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); - } - -public: - - explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {} - - R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - U const * p = 0; - BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); - } - - R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const - { - BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const - { - return f_ == rhs.f_; - } - - bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const - { - return f_ != rhs.f_; - } -}; - -#undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS diff --git a/contrib/restricted/boost/bind/include/boost/bind/mem_fn_vw.hpp b/contrib/restricted/boost/bind/include/boost/bind/mem_fn_vw.hpp deleted file mode 100644 index f3fc58db04..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/mem_fn_vw.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// -// bind/mem_fn_vw.hpp - void return helper wrappers -// -// Do not include this header directly -// -// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -// -// 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) -// -// See http://www.boost.org/libs/bind/mem_fn.html for documentation. -// - -template<class R, class T> struct BOOST_MEM_FN_NAME(mf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, R (BOOST_MEM_FN_CC T::*) ()> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (); - explicit BOOST_MEM_FN_NAME(mf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, F>(f) {} -}; - -template<class R, class T> struct BOOST_MEM_FN_NAME(cmf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, R (BOOST_MEM_FN_CC T::*) () const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) () const; - explicit BOOST_MEM_FN_NAME(cmf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, F>(f) {} -}; - - -template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(mf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1); - explicit BOOST_MEM_FN_NAME(mf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, F>(f) {} -}; - -template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(cmf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1) const; - explicit BOOST_MEM_FN_NAME(cmf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, F>(f) {} -}; - - -template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(mf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2); - explicit BOOST_MEM_FN_NAME(mf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, F>(f) {} -}; - -template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(cmf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2) const; - explicit BOOST_MEM_FN_NAME(cmf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, F>(f) {} -}; - - -template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(mf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3); - explicit BOOST_MEM_FN_NAME(mf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, F>(f) {} -}; - -template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(cmf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const; - explicit BOOST_MEM_FN_NAME(cmf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, F>(f) {} -}; - - -template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(mf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4); - explicit BOOST_MEM_FN_NAME(mf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, F>(f) {} -}; - -template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(cmf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const; - explicit BOOST_MEM_FN_NAME(cmf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, F>(f) {} -}; - - -template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(mf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5); - explicit BOOST_MEM_FN_NAME(mf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, F>(f) {} -}; - -template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(cmf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const; - explicit BOOST_MEM_FN_NAME(cmf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, F>(f) {} -}; - - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(mf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6); - explicit BOOST_MEM_FN_NAME(mf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {} -}; - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(cmf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const; - explicit BOOST_MEM_FN_NAME(cmf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {} -}; - - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(mf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7); - explicit BOOST_MEM_FN_NAME(mf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {} -}; - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(cmf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const; - explicit BOOST_MEM_FN_NAME(cmf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {} -}; - - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(mf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8)> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8); - explicit BOOST_MEM_FN_NAME(mf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {} -}; - -template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(cmf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8) const> -{ - typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const; - explicit BOOST_MEM_FN_NAME(cmf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {} -}; - diff --git a/contrib/restricted/boost/bind/include/boost/bind/placeholders.hpp b/contrib/restricted/boost/bind/include/boost/bind/placeholders.hpp index 5e4b96d8d5..2daba9e94c 100644 --- a/contrib/restricted/boost/bind/include/boost/bind/placeholders.hpp +++ b/contrib/restricted/boost/bind/include/boost/bind/placeholders.hpp @@ -10,14 +10,13 @@ // // bind/placeholders.hpp - _N definitions // -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// Copyright 2015 Peter Dimov +// Copyright 2002, 2015, 2024 Peter Dimov // // 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 // -// See http://www.boost.org/libs/bind/bind.html for documentation. +// See http://www.boost.org/libs/bind for documentation. // #include <boost/bind/arg.hpp> @@ -29,19 +28,7 @@ namespace boost namespace placeholders { -#if defined(BOOST_BORLANDC) || defined(__GNUC__) && (__GNUC__ < 4) - -inline boost::arg<1> _1() { return boost::arg<1>(); } -inline boost::arg<2> _2() { return boost::arg<2>(); } -inline boost::arg<3> _3() { return boost::arg<3>(); } -inline boost::arg<4> _4() { return boost::arg<4>(); } -inline boost::arg<5> _5() { return boost::arg<5>(); } -inline boost::arg<6> _6() { return boost::arg<6>(); } -inline boost::arg<7> _7() { return boost::arg<7>(); } -inline boost::arg<8> _8() { return boost::arg<8>(); } -inline boost::arg<9> _9() { return boost::arg<9>(); } - -#elif !defined(BOOST_NO_CXX17_INLINE_VARIABLES) +#if !defined(BOOST_NO_CXX17_INLINE_VARIABLES) BOOST_INLINE_CONSTEXPR boost::arg<1> _1; BOOST_INLINE_CONSTEXPR boost::arg<2> _2; diff --git a/contrib/restricted/boost/bind/include/boost/bind/std_placeholders.hpp b/contrib/restricted/boost/bind/include/boost/bind/std_placeholders.hpp index 125ff24052..36cfed6877 100644 --- a/contrib/restricted/boost/bind/include/boost/bind/std_placeholders.hpp +++ b/contrib/restricted/boost/bind/include/boost/bind/std_placeholders.hpp @@ -11,12 +11,7 @@ // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt -#include <boost/bind/detail/requires_cxx11.hpp> #include <boost/is_placeholder.hpp> -#include <boost/config.hpp> - -#if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) - #include <functional> #include <type_traits> @@ -35,6 +30,4 @@ template<> struct is_placeholder< typename std::decay<decltype(std::placeholders } // namespace boost -#endif - #endif // #ifndef BOOST_BIND_STD_PLACEHOLDERS_HPP_INCLUDED diff --git a/contrib/restricted/boost/bind/include/boost/bind/storage.hpp b/contrib/restricted/boost/bind/include/boost/bind/storage.hpp deleted file mode 100644 index 2ab0db185e..0000000000 --- a/contrib/restricted/boost/bind/include/boost/bind/storage.hpp +++ /dev/null @@ -1,476 +0,0 @@ -#ifndef BOOST_BIND_STORAGE_HPP_INCLUDED -#define BOOST_BIND_STORAGE_HPP_INCLUDED - -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -// -// bind/storage.hpp -// -// boost/bind.hpp support header, optimized storage -// -// Copyright (c) 2006 Peter Dimov -// -// 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 -// -// See http://www.boost.org/libs/bind/bind.html for documentation. -// - -#include <boost/bind/detail/requires_cxx11.hpp> -#include <boost/config.hpp> -#include <boost/bind/arg.hpp> - -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated -#endif - -namespace boost -{ - -namespace _bi -{ - -// 1 - -template<class A1> struct storage1 -{ - explicit storage1( A1 a1 ): a1_( a1 ) {} - - template<class V> void accept(V & v) const - { - BOOST_BIND_VISIT_EACH(v, a1_, 0); - } - - A1 a1_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( BOOST_BORLANDC ) - -template<int I> struct storage1< boost::arg<I> > -{ - explicit storage1( boost::arg<I> ) {} - - template<class V> void accept(V &) const { } - - static boost::arg<I> a1_() { return boost::arg<I>(); } -}; - -template<int I> struct storage1< boost::arg<I> (*) () > -{ - explicit storage1( boost::arg<I> (*) () ) {} - - template<class V> void accept(V &) const { } - - static boost::arg<I> a1_() { return boost::arg<I>(); } -}; - -#endif - -// 2 - -template<class A1, class A2> struct storage2: public storage1<A1> -{ - typedef storage1<A1> inherited; - - storage2( A1 a1, A2 a2 ): storage1<A1>( a1 ), a2_( a2 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a2_, 0); - } - - A2 a2_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, int I> struct storage2< A1, boost::arg<I> >: public storage1<A1> -{ - typedef storage1<A1> inherited; - - storage2( A1 a1, boost::arg<I> ): storage1<A1>( a1 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a2_() { return boost::arg<I>(); } -}; - -template<class A1, int I> struct storage2< A1, boost::arg<I> (*) () >: public storage1<A1> -{ - typedef storage1<A1> inherited; - - storage2( A1 a1, boost::arg<I> (*) () ): storage1<A1>( a1 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a2_() { return boost::arg<I>(); } -}; - -#endif - -// 3 - -template<class A1, class A2, class A3> struct storage3: public storage2< A1, A2 > -{ - typedef storage2<A1, A2> inherited; - - storage3( A1 a1, A2 a2, A3 a3 ): storage2<A1, A2>( a1, a2 ), a3_( a3 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a3_, 0); - } - - A3 a3_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> >: public storage2< A1, A2 > -{ - typedef storage2<A1, A2> inherited; - - storage3( A1 a1, A2 a2, boost::arg<I> ): storage2<A1, A2>( a1, a2 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a3_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> (*) () >: public storage2< A1, A2 > -{ - typedef storage2<A1, A2> inherited; - - storage3( A1 a1, A2 a2, boost::arg<I> (*) () ): storage2<A1, A2>( a1, a2 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a3_() { return boost::arg<I>(); } -}; - -#endif - -// 4 - -template<class A1, class A2, class A3, class A4> struct storage4: public storage3< A1, A2, A3 > -{ - typedef storage3<A1, A2, A3> inherited; - - storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3<A1, A2, A3>( a1, a2, a3 ), a4_( a4 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a4_, 0); - } - - A4 a4_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> >: public storage3< A1, A2, A3 > -{ - typedef storage3<A1, A2, A3> inherited; - - storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> ): storage3<A1, A2, A3>( a1, a2, a3 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a4_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> (*) () >: public storage3< A1, A2, A3 > -{ - typedef storage3<A1, A2, A3> inherited; - - storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> (*) () ): storage3<A1, A2, A3>( a1, a2, a3 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a4_() { return boost::arg<I>(); } -}; - -#endif - -// 5 - -template<class A1, class A2, class A3, class A4, class A5> struct storage5: public storage4< A1, A2, A3, A4 > -{ - typedef storage4<A1, A2, A3, A4> inherited; - - storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ), a5_( a5 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a5_, 0); - } - - A5 a5_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> >: public storage4< A1, A2, A3, A4 > -{ - typedef storage4<A1, A2, A3, A4> inherited; - - storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a5_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> (*) () >: public storage4< A1, A2, A3, A4 > -{ - typedef storage4<A1, A2, A3, A4> inherited; - - storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> (*) () ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a5_() { return boost::arg<I>(); } -}; - -#endif - -// 6 - -template<class A1, class A2, class A3, class A4, class A5, class A6> struct storage6: public storage5< A1, A2, A3, A4, A5 > -{ - typedef storage5<A1, A2, A3, A4, A5> inherited; - - storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ), a6_( a6 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a6_, 0); - } - - A6 a6_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> >: public storage5< A1, A2, A3, A4, A5 > -{ - typedef storage5<A1, A2, A3, A4, A5> inherited; - - storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a6_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> (*) () >: public storage5< A1, A2, A3, A4, A5 > -{ - typedef storage5<A1, A2, A3, A4, A5> inherited; - - storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> (*) () ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a6_() { return boost::arg<I>(); } -}; - -#endif - -// 7 - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct storage7: public storage6< A1, A2, A3, A4, A5, A6 > -{ - typedef storage6<A1, A2, A3, A4, A5, A6> inherited; - - storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a7_, 0); - } - - A7 a7_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> >: public storage6< A1, A2, A3, A4, A5, A6 > -{ - typedef storage6<A1, A2, A3, A4, A5, A6> inherited; - - storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a7_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> (*) () >: public storage6< A1, A2, A3, A4, A5, A6 > -{ - typedef storage6<A1, A2, A3, A4, A5, A6> inherited; - - storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> (*) () ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a7_() { return boost::arg<I>(); } -}; - -#endif - -// 8 - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 > -{ - typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited; - - storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a8_, 0); - } - - A8 a8_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> >: public storage7< A1, A2, A3, A4, A5, A6, A7 > -{ - typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited; - - storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a8_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 > -{ - typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited; - - storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> (*) () ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a8_() { return boost::arg<I>(); } -}; - -#endif - -// 9 - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 > -{ - typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited; - - storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - BOOST_BIND_VISIT_EACH(v, a9_, 0); - } - - A9 a9_; -}; - -#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 > -{ - typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited; - - storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a9_() { return boost::arg<I>(); } -}; - -template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 > -{ - typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited; - - storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> (*) () ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {} - - template<class V> void accept(V & v) const - { - inherited::accept(v); - } - - static boost::arg<I> a9_() { return boost::arg<I>(); } -}; - -#endif - -} // namespace _bi - -} // namespace boost - -#ifdef BOOST_MSVC -# pragma warning(default: 4512) // assignment operator could not be generated -# pragma warning(pop) -#endif - -#endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED diff --git a/contrib/restricted/boost/bind/ya.make b/contrib/restricted/boost/bind/ya.make index 800fbedbaf..9e146d94a6 100644 --- a/contrib/restricted/boost/bind/ya.make +++ b/contrib/restricted/boost/bind/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/bind/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/bind/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/chrono/ya.make b/contrib/restricted/boost/chrono/ya.make index 0bb9d82d02..f3ac96992b 100644 --- a/contrib/restricted/boost/chrono/ya.make +++ b/contrib/restricted/boost/chrono/ya.make @@ -10,9 +10,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/chrono/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/chrono/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp index 567636c5b8..51d5188693 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp @@ -245,6 +245,9 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #if __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp index 696fc6b611..b9ca5977da 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp @@ -327,6 +327,10 @@ # define BOOST_NO_CXX17_FOLD_EXPRESSIONS #endif +#if (__clang_major__ < 4) || (__cplusplus < 201406L) /* non-standard value that is greater than 201402, which is reported by clang 4.0.0 for C++1z */ +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif + #if __cplusplus < 201103L #define BOOST_NO_CXX11_SFINAE_EXPR #endif diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp index 4d3f42aefb..49f934c028 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp @@ -316,6 +316,10 @@ # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif + // // TR1 macros: // diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp index dc049893cd..0d59ae0e67 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp @@ -171,10 +171,12 @@ #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) # define BOOST_NO_CXX17_FOLD_EXPRESSIONS #endif - #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #ifdef c_plusplus // EDG has "long long" in non-strict mode diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp index bb56ff6c06..4fa347ab88 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp @@ -130,6 +130,9 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #if (__DMC__ <= 0x840) #error "Compiler not supported or configured - please reconfigure" diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp index 2f1fe5508b..fc05a91860 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp @@ -319,6 +319,9 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if (__GNUC__ < 7) || (__cplusplus < 201703L) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #if __GNUC__ >= 7 # define BOOST_FALLTHROUGH __attribute__((fallthrough)) diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp index 75cac44e9f..e23b14d0f1 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp @@ -108,7 +108,8 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ - - diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp index 25636324bf..42e35e553e 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp @@ -137,6 +137,10 @@ #define BOOST_NO_CXX11_VARIADIC_MACROS #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif + #endif // diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp index 448ab67bc3..c38efb3213 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp @@ -173,6 +173,9 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp index 8433f37195..3adb61221d 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp @@ -122,6 +122,9 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif // // versions check: diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp index 419dd724ac..147f75dbf6 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp @@ -57,5 +57,8 @@ # define BOOST_NO_CXX11_NOEXCEPT #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS #endif +#endif diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp index 5348cf7f72..59ab9b0077 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp @@ -135,4 +135,7 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif #endif diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp index 490dc76dc8..334b604bb4 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp @@ -194,6 +194,9 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif // Turn on threading support for Solaris 12. // Ticket #11972 diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp index 9cfa1adf85..3794d3601c 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp @@ -184,3 +184,6 @@ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) # define BOOST_NO_CXX17_IF_CONSTEXPR #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp index c0ada098aa..ce0fc15e33 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp @@ -263,6 +263,9 @@ #define BOOST_NO_CXX17_INLINE_VARIABLES #define BOOST_NO_CXX17_FOLD_EXPRESSIONS #endif +#if (_MSC_VER < 1914) || (_MSVC_LANG < 201703) +#define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif // // Things that don't work in clr mode: diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp index 99b8b24558..4a4477d9d3 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp @@ -265,6 +265,10 @@ # define BOOST_NO_CXX17_FOLD_EXPRESSIONS #endif +#if !defined(__cpp_nontype_template_parameter_auto) || (__cpp_nontype_template_parameter_auto < 201606) +# define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS +#endif + #if !__has_feature(cxx_thread_local) # define BOOST_NO_CXX11_THREAD_LOCAL #endif diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp index 9a177f1bb9..0b288a880f 100644 --- a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp +++ b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp @@ -157,6 +157,7 @@ #define BOOST_NO_CXX17_INLINE_VARIABLES #define BOOST_NO_CXX17_FOLD_EXPRESSIONS #define BOOST_NO_CXX17_IF_CONSTEXPR +#define BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS // ------------------------------------- diff --git a/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp b/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp index 9c2c01ead7..acd8e84960 100644 --- a/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp +++ b/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp @@ -164,6 +164,7 @@ #endif #if defined(BOOST_NO_CXX14)\ + || defined(BOOST_NO_CXX17_AUTO_NONTYPE_TEMPLATE_PARAMS)\ || defined(BOOST_NO_CXX17_DEDUCTION_GUIDES)\ || defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS)\ || defined(BOOST_NO_CXX17_HDR_ANY)\ diff --git a/contrib/restricted/boost/config/include/boost/version.hpp b/contrib/restricted/boost/config/include/boost/version.hpp index 6cd7e9aa32..989f25fa37 100644 --- a/contrib/restricted/boost/config/include/boost/version.hpp +++ b/contrib/restricted/boost/config/include/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 108400 +#define BOOST_VERSION 108500 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by <config/auto_link.hpp> to select which library version to link to. -#define BOOST_LIB_VERSION "1_84" +#define BOOST_LIB_VERSION "1_85" #endif diff --git a/contrib/restricted/boost/config/ya.make b/contrib/restricted/boost/config/ya.make index 19f057176e..4acbd9a6f0 100644 --- a/contrib/restricted/boost/config/ya.make +++ b/contrib/restricted/boost/config/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/config/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/config/archive/boost-1.85.0.tar.gz) ADDINCL( GLOBAL contrib/restricted/boost/config/include diff --git a/contrib/restricted/boost/container/include/boost/container/allocator_traits.hpp b/contrib/restricted/boost/container/include/boost/container/allocator_traits.hpp index f5f73efa50..cdb6683e88 100644 --- a/contrib/restricted/boost/container/include/boost/container/allocator_traits.hpp +++ b/contrib/restricted/boost/container/include/boost/container/allocator_traits.hpp @@ -44,8 +44,6 @@ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) #include <boost/move/detail/fwd_macros.hpp> #endif -// other boost -#include <boost/static_assert.hpp> #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -298,18 +296,18 @@ struct allocator_traits //! <b>Returns</b>: <code>a.allocate(n)</code> //! - BOOST_CONTAINER_FORCEINLINE static pointer allocate(Allocator &a, size_type n) + inline static pointer allocate(Allocator &a, size_type n) { return a.allocate(n); } //! <b>Returns</b>: <code>a.deallocate(p, n)</code> //! //! <b>Throws</b>: Nothing - BOOST_CONTAINER_FORCEINLINE static void deallocate(Allocator &a, pointer p, size_type n) + inline static void deallocate(Allocator &a, pointer p, size_type n) { a.deallocate(p, n); } //! <b>Effects</b>: calls <code>a.allocate(n, p)</code> if that call is well-formed; //! otherwise, invokes <code>a.allocate(n)</code> - BOOST_CONTAINER_FORCEINLINE static pointer allocate(Allocator &a, size_type n, const_void_pointer p) + inline static pointer allocate(Allocator &a, size_type n, const_void_pointer p) { const bool value = boost::container::dtl:: has_member_function_callable_with_allocate @@ -321,7 +319,7 @@ struct allocator_traits //! <b>Effects</b>: calls <code>a.destroy(p)</code> if that call is well-formed; //! otherwise, invokes <code>p->~T()</code>. template<class T> - BOOST_CONTAINER_FORCEINLINE static void destroy(Allocator &a, T*p) BOOST_NOEXCEPT_OR_NOTHROW + inline static void destroy(Allocator &a, T*p) BOOST_NOEXCEPT_OR_NOTHROW { typedef T* destroy_pointer; const bool value = boost::container::dtl:: @@ -333,7 +331,7 @@ struct allocator_traits //! <b>Returns</b>: <code>a.max_size()</code> if that expression is well-formed; otherwise, //! <code>numeric_limits<size_type>::max()</code>. - BOOST_CONTAINER_FORCEINLINE static size_type max_size(const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW + inline static size_type max_size(const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW { const bool value = allocator_traits_detail::has_max_size<Allocator, size_type (Allocator::*)() const>::value; dtl::bool_<value> flag; @@ -342,7 +340,7 @@ struct allocator_traits //! <b>Returns</b>: <code>a.select_on_container_copy_construction()</code> if that expression is well-formed; //! otherwise, a. - BOOST_CONTAINER_FORCEINLINE static BOOST_CONTAINER_DOC1ST(Allocator, + inline static BOOST_CONTAINER_DOC1ST(Allocator, typename dtl::if_c < allocator_traits_detail::has_select_on_container_copy_construction<Allocator BOOST_MOVE_I Allocator (Allocator::*)() const>::value BOOST_MOVE_I Allocator BOOST_MOVE_I const Allocator & >::type) @@ -358,7 +356,7 @@ struct allocator_traits //! <b>Effects</b>: calls <code>a.construct(p, std::forward<Args>(args)...)</code> if that call is well-formed; //! otherwise, invokes <code>`placement new` (static_cast<void*>(p)) T(std::forward<Args>(args)...)</code> template <class T, class ...Args> - BOOST_CONTAINER_FORCEINLINE static void construct(Allocator & a, T* p, BOOST_FWD_REF(Args)... args) + inline static void construct(Allocator & a, T* p, BOOST_FWD_REF(Args)... args) { static const bool value = ::boost::move_detail::and_ < dtl::is_not_std_allocator<Allocator> @@ -372,7 +370,7 @@ struct allocator_traits //! <b>Returns</b>: <code>a.storage_is_unpropagable(p)</code> if is_partially_propagable::value is true; otherwise, //! <code>false</code>. - BOOST_CONTAINER_FORCEINLINE static bool storage_is_unpropagable(const Allocator &a, pointer p) BOOST_NOEXCEPT_OR_NOTHROW + inline static bool storage_is_unpropagable(const Allocator &a, pointer p) BOOST_NOEXCEPT_OR_NOTHROW { dtl::bool_<is_partially_propagable::value> flag; return allocator_traits::priv_storage_is_unpropagable(flag, a, p); @@ -380,7 +378,7 @@ struct allocator_traits //! <b>Returns</b>: <code>true</code> if <code>is_always_equal::value == true</code>, otherwise, //! <code>a == b</code>. - BOOST_CONTAINER_FORCEINLINE static bool equal(const Allocator &a, const Allocator &b) BOOST_NOEXCEPT_OR_NOTHROW + inline static bool equal(const Allocator &a, const Allocator &b) BOOST_NOEXCEPT_OR_NOTHROW { dtl::bool_<is_always_equal::value> flag; return allocator_traits::priv_equal(flag, a, b); @@ -388,46 +386,46 @@ struct allocator_traits #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) private: - BOOST_CONTAINER_FORCEINLINE static pointer priv_allocate(dtl::true_type, Allocator &a, size_type n, const_void_pointer p) + inline static pointer priv_allocate(dtl::true_type, Allocator &a, size_type n, const_void_pointer p) { return a.allocate(n, p); } - BOOST_CONTAINER_FORCEINLINE static pointer priv_allocate(dtl::false_type, Allocator &a, size_type n, const_void_pointer) + inline static pointer priv_allocate(dtl::false_type, Allocator &a, size_type n, const_void_pointer) { return a.allocate(n); } template<class T> - BOOST_CONTAINER_FORCEINLINE static void priv_destroy(dtl::true_type, Allocator &a, T* p) BOOST_NOEXCEPT_OR_NOTHROW + inline static void priv_destroy(dtl::true_type, Allocator &a, T* p) BOOST_NOEXCEPT_OR_NOTHROW { a.destroy(p); } template<class T> - BOOST_CONTAINER_FORCEINLINE static void priv_destroy(dtl::false_type, Allocator &, T* p) BOOST_NOEXCEPT_OR_NOTHROW + inline static void priv_destroy(dtl::false_type, Allocator &, T* p) BOOST_NOEXCEPT_OR_NOTHROW { p->~T(); (void)p; } - BOOST_CONTAINER_FORCEINLINE static size_type priv_max_size(dtl::true_type, const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW + inline static size_type priv_max_size(dtl::true_type, const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW { return a.max_size(); } - BOOST_CONTAINER_FORCEINLINE static size_type priv_max_size(dtl::false_type, const Allocator &) BOOST_NOEXCEPT_OR_NOTHROW + inline static size_type priv_max_size(dtl::false_type, const Allocator &) BOOST_NOEXCEPT_OR_NOTHROW { return size_type(-1)/sizeof(value_type); } - BOOST_CONTAINER_FORCEINLINE static Allocator priv_select_on_container_copy_construction(dtl::true_type, const Allocator &a) + inline static Allocator priv_select_on_container_copy_construction(dtl::true_type, const Allocator &a) { return a.select_on_container_copy_construction(); } - BOOST_CONTAINER_FORCEINLINE static const Allocator &priv_select_on_container_copy_construction(dtl::false_type, const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW + inline static const Allocator &priv_select_on_container_copy_construction(dtl::false_type, const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW { return a; } #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) template<class T, class ...Args> - BOOST_CONTAINER_FORCEINLINE static void priv_construct(dtl::true_type, Allocator &a, T *p, BOOST_FWD_REF(Args) ...args) + inline static void priv_construct(dtl::true_type, Allocator &a, T *p, BOOST_FWD_REF(Args) ...args) { a.construct( p, ::boost::forward<Args>(args)...); } template<class T, class ...Args> - BOOST_CONTAINER_FORCEINLINE static void priv_construct(dtl::false_type, Allocator &, T *p, BOOST_FWD_REF(Args) ...args) + inline static void priv_construct(dtl::false_type, Allocator &, T *p, BOOST_FWD_REF(Args) ...args) { ::new((void*)p, boost_container_new_t()) T(::boost::forward<Args>(args)...); } #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) public: #define BOOST_CONTAINER_ALLOCATOR_TRAITS_CONSTRUCT_IMPL(N) \ template<class T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\ - BOOST_CONTAINER_FORCEINLINE static void construct(Allocator &a, T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ + inline static void construct(Allocator &a, T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ {\ static const bool value = ::boost::move_detail::and_ \ < dtl::is_not_std_allocator<Allocator> \ @@ -447,11 +445,11 @@ struct allocator_traits ///////////////////////////////// #define BOOST_CONTAINER_ALLOCATOR_TRAITS_PRIV_CONSTRUCT_IMPL(N) \ template<class T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\ - BOOST_CONTAINER_FORCEINLINE static void priv_construct(dtl::true_type, Allocator &a, T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ + inline static void priv_construct(dtl::true_type, Allocator &a, T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ { a.construct( p BOOST_MOVE_I##N BOOST_MOVE_FWD##N ); }\ \ template<class T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\ - BOOST_CONTAINER_FORCEINLINE static void priv_construct(dtl::false_type, Allocator &, T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ + inline static void priv_construct(dtl::false_type, Allocator &, T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ { ::new((void*)p, boost_container_new_t()) T(BOOST_MOVE_FWD##N); }\ // BOOST_MOVE_ITERATE_0TO8(BOOST_CONTAINER_ALLOCATOR_TRAITS_PRIV_CONSTRUCT_IMPL) @@ -460,19 +458,19 @@ struct allocator_traits #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) template<class T> - BOOST_CONTAINER_FORCEINLINE static void priv_construct(dtl::false_type, Allocator &, T *p, const ::boost::container::default_init_t&) + inline static void priv_construct(dtl::false_type, Allocator &, T *p, const ::boost::container::default_init_t&) { ::new((void*)p, boost_container_new_t()) T; } - BOOST_CONTAINER_FORCEINLINE static bool priv_storage_is_unpropagable(dtl::true_type, const Allocator &a, pointer p) + inline static bool priv_storage_is_unpropagable(dtl::true_type, const Allocator &a, pointer p) { return a.storage_is_unpropagable(p); } - BOOST_CONTAINER_FORCEINLINE static bool priv_storage_is_unpropagable(dtl::false_type, const Allocator &, pointer) + inline static bool priv_storage_is_unpropagable(dtl::false_type, const Allocator &, pointer) { return false; } - BOOST_CONTAINER_FORCEINLINE static bool priv_equal(dtl::true_type, const Allocator &, const Allocator &) + inline static bool priv_equal(dtl::true_type, const Allocator &, const Allocator &) { return true; } - BOOST_CONTAINER_FORCEINLINE static bool priv_equal(dtl::false_type, const Allocator &a, const Allocator &b) + inline static bool priv_equal(dtl::false_type, const Allocator &a, const Allocator &b) { return a == b; } #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) diff --git a/contrib/restricted/boost/container/include/boost/container/detail/advanced_insert_int.hpp b/contrib/restricted/boost/container/include/boost/container/detail/advanced_insert_int.hpp index 0238805db2..bc6801adb4 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/advanced_insert_int.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/advanced_insert_int.hpp @@ -49,19 +49,19 @@ struct move_insert_range_proxy { typedef typename allocator_traits<Allocator>::value_type value_type; - BOOST_CONTAINER_FORCEINLINE explicit move_insert_range_proxy(FwdIt first) + inline explicit move_insert_range_proxy(FwdIt first) : first_(first) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) { this->first_ = ::boost::container::uninitialized_move_alloc_n_source (a, this->first_, n, p); } template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &, Iterator p, std::size_t n) + inline void copy_n_and_update(Allocator &, Iterator p, std::size_t n) { this->first_ = ::boost::container::move_n_source(this->first_, n, p); } @@ -75,18 +75,18 @@ struct insert_range_proxy { typedef typename allocator_traits<Allocator>::value_type value_type; - BOOST_CONTAINER_FORCEINLINE explicit insert_range_proxy(FwdIt first) + inline explicit insert_range_proxy(FwdIt first) : first_(first) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) { this->first_ = ::boost::container::uninitialized_copy_alloc_n_source(a, this->first_, n, p); } template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &, Iterator p, std::size_t n) + inline void copy_n_and_update(Allocator &, Iterator p, std::size_t n) { this->first_ = ::boost::container::copy_n_source(this->first_, n, p); } @@ -100,16 +100,16 @@ struct insert_n_copies_proxy { typedef typename allocator_traits<Allocator>::value_type value_type; - BOOST_CONTAINER_FORCEINLINE explicit insert_n_copies_proxy(const value_type &v) + inline explicit insert_n_copies_proxy(const value_type &v) : v_(v) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const { boost::container::uninitialized_fill_alloc_n(a, v_, n, p); } template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &, Iterator p, std::size_t n) const + inline void copy_n_and_update(Allocator &, Iterator p, std::size_t n) const { while (n){ --n; @@ -129,7 +129,7 @@ struct insert_value_initialized_n_proxy typedef typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type storage_t; template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const { boost::container::uninitialized_value_init_alloc_n(a, n, p); } template<class Iterator> @@ -155,7 +155,7 @@ struct insert_default_initialized_n_proxy typedef typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type storage_t; template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const { boost::container::uninitialized_default_init_alloc_n(a, n, p); } template<class Iterator> @@ -183,19 +183,19 @@ struct insert_copy_proxy static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_copy_proxy(const value_type &v) + inline explicit insert_copy_proxy(const value_type &v) : v_(v) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const { BOOST_ASSERT(n == 1); (void)n; alloc_traits::construct( a, boost::movelib::iterator_to_raw_pointer(p), v_); } template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &, Iterator p, std::size_t n) const + inline void copy_n_and_update(Allocator &, Iterator p, std::size_t n) const { BOOST_ASSERT(n == 1); (void)n; *p = v_; @@ -213,19 +213,19 @@ struct insert_move_proxy static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_move_proxy(value_type &v) + inline explicit insert_move_proxy(value_type &v) : v_(v) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) const { BOOST_ASSERT(n == 1); (void)n; alloc_traits::construct( a, boost::movelib::iterator_to_raw_pointer(p), ::boost::move(v_) ); } template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &, Iterator p, std::size_t n) const + inline void copy_n_and_update(Allocator &, Iterator p, std::size_t n) const { BOOST_ASSERT(n == 1); (void)n; *p = ::boost::move(v_); @@ -235,13 +235,13 @@ struct insert_move_proxy }; template<class It, class Allocator> -BOOST_CONTAINER_FORCEINLINE insert_move_proxy<Allocator> get_insert_value_proxy(BOOST_RV_REF(typename boost::container::iterator_traits<It>::value_type) v) +inline insert_move_proxy<Allocator> get_insert_value_proxy(BOOST_RV_REF(typename boost::container::iterator_traits<It>::value_type) v) { return insert_move_proxy<Allocator>(v); } template<class It, class Allocator> -BOOST_CONTAINER_FORCEINLINE insert_copy_proxy<Allocator> get_insert_value_proxy(const typename boost::container::iterator_traits<It>::value_type &v) +inline insert_copy_proxy<Allocator> get_insert_value_proxy(const typename boost::container::iterator_traits<It>::value_type &v) { return insert_copy_proxy<Allocator>(v); } @@ -266,17 +266,17 @@ struct insert_nonmovable_emplace_proxy static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_nonmovable_emplace_proxy(BOOST_FWD_REF(Args)... args) + inline explicit insert_nonmovable_emplace_proxy(BOOST_FWD_REF(Args)... args) : args_(args...) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n) { this->priv_uninitialized_copy_some_and_update(a, index_tuple_t(), p, n); } private: template<std::size_t ...IdxPack, class Iterator> - BOOST_CONTAINER_FORCEINLINE void priv_uninitialized_copy_some_and_update(Allocator &a, const index_tuple<IdxPack...>&, Iterator p, std::size_t n) + inline void priv_uninitialized_copy_some_and_update(Allocator &a, const index_tuple<IdxPack...>&, Iterator p, std::size_t n) { BOOST_ASSERT(n == 1); (void)n; alloc_traits::construct( a, boost::movelib::iterator_to_raw_pointer(p), ::boost::forward<Args>(get<IdxPack>(this->args_))... ); @@ -297,18 +297,18 @@ struct insert_emplace_proxy static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy(BOOST_FWD_REF(Args)... args) + inline explicit insert_emplace_proxy(BOOST_FWD_REF(Args)... args) : base_t(::boost::forward<Args>(args)...) {} template<class Iterator> - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &a, Iterator p, std::size_t n) + inline void copy_n_and_update(Allocator &a, Iterator p, std::size_t n) { this->priv_copy_some_and_update(a, index_tuple_t(), p, n); } private: template<std::size_t ...IdxPack, class Iterator> - BOOST_CONTAINER_FORCEINLINE void priv_copy_some_and_update(Allocator &a, const index_tuple<IdxPack...>&, Iterator p, std::size_t n) + inline void priv_copy_some_and_update(Allocator &a, const index_tuple<IdxPack...>&, Iterator p, std::size_t n) { BOOST_ASSERT(n ==1); (void)n; typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v; @@ -333,7 +333,7 @@ struct insert_emplace_proxy<Allocator, typename boost::container::allocator_trai { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy(typename boost::container::allocator_traits<Allocator>::value_type &&v) + inline explicit insert_emplace_proxy(typename boost::container::allocator_traits<Allocator>::value_type &&v) : insert_move_proxy<Allocator>(v) {} }; @@ -350,7 +350,7 @@ struct insert_emplace_proxy<Allocator static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; @@ -361,7 +361,7 @@ struct insert_emplace_proxy<Allocator, typename boost::container::allocator_trai { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; @@ -374,7 +374,7 @@ struct insert_emplace_proxy<Allocator { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; @@ -398,18 +398,18 @@ struct insert_nonmovable_emplace_proxy##N\ \ static const bool single_value = true;\ \ - BOOST_CONTAINER_FORCEINLINE explicit insert_nonmovable_emplace_proxy##N(BOOST_MOVE_UREF##N)\ + inline explicit insert_nonmovable_emplace_proxy##N(BOOST_MOVE_UREF##N)\ BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N {}\ \ template<class Iterator>\ - BOOST_CONTAINER_FORCEINLINE void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n)\ + inline void uninitialized_copy_n_and_update(Allocator &a, Iterator p, std::size_t n)\ {\ BOOST_ASSERT(n == 1); (void)n;\ alloc_traits::construct(a, boost::movelib::iterator_to_raw_pointer(p) BOOST_MOVE_I##N BOOST_MOVE_MFWD##N);\ }\ \ template<class Iterator>\ - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &, Iterator, std::size_t)\ + inline void copy_n_and_update(Allocator &, Iterator, std::size_t)\ { BOOST_ASSERT(false); }\ \ protected:\ @@ -427,11 +427,11 @@ struct insert_emplace_proxy_arg##N\ \ static const bool single_value = true;\ \ - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg##N(BOOST_MOVE_UREF##N)\ + inline explicit insert_emplace_proxy_arg##N(BOOST_MOVE_UREF##N)\ : base_t(BOOST_MOVE_FWD##N){}\ \ template<class Iterator>\ - BOOST_CONTAINER_FORCEINLINE void copy_n_and_update(Allocator &a, Iterator p, std::size_t n)\ + inline void copy_n_and_update(Allocator &a, Iterator p, std::size_t n)\ {\ BOOST_ASSERT(n == 1); (void)n;\ typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\ @@ -461,7 +461,7 @@ struct insert_emplace_proxy_arg1<Allocator, ::boost::rv<typename boost::containe { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_move_proxy<Allocator>(v) {} }; @@ -472,7 +472,7 @@ struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; @@ -486,7 +486,7 @@ struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &&v) + inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &&v) : insert_move_proxy<Allocator>(v) {} }; @@ -502,7 +502,7 @@ struct insert_emplace_proxy_arg1<Allocator { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; @@ -513,7 +513,7 @@ struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; @@ -526,7 +526,7 @@ struct insert_emplace_proxy_arg1<Allocator { static const bool single_value = true; - BOOST_CONTAINER_FORCEINLINE explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) + inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v) : insert_copy_proxy<Allocator>(v) {} }; diff --git a/contrib/restricted/boost/container/include/boost/container/detail/alloc_helpers.hpp b/contrib/restricted/boost/container/include/boost/container/detail/alloc_helpers.hpp index 5ca2ca727d..57c59e46c1 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/alloc_helpers.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/alloc_helpers.hpp @@ -27,30 +27,30 @@ namespace container { namespace dtl { template<class AllocatorType> -BOOST_CONTAINER_FORCEINLINE void swap_alloc(AllocatorType &, AllocatorType &, dtl::false_type) +inline void swap_alloc(AllocatorType &, AllocatorType &, dtl::false_type) BOOST_NOEXCEPT_OR_NOTHROW {} template<class AllocatorType> -BOOST_CONTAINER_FORCEINLINE void swap_alloc(AllocatorType &l, AllocatorType &r, dtl::true_type) +inline void swap_alloc(AllocatorType &l, AllocatorType &r, dtl::true_type) { boost::adl_move_swap(l, r); } template<class AllocatorType> -BOOST_CONTAINER_FORCEINLINE void assign_alloc(AllocatorType &, const AllocatorType &, dtl::false_type) +inline void assign_alloc(AllocatorType &, const AllocatorType &, dtl::false_type) BOOST_NOEXCEPT_OR_NOTHROW {} template<class AllocatorType> -BOOST_CONTAINER_FORCEINLINE void assign_alloc(AllocatorType &l, const AllocatorType &r, dtl::true_type) +inline void assign_alloc(AllocatorType &l, const AllocatorType &r, dtl::true_type) { l = r; } template<class AllocatorType> -BOOST_CONTAINER_FORCEINLINE void move_alloc(AllocatorType &, AllocatorType &, dtl::false_type) +inline void move_alloc(AllocatorType &, AllocatorType &, dtl::false_type) BOOST_NOEXCEPT_OR_NOTHROW {} template<class AllocatorType> -BOOST_CONTAINER_FORCEINLINE void move_alloc(AllocatorType &l, AllocatorType &r, dtl::true_type) +inline void move_alloc(AllocatorType &l, AllocatorType &r, dtl::true_type) { l = ::boost::move(r); } } //namespace dtl { diff --git a/contrib/restricted/boost/container/include/boost/container/detail/allocator_version_traits.hpp b/contrib/restricted/boost/container/include/boost/container/detail/allocator_version_traits.hpp index 391f4666cc..4e83d213b1 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/allocator_version_traits.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/allocator_version_traits.hpp @@ -46,19 +46,19 @@ struct allocator_version_traits typedef typename boost::container::allocator_traits<Allocator>::size_type size_type; //Node allocation interface - BOOST_CONTAINER_FORCEINLINE static pointer allocate_one(Allocator &a) + inline static pointer allocate_one(Allocator &a) { return a.allocate_one(); } - BOOST_CONTAINER_FORCEINLINE static void deallocate_one(Allocator &a, const pointer &p) + inline static void deallocate_one(Allocator &a, const pointer &p) { a.deallocate_one(p); } - BOOST_CONTAINER_FORCEINLINE static void allocate_individual(Allocator &a, size_type n, multiallocation_chain &m) + inline static void allocate_individual(Allocator &a, size_type n, multiallocation_chain &m) { return a.allocate_individual(n, m); } - BOOST_CONTAINER_FORCEINLINE static void deallocate_individual(Allocator &a, multiallocation_chain &holder) + inline static void deallocate_individual(Allocator &a, multiallocation_chain &holder) { a.deallocate_individual(holder); } - BOOST_CONTAINER_FORCEINLINE static pointer allocation_command(Allocator &a, allocation_type command, + inline static pointer allocation_command(Allocator &a, allocation_type command, size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse) { return a.allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse); } }; @@ -82,10 +82,10 @@ struct allocator_version_traits<Allocator, 1> < multialloc_cached_counted, value_type> multiallocation_chain; //Node allocation interface - BOOST_CONTAINER_FORCEINLINE static pointer allocate_one(Allocator &a) + inline static pointer allocate_one(Allocator &a) { return a.allocate(1); } - BOOST_CONTAINER_FORCEINLINE static void deallocate_one(Allocator &a, const pointer &p) + inline static void deallocate_one(Allocator &a, const pointer &p) { a.deallocate(p, 1); } static void deallocate_individual(Allocator &a, multiallocation_chain &holder) @@ -102,17 +102,17 @@ struct allocator_version_traits<Allocator, 1> struct allocate_individual_rollback { - BOOST_CONTAINER_FORCEINLINE allocate_individual_rollback(Allocator &a, multiallocation_chain &chain) + inline allocate_individual_rollback(Allocator &a, multiallocation_chain &chain) : mr_a(a), mp_chain(&chain) {} - BOOST_CONTAINER_FORCEINLINE ~allocate_individual_rollback() + inline ~allocate_individual_rollback() { if(mp_chain) allocator_version_traits::deallocate_individual(mr_a, *mp_chain); } - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() { mp_chain = 0; } diff --git a/contrib/restricted/boost/container/include/boost/container/detail/compare_functors.hpp b/contrib/restricted/boost/container/include/boost/container/detail/compare_functors.hpp index ae4ffcea9d..9a35274024 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/compare_functors.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/compare_functors.hpp @@ -32,11 +32,11 @@ class equal_to_value const value_type &t_; public: - BOOST_CONTAINER_FORCEINLINE explicit equal_to_value(const value_type &t) + inline explicit equal_to_value(const value_type &t) : t_(t) {} - BOOST_CONTAINER_FORCEINLINE bool operator()(const value_type &t)const + inline bool operator()(const value_type &t)const { return t_ == t; } }; @@ -47,39 +47,39 @@ struct value_to_node_compare typedef Pred predicate_type; typedef Node node_type; - BOOST_CONTAINER_FORCEINLINE value_to_node_compare() + inline value_to_node_compare() : Pred() {} - BOOST_CONTAINER_FORCEINLINE explicit value_to_node_compare(Pred pred) + inline explicit value_to_node_compare(Pred pred) : Pred(pred) {} - BOOST_CONTAINER_FORCEINLINE Ret operator()(const Node &a, const Node &b) const + inline Ret operator()(const Node &a, const Node &b) const { return static_cast<const Pred&>(*this)(a.get_data(), b.get_data()); } - BOOST_CONTAINER_FORCEINLINE Ret operator()(const Node &a) const + inline Ret operator()(const Node &a) const { return static_cast<const Pred&>(*this)(a.get_data()); } - BOOST_CONTAINER_FORCEINLINE Ret operator()(const Node &a, const Node &b) + inline Ret operator()(const Node &a, const Node &b) { return static_cast<Pred&>(*this)(a.get_data(), b.get_data()); } - BOOST_CONTAINER_FORCEINLINE Ret operator()(const Node &a) + inline Ret operator()(const Node &a) { return static_cast<Pred&>(*this)(a.get_data()); } - BOOST_CONTAINER_FORCEINLINE predicate_type & predicate() { return static_cast<predicate_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE const predicate_type & predicate() const { return static_cast<predicate_type&>(*this); } + inline predicate_type & predicate() { return static_cast<predicate_type&>(*this); } + inline const predicate_type & predicate() const { return static_cast<predicate_type&>(*this); } }; template<class KeyPred, class KeyOfValue, class Node, class Ret = bool> struct key_node_pred : public boost::intrusive::detail::ebo_functor_holder<KeyPred> { - BOOST_CONTAINER_FORCEINLINE explicit key_node_pred(const KeyPred &comp) + inline explicit key_node_pred(const KeyPred &comp) : base_t(comp) {} - BOOST_CONTAINER_FORCEINLINE explicit key_node_pred() + inline explicit key_node_pred() {} typedef boost::intrusive::detail::ebo_functor_holder<KeyPred> base_t; @@ -88,42 +88,42 @@ struct key_node_pred typedef typename KeyOfValue::type key_type; - BOOST_CONTAINER_FORCEINLINE static const key_type &key_from(const Node &n) + inline static const key_type &key_from(const Node &n) { return key_of_value()(n.get_data()); } template <class T> - BOOST_CONTAINER_FORCEINLINE static const T & + inline static const T & key_from(const T &t) { return t; } - BOOST_CONTAINER_FORCEINLINE const key_predicate &key_pred() const + inline const key_predicate &key_pred() const { return static_cast<const key_predicate &>(*this); } - BOOST_CONTAINER_FORCEINLINE key_predicate &key_pred() + inline key_predicate &key_pred() { return static_cast<key_predicate &>(*this); } - BOOST_CONTAINER_FORCEINLINE Ret operator()(const key_type &key) const + inline Ret operator()(const key_type &key) const { return this->key_pred()(key); } template<class U> - BOOST_CONTAINER_FORCEINLINE Ret operator()(const U &nonkey) const + inline Ret operator()(const U &nonkey) const { return this->key_pred()(this->key_from(nonkey)); } - BOOST_CONTAINER_FORCEINLINE bool operator()(const key_type &key1, const key_type &key2) const + inline bool operator()(const key_type &key1, const key_type &key2) const { return this->key_pred()(key1, key2); } template<class U> - BOOST_CONTAINER_FORCEINLINE bool operator()(const key_type &key1, const U &nonkey2) const + inline bool operator()(const key_type &key1, const U &nonkey2) const { return this->key_pred()(key1, this->key_from(nonkey2)); } template<class U> - BOOST_CONTAINER_FORCEINLINE bool operator()(const U &nonkey1, const key_type &key2) const + inline bool operator()(const U &nonkey1, const key_type &key2) const { return this->key_pred()(this->key_from(nonkey1), key2); } template<class U, class V> - BOOST_CONTAINER_FORCEINLINE bool operator()(const U &nonkey1, const V &nonkey2) const + inline bool operator()(const U &nonkey1, const V &nonkey2) const { return this->key_pred()(this->key_from(nonkey1), this->key_from(nonkey2)); } }; diff --git a/contrib/restricted/boost/container/include/boost/container/detail/copy_move_algo.hpp b/contrib/restricted/boost/container/include/boost/container/detail/copy_move_algo.hpp index 8729b307bb..105faf606d 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/copy_move_algo.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/copy_move_algo.hpp @@ -46,7 +46,12 @@ # endif //GCC 8 seems a bit confused about array access error with static_vector //when out of bound exceptions are being thrown. -# if defined(BOOST_GCC) && (BOOST_GCC >= 80000) && (BOOST_GCC < 80200) +# if defined(BOOST_GCC) && ((BOOST_GCC >= 80000) && (BOOST_GCC < 80200)) +# pragma GCC diagnostic ignored "-Wstringop-overflow" +# endif +//GCC 12 seems a bit confused about array access error with small_vector +# if defined(BOOST_GCC) && ((BOOST_GCC >= 120000) && (BOOST_GCC < 130000)) +# pragma GCC diagnostic ignored "-Wstringop-overread" # pragma GCC diagnostic ignored "-Wstringop-overflow" # endif # pragma GCC diagnostic ignored "-Warray-bounds" @@ -214,7 +219,7 @@ struct disable_if_single_value_proxy template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE F memmove(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW +inline F memmove(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW { typedef typename boost::container::iter_value<I>::type value_type; typedef typename boost::container::iterator_traits<F>::difference_type r_difference_type; @@ -232,7 +237,7 @@ BOOST_CONTAINER_FORCEINLINE F memmove(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE F memmove_n(I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW +inline F memmove_n(I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { typedef typename boost::container::iter_value<I>::type value_type; typedef typename boost::container::iterator_traits<F>::difference_type r_difference_type; @@ -250,7 +255,7 @@ BOOST_CONTAINER_FORCEINLINE F memmove_n(I f, std::size_t n, F r) BOOST_NOEXCEPT_ template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE I memmove_n_source(I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW +inline I memmove_n_source(I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { if(BOOST_LIKELY(n != 0)){ typedef typename boost::container::iter_value<I>::type value_type; @@ -267,7 +272,7 @@ BOOST_CONTAINER_FORCEINLINE I memmove_n_source(I f, std::size_t n, F r) BOOST_NO template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE I memmove_n_source_dest(I f, std::size_t n, F &r) BOOST_NOEXCEPT_OR_NOTHROW +inline I memmove_n_source_dest(I f, std::size_t n, F &r) BOOST_NOEXCEPT_OR_NOTHROW { typedef typename boost::container::iter_value<I>::type value_type; typedef typename boost::container::iterator_traits<F>::difference_type i_difference_type; @@ -367,7 +372,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_move_alloc(Allocator &, I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove(f, l, r); } @@ -413,7 +418,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_move_alloc_n(Allocator &, I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n(f, n, r); } @@ -459,7 +464,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_constructible<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, I>::type uninitialized_move_alloc_n_source(Allocator &, I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n_source(f, n, r); } @@ -504,7 +509,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_copy_alloc(Allocator &, I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove(f, l, r); } @@ -550,7 +555,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_copy_alloc_n(Allocator &, I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n(f, n, r); } @@ -595,7 +600,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_constructible<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, I>::type uninitialized_copy_alloc_n_source(Allocator &, I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n_source(f, n, r); } @@ -639,7 +644,7 @@ inline typename dtl::disable_if_memzero_initializable<F, F>::type template <typename Allocator, typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memzero_initializable<F, F>::type +inline typename dtl::enable_if_memzero_initializable<F, F>::type uninitialized_value_init_alloc_n(Allocator &, std::size_t n, F r) { typedef typename boost::container::iterator_traits<F>::value_type value_type; @@ -812,7 +817,7 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type copy_n(I f, U n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n(f, n, r); } @@ -840,7 +845,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type copy_n_source(I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n_source(f, n, r); } @@ -867,7 +872,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type copy_n_source_dest(I f, std::size_t n, F &r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n_source_dest(f, n, r); } @@ -922,7 +927,7 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type move_n(I f, U n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n(f, n, r); } @@ -949,7 +954,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, F>::type template <typename I, // I models InputIterator typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type move_backward(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW { typedef typename boost::container::iter_value<I>::type value_type; @@ -985,7 +990,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type template <typename I // I models InputIterator ,typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type move_n_source_dest(I f, std::size_t n, F &r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n_source_dest(f, n, r); } @@ -1013,18 +1018,18 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type template <typename I // I models InputIterator ,typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type move_n_source(I f, std::size_t n, F r) BOOST_NOEXCEPT_OR_NOTHROW { return dtl::memmove_n_source(f, n, r); } template<typename F> // F models ForwardIterator -BOOST_CONTAINER_FORCEINLINE F move_forward_overlapping(F f, F l, F r) +inline F move_forward_overlapping(F f, F l, F r) { return (f != r) ? (move)(f, l, r) : l; } template<typename B> // B models BidirIterator -BOOST_CONTAINER_FORCEINLINE B move_backward_overlapping(B f, B l, B rl) +inline B move_backward_overlapping(B f, B l, B rl) { return (l != rl) ? (move_backward)(f, l, rl) : f; } @@ -1054,7 +1059,7 @@ template <typename Allocator ,typename I // I models InputIterator ,typename U> // U models unsigned integral constant -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_trivially_destructible<I, void>::type +inline typename dtl::enable_if_trivially_destructible<I, void>::type destroy_alloc_n(Allocator &, I, U) {} @@ -1079,7 +1084,7 @@ inline typename dtl::disable_if_trivially_destructible<I, void>::type template <typename Allocator ,typename I > // I models InputIterator -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_trivially_destructible<I, void>::type +inline typename dtl::enable_if_trivially_destructible<I, void>::type destroy_alloc(Allocator &, I, I) {} @@ -1458,7 +1463,7 @@ template , typename F // F models ForwardIterator , typename InsertionProxy > -BOOST_CONTAINER_FORCEINLINE void expand_forward_and_insert_alloc +inline void expand_forward_and_insert_alloc ( Allocator& a , F pos , F last @@ -1780,7 +1785,7 @@ template , typename B // B models BidirIterator , typename InsertionProxy > -BOOST_CONTAINER_FORCEINLINE void expand_backward_forward_and_insert_alloc_move_forward +inline void expand_backward_forward_and_insert_alloc_move_forward ( B const old_start , std::size_t const old_size , B const new_start diff --git a/contrib/restricted/boost/container/include/boost/container/detail/destroyers.hpp b/contrib/restricted/boost/container/include/boost/container/detail/destroyers.hpp index f00ac6d6ed..38ff874344 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/destroyers.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/destroyers.hpp @@ -180,23 +180,23 @@ struct scoped_destructor_n typedef Ptr pointer; typedef typename AllocTraits::value_type value_type; - BOOST_CONTAINER_FORCEINLINE scoped_destructor_n(Ptr p, Allocator& a, std::size_t n) + inline scoped_destructor_n(Ptr p, Allocator& a, std::size_t n) : m_p(p), m_n(n), m_a(a) {} - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() { m_p = Ptr(); m_n = 0; } - BOOST_CONTAINER_FORCEINLINE void increment_size(std::size_t inc) + inline void increment_size(std::size_t inc) { m_n += inc; } - BOOST_CONTAINER_FORCEINLINE void increment_size_backwards(std::size_t inc) + inline void increment_size_backwards(std::size_t inc) { m_n += inc; m_p -= std::ptrdiff_t(inc); } - BOOST_CONTAINER_FORCEINLINE void shrink_forward(std::size_t inc) + inline void shrink_forward(std::size_t inc) { m_n -= inc; m_p += std::ptrdiff_t(inc); } - BOOST_CONTAINER_FORCEINLINE void set_size(std::size_t sz) + inline void set_size(std::size_t sz) { m_n = sz; } ~scoped_destructor_n() @@ -225,22 +225,22 @@ struct null_scoped_destructor_n typedef boost::container::allocator_traits<Allocator> AllocTraits; typedef Ptr pointer; - BOOST_CONTAINER_FORCEINLINE null_scoped_destructor_n(Ptr, Allocator&, std::size_t) + inline null_scoped_destructor_n(Ptr, Allocator&, std::size_t) {} - BOOST_CONTAINER_FORCEINLINE void increment_size(std::size_t) + inline void increment_size(std::size_t) {} - BOOST_CONTAINER_FORCEINLINE void increment_size_backwards(std::size_t) + inline void increment_size_backwards(std::size_t) {} - BOOST_CONTAINER_FORCEINLINE void set_size(std::size_t ) + inline void set_size(std::size_t ) {} - BOOST_CONTAINER_FORCEINLINE void shrink_forward(std::size_t) + inline void shrink_forward(std::size_t) {} - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() {} }; @@ -254,20 +254,20 @@ struct scoped_destructor_range typedef typename AllocTraits::pointer pointer; typedef typename AllocTraits::value_type value_type; - BOOST_CONTAINER_FORCEINLINE scoped_destructor_range(pointer p, pointer e, Allocator& a) + inline scoped_destructor_range(pointer p, pointer e, Allocator& a) : m_p(p), m_e(e), m_a(a) {} - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() { m_p = pointer(); m_e = pointer(); } - BOOST_CONTAINER_FORCEINLINE void set_end(pointer e) + inline void set_end(pointer e) { m_e = e; } - BOOST_CONTAINER_FORCEINLINE void set_begin(pointer b) + inline void set_begin(pointer b) { m_p = b; } - BOOST_CONTAINER_FORCEINLINE void set_range(pointer b, pointer e) + inline void set_range(pointer b, pointer e) { m_p = b; m_e = e; } ~scoped_destructor_range() @@ -293,19 +293,19 @@ struct null_scoped_destructor_range typedef boost::container::allocator_traits<Allocator> AllocTraits; typedef typename AllocTraits::pointer pointer; - BOOST_CONTAINER_FORCEINLINE null_scoped_destructor_range(pointer, pointer, Allocator&) + inline null_scoped_destructor_range(pointer, pointer, Allocator&) {} - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() {} - BOOST_CONTAINER_FORCEINLINE void set_end(pointer) + inline void set_end(pointer) {} - BOOST_CONTAINER_FORCEINLINE void set_begin(pointer) + inline void set_begin(pointer) {} - BOOST_CONTAINER_FORCEINLINE void set_range(pointer, pointer) + inline void set_range(pointer, pointer) {} }; @@ -316,24 +316,24 @@ class scoped_destructor typedef boost::container::allocator_traits<Allocator> AllocTraits; public: typedef typename Allocator::value_type value_type; - BOOST_CONTAINER_FORCEINLINE scoped_destructor(Allocator &a, value_type *pv) + inline scoped_destructor(Allocator &a, value_type *pv) : pv_(pv), a_(a) {} - BOOST_CONTAINER_FORCEINLINE ~scoped_destructor() + inline ~scoped_destructor() { if(pv_){ AllocTraits::destroy(a_, pv_); } } - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() { pv_ = 0; } - BOOST_CONTAINER_FORCEINLINE void set(value_type *ptr) { pv_ = ptr; } + inline void set(value_type *ptr) { pv_ = ptr; } - BOOST_CONTAINER_FORCEINLINE value_type *get() const { return pv_; } + inline value_type *get() const { return pv_; } private: value_type *pv_; @@ -346,18 +346,18 @@ class null_scoped_destructor typedef boost::container::allocator_traits<Allocator> AllocTraits; public: typedef typename Allocator::value_type value_type; - BOOST_CONTAINER_FORCEINLINE null_scoped_destructor(Allocator &, value_type *) + inline null_scoped_destructor(Allocator &, value_type *) {} - BOOST_CONTAINER_FORCEINLINE ~null_scoped_destructor() + inline ~null_scoped_destructor() {} - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() {} - BOOST_CONTAINER_FORCEINLINE void set(value_type *) { } + inline void set(value_type *) { } - BOOST_CONTAINER_FORCEINLINE value_type *get() const { return 0; } + inline value_type *get() const { return 0; } }; @@ -368,11 +368,11 @@ class value_destructor typedef boost::container::allocator_traits<Allocator> AllocTraits; public: typedef Value value_type; - BOOST_CONTAINER_FORCEINLINE value_destructor(Allocator &a, value_type &rv) + inline value_destructor(Allocator &a, value_type &rv) : rv_(rv), a_(a) {} - BOOST_CONTAINER_FORCEINLINE ~value_destructor() + inline ~value_destructor() { AllocTraits::destroy(a_, &rv_); } @@ -396,18 +396,18 @@ class allocator_node_destroyer Allocator & a_; private: - BOOST_CONTAINER_FORCEINLINE void priv_deallocate(const pointer &p, version_1) + inline void priv_deallocate(const pointer &p, version_1) { AllocTraits::deallocate(a_,p, 1); } - BOOST_CONTAINER_FORCEINLINE void priv_deallocate(const pointer &p, version_2) + inline void priv_deallocate(const pointer &p, version_2) { a_.deallocate_one(p); } public: - BOOST_CONTAINER_FORCEINLINE explicit allocator_node_destroyer(Allocator &a) + inline explicit allocator_node_destroyer(Allocator &a) : a_(a) {} - BOOST_CONTAINER_FORCEINLINE void operator()(const pointer &p) + inline void operator()(const pointer &p) { boost::movelib::to_raw_pointer(p)->destructor(a_); this->priv_deallocate(p, alloc_version()); @@ -420,24 +420,24 @@ class scoped_node_destructor typedef boost::container::allocator_traits<Allocator> AllocTraits; public: typedef typename Allocator::value_type value_type; - BOOST_CONTAINER_FORCEINLINE scoped_node_destructor(Allocator &a, value_type *pv) + inline scoped_node_destructor(Allocator &a, value_type *pv) : pv_(pv), a_(a) {} - BOOST_CONTAINER_FORCEINLINE ~scoped_node_destructor() + inline ~scoped_node_destructor() { if(pv_){ pv_->destructor(a_); } } - BOOST_CONTAINER_FORCEINLINE void release() + inline void release() { pv_ = 0; } - BOOST_CONTAINER_FORCEINLINE void set(value_type *ptr) { pv_ = ptr; } + inline void set(value_type *ptr) { pv_ = ptr; } - BOOST_CONTAINER_FORCEINLINE value_type *get() const { return pv_; } + inline value_type *get() const { return pv_; } private: value_type *pv_; @@ -457,11 +457,11 @@ class allocator_node_destroyer_and_chain_builder multiallocation_chain &c_; public: - BOOST_CONTAINER_FORCEINLINE allocator_node_destroyer_and_chain_builder(Allocator &a, multiallocation_chain &c) + inline allocator_node_destroyer_and_chain_builder(Allocator &a, multiallocation_chain &c) : a_(a), c_(c) {} - BOOST_CONTAINER_FORCEINLINE void operator()(const typename Allocator::pointer &p) + inline void operator()(const typename Allocator::pointer &p) { boost::movelib::to_raw_pointer(p)->destructor(a_); c_.push_back(p); @@ -480,14 +480,14 @@ class allocator_multialloc_chain_node_deallocator multiallocation_chain c_; public: - BOOST_CONTAINER_FORCEINLINE allocator_multialloc_chain_node_deallocator(Allocator &a) + inline allocator_multialloc_chain_node_deallocator(Allocator &a) : a_(a), c_() {} - BOOST_CONTAINER_FORCEINLINE chain_builder get_chain_builder() + inline chain_builder get_chain_builder() { return chain_builder(a_, c_); } - BOOST_CONTAINER_FORCEINLINE ~allocator_multialloc_chain_node_deallocator() + inline ~allocator_multialloc_chain_node_deallocator() { a_.deallocate_individual(c_); } diff --git a/contrib/restricted/boost/container/include/boost/container/detail/dispatch_uses_allocator.hpp b/contrib/restricted/boost/container/include/boost/container/detail/dispatch_uses_allocator.hpp index 42fd4f4fd7..5bb7687d5a 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/dispatch_uses_allocator.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/dispatch_uses_allocator.hpp @@ -110,7 +110,7 @@ template < typename ConstructAlloc , typename T , class ...Args > -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and +inline typename dtl::enable_if_and < void , dtl::is_not_pair<T> , dtl::not_< uses_allocator<T, typename remove_cvref<ArgAlloc>::type > > @@ -127,7 +127,7 @@ template < typename ConstructAlloc , typename T , class ...Args > -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and +inline typename dtl::enable_if_and < void , dtl::is_not_pair<T> , uses_allocator<T, typename remove_cvref<ArgAlloc>::type> @@ -146,7 +146,7 @@ template < typename ConstructAlloc , typename T , class ...Args > -BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and +inline typename dtl::enable_if_and < void , dtl::is_not_pair<T> , uses_allocator<T, typename remove_cvref<ArgAlloc>::type> @@ -162,7 +162,7 @@ BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \ template <typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\ - BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and\ + inline typename dtl::enable_if_and\ < void\ , dtl::is_not_pair<T>\ , dtl::not_<uses_allocator<T, typename remove_cvref<ArgAlloc>::type> >\ @@ -179,7 +179,7 @@ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \ template < typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\ - BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and\ + inline typename dtl::enable_if_and\ < void\ , dtl::is_not_pair<T>\ , uses_allocator<T, typename remove_cvref<ArgAlloc>::type>\ @@ -197,7 +197,7 @@ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \ template < typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\ - BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and\ + inline typename dtl::enable_if_and\ < void\ , dtl::is_not_pair<T>\ , uses_allocator<T, typename remove_cvref<ArgAlloc>::type>\ diff --git a/contrib/restricted/boost/container/include/boost/container/detail/iterators.hpp b/contrib/restricted/boost/container/include/boost/container/detail/iterators.hpp index c503916a96..57ffb0ced4 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/iterators.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/iterators.hpp @@ -27,7 +27,6 @@ #include <boost/container/allocator_traits.hpp> #include <boost/container/detail/type_traits.hpp> #include <boost/container/detail/value_init.hpp> -#include <boost/static_assert.hpp> #include <boost/move/utility_core.hpp> #include <boost/intrusive/detail/reverse_iterator.hpp> @@ -49,125 +48,125 @@ class constant_iterator typedef constant_iterator<T> this_type; public: - BOOST_CONTAINER_FORCEINLINE explicit constant_iterator(const T &ref, std::size_t range_size) + inline explicit constant_iterator(const T &ref, std::size_t range_size) : m_ptr(&ref), m_num(range_size){} //Constructors - BOOST_CONTAINER_FORCEINLINE constant_iterator() + inline constant_iterator() : m_ptr(0), m_num(0){} - BOOST_CONTAINER_FORCEINLINE constant_iterator& operator++() + inline constant_iterator& operator++() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE constant_iterator operator++(int) + inline constant_iterator operator++(int) { constant_iterator result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE constant_iterator& operator--() + inline constant_iterator& operator--() { decrement(); return *this; } - BOOST_CONTAINER_FORCEINLINE constant_iterator operator--(int) + inline constant_iterator operator--(int) { constant_iterator result (*this); decrement(); return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const constant_iterator& i, const constant_iterator& i2) + inline friend bool operator== (const constant_iterator& i, const constant_iterator& i2) { return i.equal(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const constant_iterator& i, const constant_iterator& i2) + inline friend bool operator!= (const constant_iterator& i, const constant_iterator& i2) { return !(i == i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator< (const constant_iterator& i, const constant_iterator& i2) + inline friend bool operator< (const constant_iterator& i, const constant_iterator& i2) { return i.less(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator> (const constant_iterator& i, const constant_iterator& i2) + inline friend bool operator> (const constant_iterator& i, const constant_iterator& i2) { return i2 < i; } - BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const constant_iterator& i, const constant_iterator& i2) + inline friend bool operator<= (const constant_iterator& i, const constant_iterator& i2) { return !(i > i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const constant_iterator& i, const constant_iterator& i2) + inline friend bool operator>= (const constant_iterator& i, const constant_iterator& i2) { return !(i < i2); } - BOOST_CONTAINER_FORCEINLINE friend std::ptrdiff_t operator- (const constant_iterator& i, const constant_iterator& i2) + inline friend std::ptrdiff_t operator- (const constant_iterator& i, const constant_iterator& i2) { return i2.distance_to(i); } //Arithmetic signed - BOOST_CONTAINER_FORCEINLINE constant_iterator& operator+=(std::ptrdiff_t off) + inline constant_iterator& operator+=(std::ptrdiff_t off) { this->advance(off); return *this; } - BOOST_CONTAINER_FORCEINLINE constant_iterator operator+(std::ptrdiff_t off) const + inline constant_iterator operator+(std::ptrdiff_t off) const { constant_iterator other(*this); other.advance(off); return other; } - BOOST_CONTAINER_FORCEINLINE friend constant_iterator operator+(std::ptrdiff_t off, const constant_iterator& right) + inline friend constant_iterator operator+(std::ptrdiff_t off, const constant_iterator& right) { return right + off; } - BOOST_CONTAINER_FORCEINLINE constant_iterator& operator-=(std::ptrdiff_t off) + inline constant_iterator& operator-=(std::ptrdiff_t off) { this->advance(-off); return *this; } - BOOST_CONTAINER_FORCEINLINE constant_iterator operator-(std::ptrdiff_t off) const + inline constant_iterator operator-(std::ptrdiff_t off) const { return *this + (-off); } - BOOST_CONTAINER_FORCEINLINE const T& operator[] (std::ptrdiff_t ) const + inline const T& operator[] (std::ptrdiff_t ) const { return dereference(); } - BOOST_CONTAINER_FORCEINLINE const T& operator*() const + inline const T& operator*() const { return dereference(); } - BOOST_CONTAINER_FORCEINLINE const T* operator->() const + inline const T* operator->() const { return &(dereference()); } //Arithmetic unsigned - BOOST_CONTAINER_FORCEINLINE constant_iterator& operator+=(std::size_t off) + inline constant_iterator& operator+=(std::size_t off) { return *this += std::ptrdiff_t(off); } - BOOST_CONTAINER_FORCEINLINE constant_iterator operator+(std::size_t off) const + inline constant_iterator operator+(std::size_t off) const { return *this + std::ptrdiff_t(off); } - BOOST_CONTAINER_FORCEINLINE friend constant_iterator operator+(std::size_t off, const constant_iterator& right) + inline friend constant_iterator operator+(std::size_t off, const constant_iterator& right) { return std::ptrdiff_t(off) + right; } - BOOST_CONTAINER_FORCEINLINE constant_iterator& operator-=(std::size_t off) + inline constant_iterator& operator-=(std::size_t off) { return *this -= std::ptrdiff_t(off); } - BOOST_CONTAINER_FORCEINLINE constant_iterator operator-(std::size_t off) const + inline constant_iterator operator-(std::size_t off) const { return *this - std::ptrdiff_t(off); } - BOOST_CONTAINER_FORCEINLINE const T& operator[] (std::size_t off) const + inline const T& operator[] (std::size_t off) const { return (*this)[std::ptrdiff_t(off)]; } private: const T * m_ptr; std::size_t m_num; - BOOST_CONTAINER_FORCEINLINE void increment() + inline void increment() { --m_num; } - BOOST_CONTAINER_FORCEINLINE void decrement() + inline void decrement() { ++m_num; } - BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const + inline bool equal(const this_type &other) const { return m_num == other.m_num; } - BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const + inline bool less(const this_type &other) const { return other.m_num < m_num; } - BOOST_CONTAINER_FORCEINLINE const T & dereference() const + inline const T & dereference() const { return *m_ptr; } - BOOST_CONTAINER_FORCEINLINE void advance(std::ptrdiff_t n) + inline void advance(std::ptrdiff_t n) { m_num = std::size_t(std::ptrdiff_t(m_num) - n); } - BOOST_CONTAINER_FORCEINLINE std::ptrdiff_t distance_to(const this_type &other)const + inline std::ptrdiff_t distance_to(const this_type &other)const { return std::ptrdiff_t(m_num - other.m_num); } }; @@ -179,72 +178,72 @@ class value_init_construct_iterator typedef value_init_construct_iterator<T> this_type; public: - BOOST_CONTAINER_FORCEINLINE explicit value_init_construct_iterator(std::size_t range_size) + inline explicit value_init_construct_iterator(std::size_t range_size) : m_num(range_size){} //Constructors - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator() + inline value_init_construct_iterator() : m_num(0){} - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator++() + inline value_init_construct_iterator& operator++() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator++(int) + inline value_init_construct_iterator operator++(int) { value_init_construct_iterator result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator--() + inline value_init_construct_iterator& operator--() { decrement(); return *this; } - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator--(int) + inline value_init_construct_iterator operator--(int) { value_init_construct_iterator result (*this); decrement(); return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend bool operator== (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i.equal(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend bool operator!= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return !(i == i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator< (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend bool operator< (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i.less(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator> (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend bool operator> (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i2 < i; } - BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend bool operator<= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return !(i > i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend bool operator>= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return !(i < i2); } - BOOST_CONTAINER_FORCEINLINE friend std::ptrdiff_t operator- (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) + inline friend std::ptrdiff_t operator- (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i2.distance_to(i); } //Arithmetic - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator+=(std::ptrdiff_t off) + inline value_init_construct_iterator& operator+=(std::ptrdiff_t off) { this->advance(off); return *this; } - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator+(std::ptrdiff_t off) const + inline value_init_construct_iterator operator+(std::ptrdiff_t off) const { value_init_construct_iterator other(*this); other.advance(off); return other; } - BOOST_CONTAINER_FORCEINLINE friend value_init_construct_iterator operator+(std::ptrdiff_t off, const value_init_construct_iterator& right) + inline friend value_init_construct_iterator operator+(std::ptrdiff_t off, const value_init_construct_iterator& right) { return right + off; } - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator-=(std::ptrdiff_t off) + inline value_init_construct_iterator& operator-=(std::ptrdiff_t off) { this->advance(-off); return *this; } - BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator-(std::ptrdiff_t off) const + inline value_init_construct_iterator operator-(std::ptrdiff_t off) const { return *this + (-off); } //This pseudo-iterator's dereference operations have no sense since value is not @@ -257,28 +256,28 @@ class value_init_construct_iterator private: std::size_t m_num; - BOOST_CONTAINER_FORCEINLINE void increment() + inline void increment() { --m_num; } - BOOST_CONTAINER_FORCEINLINE void decrement() + inline void decrement() { ++m_num; } - BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const + inline bool equal(const this_type &other) const { return m_num == other.m_num; } - BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const + inline bool less(const this_type &other) const { return other.m_num < m_num; } - BOOST_CONTAINER_FORCEINLINE const T & dereference() const + inline const T & dereference() const { static T dummy; return dummy; } - BOOST_CONTAINER_FORCEINLINE void advance(std::ptrdiff_t n) + inline void advance(std::ptrdiff_t n) { m_num = std::size_t(std::ptrdiff_t(m_num) - n); } - BOOST_CONTAINER_FORCEINLINE std::ptrdiff_t distance_to(const this_type &other)const + inline std::ptrdiff_t distance_to(const this_type &other)const { return std::ptrdiff_t(m_num - other.m_num); } }; @@ -290,72 +289,72 @@ class default_init_construct_iterator typedef default_init_construct_iterator<T> this_type; public: - BOOST_CONTAINER_FORCEINLINE explicit default_init_construct_iterator(std::size_t range_size) + inline explicit default_init_construct_iterator(std::size_t range_size) : m_num(range_size){} //Constructors - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator() + inline default_init_construct_iterator() : m_num(0){} - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator++() + inline default_init_construct_iterator& operator++() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator++(int) + inline default_init_construct_iterator operator++(int) { default_init_construct_iterator result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator--() + inline default_init_construct_iterator& operator--() { decrement(); return *this; } - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator--(int) + inline default_init_construct_iterator operator--(int) { default_init_construct_iterator result (*this); decrement(); return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend bool operator== (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return i.equal(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend bool operator!= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return !(i == i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator< (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend bool operator< (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return i.less(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator> (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend bool operator> (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return i2 < i; } - BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend bool operator<= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return !(i > i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend bool operator>= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return !(i < i2); } - BOOST_CONTAINER_FORCEINLINE friend std::ptrdiff_t operator- (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + inline friend std::ptrdiff_t operator- (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) { return i2.distance_to(i); } //Arithmetic - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator+=(std::ptrdiff_t off) + inline default_init_construct_iterator& operator+=(std::ptrdiff_t off) { this->advance(off); return *this; } - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator+(std::ptrdiff_t off) const + inline default_init_construct_iterator operator+(std::ptrdiff_t off) const { default_init_construct_iterator other(*this); other.advance(off); return other; } - BOOST_CONTAINER_FORCEINLINE friend default_init_construct_iterator operator+(std::ptrdiff_t off, const default_init_construct_iterator& right) + inline friend default_init_construct_iterator operator+(std::ptrdiff_t off, const default_init_construct_iterator& right) { return right + off; } - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator-=(std::ptrdiff_t off) + inline default_init_construct_iterator& operator-=(std::ptrdiff_t off) { this->advance(-off); return *this; } - BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator-(std::ptrdiff_t off) const + inline default_init_construct_iterator operator-(std::ptrdiff_t off) const { return *this + (-off); } //This pseudo-iterator's dereference operations have no sense since value is not @@ -368,28 +367,28 @@ class default_init_construct_iterator private: std::size_t m_num; - BOOST_CONTAINER_FORCEINLINE void increment() + inline void increment() { --m_num; } - BOOST_CONTAINER_FORCEINLINE void decrement() + inline void decrement() { ++m_num; } - BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const + inline bool equal(const this_type &other) const { return m_num == other.m_num; } - BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const + inline bool less(const this_type &other) const { return other.m_num < m_num; } - BOOST_CONTAINER_FORCEINLINE const T & dereference() const + inline const T & dereference() const { static T dummy; return dummy; } - BOOST_CONTAINER_FORCEINLINE void advance(std::ptrdiff_t n) + inline void advance(std::ptrdiff_t n) { m_num = std::size_t(std::ptrdiff_t(m_num) - n); } - BOOST_CONTAINER_FORCEINLINE std::ptrdiff_t distance_to(const this_type &other) const + inline std::ptrdiff_t distance_to(const this_type &other) const { return std::ptrdiff_t(m_num - other.m_num); } }; @@ -401,106 +400,106 @@ class repeat_iterator { typedef repeat_iterator<T> this_type; public: - BOOST_CONTAINER_FORCEINLINE explicit repeat_iterator(T &ref, std::size_t range_size) + inline explicit repeat_iterator(T &ref, std::size_t range_size) : m_ptr(&ref), m_num(range_size){} //Constructors - BOOST_CONTAINER_FORCEINLINE repeat_iterator() + inline repeat_iterator() : m_ptr(0), m_num(0){} - BOOST_CONTAINER_FORCEINLINE this_type& operator++() + inline this_type& operator++() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator++(int) + inline this_type operator++(int) { this_type result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE this_type& operator--() + inline this_type& operator--() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator--(int) + inline this_type operator--(int) { this_type result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const this_type& i, const this_type& i2) + inline friend bool operator== (const this_type& i, const this_type& i2) { return i.equal(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const this_type& i, const this_type& i2) + inline friend bool operator!= (const this_type& i, const this_type& i2) { return !(i == i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator< (const this_type& i, const this_type& i2) + inline friend bool operator< (const this_type& i, const this_type& i2) { return i.less(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator> (const this_type& i, const this_type& i2) + inline friend bool operator> (const this_type& i, const this_type& i2) { return i2 < i; } - BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const this_type& i, const this_type& i2) + inline friend bool operator<= (const this_type& i, const this_type& i2) { return !(i > i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const this_type& i, const this_type& i2) + inline friend bool operator>= (const this_type& i, const this_type& i2) { return !(i < i2); } - BOOST_CONTAINER_FORCEINLINE friend std::ptrdiff_t operator- (const this_type& i, const this_type& i2) + inline friend std::ptrdiff_t operator- (const this_type& i, const this_type& i2) { return i2.distance_to(i); } //Arithmetic - BOOST_CONTAINER_FORCEINLINE this_type& operator+=(std::ptrdiff_t off) + inline this_type& operator+=(std::ptrdiff_t off) { this->advance(off); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator+(std::ptrdiff_t off) const + inline this_type operator+(std::ptrdiff_t off) const { this_type other(*this); other.advance(off); return other; } - BOOST_CONTAINER_FORCEINLINE friend this_type operator+(std::ptrdiff_t off, const this_type& right) + inline friend this_type operator+(std::ptrdiff_t off, const this_type& right) { return right + off; } - BOOST_CONTAINER_FORCEINLINE this_type& operator-=(std::ptrdiff_t off) + inline this_type& operator-=(std::ptrdiff_t off) { this->advance(-off); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator-(std::ptrdiff_t off) const + inline this_type operator-(std::ptrdiff_t off) const { return *this + (-off); } - BOOST_CONTAINER_FORCEINLINE T& operator*() const + inline T& operator*() const { return dereference(); } - BOOST_CONTAINER_FORCEINLINE T& operator[] (std::ptrdiff_t ) const + inline T& operator[] (std::ptrdiff_t ) const { return dereference(); } - BOOST_CONTAINER_FORCEINLINE T *operator->() const + inline T *operator->() const { return &(dereference()); } private: T * m_ptr; std::size_t m_num; - BOOST_CONTAINER_FORCEINLINE void increment() + inline void increment() { --m_num; } - BOOST_CONTAINER_FORCEINLINE void decrement() + inline void decrement() { ++m_num; } - BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const + inline bool equal(const this_type &other) const { return m_num == other.m_num; } - BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const + inline bool less(const this_type &other) const { return other.m_num < m_num; } - BOOST_CONTAINER_FORCEINLINE T & dereference() const + inline T & dereference() const { return *m_ptr; } - BOOST_CONTAINER_FORCEINLINE void advance(std::ptrdiff_t n) + inline void advance(std::ptrdiff_t n) { m_num = std::size_t(std::ptrdiff_t(m_num - n)); } - BOOST_CONTAINER_FORCEINLINE std::ptrdiff_t distance_to(const this_type &other)const + inline std::ptrdiff_t distance_to(const this_type &other)const { return std::ptrdiff_t(m_num - other.m_num); } }; @@ -513,71 +512,71 @@ class emplace_iterator public: typedef std::ptrdiff_t difference_type; - BOOST_CONTAINER_FORCEINLINE explicit emplace_iterator(EmplaceFunctor&e) + inline explicit emplace_iterator(EmplaceFunctor&e) : m_num(1), m_pe(&e){} - BOOST_CONTAINER_FORCEINLINE emplace_iterator() + inline emplace_iterator() : m_num(0), m_pe(0){} - BOOST_CONTAINER_FORCEINLINE this_type& operator++() + inline this_type& operator++() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator++(int) + inline this_type operator++(int) { this_type result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE this_type& operator--() + inline this_type& operator--() { decrement(); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator--(int) + inline this_type operator--(int) { this_type result (*this); decrement(); return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const this_type& i, const this_type& i2) + inline friend bool operator== (const this_type& i, const this_type& i2) { return i.equal(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const this_type& i, const this_type& i2) + inline friend bool operator!= (const this_type& i, const this_type& i2) { return !(i == i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator< (const this_type& i, const this_type& i2) + inline friend bool operator< (const this_type& i, const this_type& i2) { return i.less(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator> (const this_type& i, const this_type& i2) + inline friend bool operator> (const this_type& i, const this_type& i2) { return i2 < i; } - BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const this_type& i, const this_type& i2) + inline friend bool operator<= (const this_type& i, const this_type& i2) { return !(i > i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const this_type& i, const this_type& i2) + inline friend bool operator>= (const this_type& i, const this_type& i2) { return !(i < i2); } - BOOST_CONTAINER_FORCEINLINE friend difference_type operator- (const this_type& i, const this_type& i2) + inline friend difference_type operator- (const this_type& i, const this_type& i2) { return i2.distance_to(i); } //Arithmetic - BOOST_CONTAINER_FORCEINLINE this_type& operator+=(difference_type off) + inline this_type& operator+=(difference_type off) { this->advance(off); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator+(difference_type off) const + inline this_type operator+(difference_type off) const { this_type other(*this); other.advance(off); return other; } - BOOST_CONTAINER_FORCEINLINE friend this_type operator+(difference_type off, const this_type& right) + inline friend this_type operator+(difference_type off, const this_type& right) { return right + off; } - BOOST_CONTAINER_FORCEINLINE this_type& operator-=(difference_type off) + inline this_type& operator-=(difference_type off) { this->advance(-off); return *this; } - BOOST_CONTAINER_FORCEINLINE this_type operator-(difference_type off) const + inline this_type operator-(difference_type off) const { return *this + (-off); } private: @@ -590,39 +589,39 @@ class emplace_iterator public: template<class Allocator> - BOOST_CONTAINER_FORCEINLINE void construct_in_place(Allocator &a, T* ptr) + inline void construct_in_place(Allocator &a, T* ptr) { (*m_pe)(a, ptr); } template<class DestIt> - BOOST_CONTAINER_FORCEINLINE void assign_in_place(DestIt dest) + inline void assign_in_place(DestIt dest) { (*m_pe)(dest); } private: std::size_t m_num; EmplaceFunctor * m_pe; - BOOST_CONTAINER_FORCEINLINE void increment() + inline void increment() { --m_num; } - BOOST_CONTAINER_FORCEINLINE void decrement() + inline void decrement() { ++m_num; } - BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const + inline bool equal(const this_type &other) const { return m_num == other.m_num; } - BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const + inline bool less(const this_type &other) const { return other.m_num < m_num; } - BOOST_CONTAINER_FORCEINLINE const T & dereference() const + inline const T & dereference() const { static T dummy; return dummy; } - BOOST_CONTAINER_FORCEINLINE void advance(difference_type n) + inline void advance(difference_type n) { m_num -= n; } - BOOST_CONTAINER_FORCEINLINE difference_type distance_to(const this_type &other)const + inline difference_type distance_to(const this_type &other)const { return difference_type(m_num - other.m_num); } }; @@ -633,28 +632,28 @@ struct emplace_functor { typedef typename dtl::build_number_seq<sizeof...(Args)>::type index_tuple_t; - BOOST_CONTAINER_FORCEINLINE emplace_functor(BOOST_FWD_REF(Args)... args) + inline emplace_functor(BOOST_FWD_REF(Args)... args) : args_(args...) {} template<class Allocator, class T> - BOOST_CONTAINER_FORCEINLINE void operator()(Allocator &a, T *ptr) + inline void operator()(Allocator &a, T *ptr) { emplace_functor::inplace_impl(a, ptr, index_tuple_t()); } template<class DestIt> - BOOST_CONTAINER_FORCEINLINE void operator()(DestIt dest) + inline void operator()(DestIt dest) { emplace_functor::inplace_impl(dest, index_tuple_t()); } private: template<class Allocator, class T, std::size_t ...IdxPack> - BOOST_CONTAINER_FORCEINLINE void inplace_impl(Allocator &a, T* ptr, const dtl::index_tuple<IdxPack...>&) + inline void inplace_impl(Allocator &a, T* ptr, const dtl::index_tuple<IdxPack...>&) { allocator_traits<Allocator>::construct (a, ptr, ::boost::forward<Args>(dtl::get<IdxPack>(args_))...); } template<class DestIt, std::size_t ...IdxPack> - BOOST_CONTAINER_FORCEINLINE void inplace_impl(DestIt dest, const dtl::index_tuple<IdxPack...>&) + inline void inplace_impl(DestIt dest, const dtl::index_tuple<IdxPack...>&) { typedef typename boost::container::iterator_traits<DestIt>::value_type value_type; value_type && tmp= value_type(::boost::forward<Args>(dtl::get<IdxPack>(args_))...); @@ -680,15 +679,15 @@ struct emplace_functor_type; BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ struct emplace_functor##N\ {\ - BOOST_CONTAINER_FORCEINLINE explicit emplace_functor##N( BOOST_MOVE_UREF##N )\ + inline explicit emplace_functor##N( BOOST_MOVE_UREF##N )\ BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N{}\ \ template<class Allocator, class T>\ - BOOST_CONTAINER_FORCEINLINE void operator()(Allocator &a, T *ptr)\ + inline void operator()(Allocator &a, T *ptr)\ { allocator_traits<Allocator>::construct(a, ptr BOOST_MOVE_I##N BOOST_MOVE_MFWD##N); }\ \ template<class DestIt>\ - BOOST_CONTAINER_FORCEINLINE void operator()(DestIt dest)\ + inline void operator()(DestIt dest)\ {\ typedef typename boost::container::iterator_traits<DestIt>::value_type value_type;\ BOOST_MOVE_IF(N, value_type tmp(BOOST_MOVE_MFWD##N), dtl::value_init<value_type> tmp) ;\ @@ -836,62 +835,62 @@ class iterator_from_iiterator typedef typename types_t::iterator_category iterator_category; typedef typename types_t::value_type value_type; - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator() + inline iterator_from_iiterator() : m_iit() {} - BOOST_CONTAINER_FORCEINLINE explicit iterator_from_iiterator(IIterator iit) BOOST_NOEXCEPT_OR_NOTHROW + inline explicit iterator_from_iiterator(IIterator iit) BOOST_NOEXCEPT_OR_NOTHROW : m_iit(iit) {} - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator(const iterator_from_iiterator& other) BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator(const iterator_from_iiterator& other) BOOST_NOEXCEPT_OR_NOTHROW : m_iit(other.get()) {} - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator(const nonconst_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator(const nonconst_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW : m_iit(other.get()) {} - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator& operator=(const iterator_from_iiterator& other) BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator& operator=(const iterator_from_iiterator& other) BOOST_NOEXCEPT_OR_NOTHROW { m_iit = other.get(); return *this; } - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW { ++this->m_iit; return *this; } - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW { iterator_from_iiterator result (*this); ++this->m_iit; return result; } - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW { //If the iterator_from_iiterator is not a bidirectional iterator, operator-- should not exist - BOOST_STATIC_ASSERT((is_bidirectional_iterator<iterator_from_iiterator>::value)); + BOOST_CONTAINER_STATIC_ASSERT((is_bidirectional_iterator<iterator_from_iiterator>::value)); --this->m_iit; return *this; } - BOOST_CONTAINER_FORCEINLINE iterator_from_iiterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW + inline iterator_from_iiterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW { iterator_from_iiterator result (*this); --this->m_iit; return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const iterator_from_iiterator& l, const iterator_from_iiterator& r) BOOST_NOEXCEPT_OR_NOTHROW + inline friend bool operator== (const iterator_from_iiterator& l, const iterator_from_iiterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_iit == r.m_iit; } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const iterator_from_iiterator& l, const iterator_from_iiterator& r) BOOST_NOEXCEPT_OR_NOTHROW + inline friend bool operator!= (const iterator_from_iiterator& l, const iterator_from_iiterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_iit != r.m_iit; } - BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW + inline reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW { return this->m_iit->get_data(); } - BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW + inline pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW { return ::boost::intrusive::pointer_traits<pointer>::pointer_to(this->operator*()); } - BOOST_CONTAINER_FORCEINLINE const IIterator &get() const BOOST_NOEXCEPT_OR_NOTHROW + inline const IIterator &get() const BOOST_NOEXCEPT_OR_NOTHROW { return this->m_iit; } private: diff --git a/contrib/restricted/boost/container/include/boost/container/detail/next_capacity.hpp b/contrib/restricted/boost/container/include/boost/container/detail/next_capacity.hpp index 9777b1473b..76bf0a0e7d 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/next_capacity.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/next_capacity.hpp @@ -26,8 +26,6 @@ // container/detail #include <boost/container/detail/min_max.hpp> -#include <boost/static_assert.hpp> - namespace boost { namespace container { namespace dtl { @@ -35,10 +33,10 @@ namespace dtl { template<unsigned Minimum, unsigned Numerator, unsigned Denominator> struct grow_factor_ratio { - BOOST_STATIC_ASSERT(Numerator > Denominator); - BOOST_STATIC_ASSERT(Numerator < 100); - BOOST_STATIC_ASSERT(Denominator < 100); - BOOST_STATIC_ASSERT(Denominator == 1 || (0 != Numerator % Denominator)); + BOOST_CONTAINER_STATIC_ASSERT(Numerator > Denominator); + BOOST_CONTAINER_STATIC_ASSERT(Numerator < 100); + BOOST_CONTAINER_STATIC_ASSERT(Denominator < 100); + BOOST_CONTAINER_STATIC_ASSERT(Denominator == 1 || (0 != Numerator % Denominator)); template<class SizeType> SizeType operator()(const SizeType cur_cap, const SizeType add_min_cap, const SizeType max_cap) const @@ -80,11 +78,11 @@ struct growth_factor_100 {}; template<class SizeType> -BOOST_CONTAINER_FORCEINLINE void clamp_by_stored_size_type(SizeType &, SizeType) +inline void clamp_by_stored_size_type(SizeType &, SizeType) {} template<class SizeType, class SomeStoredSizeType> -BOOST_CONTAINER_FORCEINLINE void clamp_by_stored_size_type(SizeType &s, SomeStoredSizeType) +inline void clamp_by_stored_size_type(SizeType &s, SomeStoredSizeType) { if (s >= SomeStoredSizeType(-1) ) s = SomeStoredSizeType(-1); diff --git a/contrib/restricted/boost/container/include/boost/container/detail/node_alloc_holder.hpp b/contrib/restricted/boost/container/include/boost/container/detail/node_alloc_holder.hpp index 8db384e4f6..1ebf21ad84 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/node_alloc_holder.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/node_alloc_holder.hpp @@ -118,16 +118,16 @@ struct base_node ::boost::container::construct_in_place(a, &this->get_real_data(), it); } - BOOST_CONTAINER_FORCEINLINE T &get_data() + inline T &get_data() { return *move_detail::force_ptr<T*>(this->m_storage.data); } - BOOST_CONTAINER_FORCEINLINE const T &get_data() const + inline const T &get_data() const { return *move_detail::force_ptr<const T*>(this->m_storage.data); } - BOOST_CONTAINER_FORCEINLINE internal_type &get_real_data() + inline internal_type &get_real_data() { return *move_detail::force_ptr<internal_type*>(this->m_storage.data); } - BOOST_CONTAINER_FORCEINLINE const internal_type &get_real_data() const + inline const internal_type &get_real_data() const { return *move_detail::force_ptr<const internal_type*>(this->m_storage.data); } #if defined(BOOST_CONTAINER_DISABLE_ALIASING_WARNING) @@ -136,7 +136,7 @@ struct base_node # endif template<class Alloc> - BOOST_CONTAINER_FORCEINLINE void destructor(Alloc &a) BOOST_NOEXCEPT + inline void destructor(Alloc &a) BOOST_NOEXCEPT { allocator_traits<Alloc>::destroy (a, &this->get_real_data()); @@ -144,7 +144,7 @@ struct base_node } template<class Pair> - BOOST_CONTAINER_FORCEINLINE + inline typename dtl::enable_if< dtl::is_pair<Pair>, void >::type do_assign(const Pair &p) { @@ -154,13 +154,13 @@ struct base_node } template<class V> - BOOST_CONTAINER_FORCEINLINE + inline typename dtl::disable_if< dtl::is_pair<V>, void >::type do_assign(const V &v) { this->get_real_data() = v; } template<class Pair> - BOOST_CONTAINER_FORCEINLINE + inline typename dtl::enable_if< dtl::is_pair<Pair>, void >::type do_move_assign(Pair &p) { @@ -170,7 +170,7 @@ struct base_node } template<class V> - BOOST_CONTAINER_FORCEINLINE + inline typename dtl::disable_if< dtl::is_pair<V>, void >::type do_move_assign(V &v) { this->get_real_data() = ::boost::move(v); } @@ -178,7 +178,7 @@ struct base_node private: base_node(); - BOOST_CONTAINER_FORCEINLINE ~base_node() + inline ~base_node() { } }; @@ -256,7 +256,7 @@ struct node_alloc_holder public: //Constructors for sequence containers - BOOST_CONTAINER_FORCEINLINE node_alloc_holder() + inline node_alloc_holder() {} explicit node_alloc_holder(const intrusive_bucket_traits& bt) @@ -339,30 +339,30 @@ struct node_alloc_holder , typename ICont::key_equal(eql)) { this->icont().swap(BOOST_MOVE_TO_LV(x).icont()); } - BOOST_CONTAINER_FORCEINLINE void copy_assign_alloc(const node_alloc_holder &x) + inline void copy_assign_alloc(const node_alloc_holder &x) { dtl::bool_<allocator_traits_type::propagate_on_container_copy_assignment::value> flag; dtl::assign_alloc( static_cast<NodeAlloc &>(*this) , static_cast<const NodeAlloc &>(x), flag); } - BOOST_CONTAINER_FORCEINLINE void move_assign_alloc( node_alloc_holder &x) + inline void move_assign_alloc( node_alloc_holder &x) { dtl::bool_<allocator_traits_type::propagate_on_container_move_assignment::value> flag; dtl::move_alloc( static_cast<NodeAlloc &>(*this) , static_cast<NodeAlloc &>(x), flag); } - BOOST_CONTAINER_FORCEINLINE ~node_alloc_holder() + inline ~node_alloc_holder() { this->clear(alloc_version()); } - BOOST_CONTAINER_FORCEINLINE size_type max_size() const + inline size_type max_size() const { return allocator_traits_type::max_size(this->node_alloc()); } - BOOST_CONTAINER_FORCEINLINE NodePtr allocate_one() + inline NodePtr allocate_one() { return AllocVersionTraits::allocate_one(this->node_alloc()); } - BOOST_CONTAINER_FORCEINLINE void deallocate_one(const NodePtr &p) + inline void deallocate_one(const NodePtr &p) { AllocVersionTraits::deallocate_one(this->node_alloc(), p); } #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) @@ -497,7 +497,7 @@ struct node_alloc_holder } } - BOOST_CONTAINER_FORCEINLINE void clear(version_1) + inline void clear(version_1) { this->icont().clear_and_dispose(Destroyer(this->node_alloc())); } void clear(version_2) @@ -505,7 +505,7 @@ struct node_alloc_holder typename NodeAlloc::multiallocation_chain chain; allocator_node_destroyer_and_chain_builder<NodeAlloc> builder(this->node_alloc(), chain); this->icont().clear_and_dispose(builder); - //BOOST_STATIC_ASSERT((::boost::has_move_emulation_enabled<typename NodeAlloc::multiallocation_chain>::value == true)); + //BOOST_CONTAINER_STATIC_ASSERT((::boost::has_move_emulation_enabled<typename NodeAlloc::multiallocation_chain>::value == true)); if(!chain.empty()) this->node_alloc().deallocate_individual(chain); } @@ -524,11 +524,11 @@ struct node_alloc_holder } template<class Key> - BOOST_CONTAINER_FORCEINLINE size_type erase_key(const Key& k, version_1) + inline size_type erase_key(const Key& k, version_1) { return this->icont().erase_and_dispose(k, Destroyer(this->node_alloc())); } template<class Key> - BOOST_CONTAINER_FORCEINLINE size_type erase_key(const Key& k, version_2) + inline size_type erase_key(const Key& k, version_2) { allocator_multialloc_chain_node_deallocator<NodeAlloc> chain_holder(this->node_alloc()); return this->icont().erase_and_dispose(k, chain_holder.get_chain_builder()); @@ -537,11 +537,11 @@ struct node_alloc_holder protected: struct cloner { - BOOST_CONTAINER_FORCEINLINE explicit cloner(node_alloc_holder &holder) + inline explicit cloner(node_alloc_holder &holder) : m_holder(holder) {} - BOOST_CONTAINER_FORCEINLINE NodePtr operator()(const Node &other) const + inline NodePtr operator()(const Node &other) const { return m_holder.create_node(other.get_real_data()); } node_alloc_holder &m_holder; @@ -549,11 +549,11 @@ struct node_alloc_holder struct move_cloner { - BOOST_CONTAINER_FORCEINLINE move_cloner(node_alloc_holder &holder) + inline move_cloner(node_alloc_holder &holder) : m_holder(holder) {} - BOOST_CONTAINER_FORCEINLINE NodePtr operator()(Node &other) + inline NodePtr operator()(Node &other) { //Use get_real_data() instead of get_real_data to allow moving const key in [multi]map return m_holder.create_node(::boost::move(other.get_real_data())); } @@ -561,20 +561,20 @@ struct node_alloc_holder node_alloc_holder &m_holder; }; - BOOST_CONTAINER_FORCEINLINE ICont &non_const_icont() const + inline ICont &non_const_icont() const { return const_cast<ICont&>(this->m_icont); } - BOOST_CONTAINER_FORCEINLINE NodeAlloc &node_alloc() + inline NodeAlloc &node_alloc() { return static_cast<NodeAlloc &>(*this); } - BOOST_CONTAINER_FORCEINLINE const NodeAlloc &node_alloc() const + inline const NodeAlloc &node_alloc() const { return static_cast<const NodeAlloc &>(*this); } public: - BOOST_CONTAINER_FORCEINLINE ICont &icont() + inline ICont &icont() { return this->m_icont; } - BOOST_CONTAINER_FORCEINLINE const ICont &icont() const + inline const ICont &icont() const { return this->m_icont; } protected: @@ -587,10 +587,10 @@ struct key_of_node : KeyOfValue { typedef typename KeyOfValue::type type; - BOOST_CONTAINER_FORCEINLINE key_of_node() + inline key_of_node() {} - BOOST_CONTAINER_FORCEINLINE const type& operator()(const Node& x) const + inline const type& operator()(const Node& x) const { return this->KeyOfValue::operator()(x.get_data()); } }; diff --git a/contrib/restricted/boost/container/include/boost/container/detail/pair.hpp b/contrib/restricted/boost/container/include/boost/container/detail/pair.hpp index 56b2fb8311..58e560817a 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/pair.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/pair.hpp @@ -25,7 +25,6 @@ #include <boost/container/container_fwd.hpp> #include <boost/container/detail/workaround.hpp> -#include <boost/static_assert.hpp> #include <boost/container/detail/mpl.hpp> #include <boost/container/detail/type_traits.hpp> #include <boost/container/detail/mpl.hpp> @@ -166,35 +165,35 @@ struct pair pair() : first(), second() { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } //pair copy assignment pair(const pair& x) : first(x.first), second(x.second) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } //pair move constructor pair(BOOST_RV_REF(pair) p) : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } template <class D, class S> pair(const pair<D, S> &p) : first(p.first), second(p.second) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } template <class D, class S> pair(BOOST_RV_REF_BEG pair<D, S> BOOST_RV_REF_END p) : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } //pair from two values @@ -202,7 +201,7 @@ struct pair : first(t1) , second(t2) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } template<class U, class V> @@ -210,34 +209,34 @@ struct pair : first(::boost::forward<U>(u)) , second(::boost::forward<V>(v)) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } //And now compatibility with std::pair pair(const std::pair<T1, T2>& x) : first(x.first), second(x.second) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } template <class D, class S> pair(const std::pair<D, S>& p) : first(p.first), second(p.second) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } pair(BOOST_RV_REF_BEG std::pair<T1, T2> BOOST_RV_REF_END p) : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } template <class D, class S> pair(BOOST_RV_REF_BEG std::pair<D, S> BOOST_RV_REF_END p) : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) @@ -245,7 +244,7 @@ struct pair pair(try_emplace_t, BOOST_FWD_REF(KeyType) k, Args && ...args) : first(boost::forward<KeyType>(k)), second(::boost::forward<Args>(args)...)\ { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } #else @@ -255,7 +254,7 @@ struct pair pair( try_emplace_t, BOOST_FWD_REF(KeyType) k BOOST_MOVE_I##N BOOST_MOVE_UREF##N )\ : first(boost::forward<KeyType>(k)), second(BOOST_MOVE_FWD##N)\ {\ - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ }\ // BOOST_MOVE_ITERATE_0TO9(BOOST_PAIR_TRY_EMPLACE_CONSTRUCT_CODE) @@ -277,7 +276,7 @@ struct pair )\ : first(BOOST_MOVE_TMPL_GET##N), second(BOOST_MOVE_TMPL_GETQ##M)\ { (void)p; (void)q;\ - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ }\ // BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_PAIR_PIECEWISE_CONSTRUCT_BOOST_TUPLE_CODE) @@ -299,7 +298,7 @@ struct pair pair(piecewise_construct_t, Tuple<Args1...> t1, Tuple<Args2...> t2) : pair(t1, t2, typename build_number_seq<sizeof...(Args1)>::type(), typename build_number_seq<sizeof...(Args2)>::type()) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } # else //piecewise construction from variadic tuple (suboptimal, without delegating constructors) @@ -319,7 +318,7 @@ struct pair : first (build_from_args<first_type> (::boost::move(t1))) , second (build_from_args<second_type>(::boost::move(t2))) { - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>))); } # endif //BOOST_NO_CXX11_VARIADIC_TEMPLATES #elif defined(BOOST_MSVC) && (_CPPLIB_VER == 520) @@ -332,7 +331,7 @@ struct pair , StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::std::tr1::_Nil)> q)\ : first(BOOST_MOVE_GET_IDX##N), second(BOOST_MOVE_GET_IDXQ##M)\ { (void)p; (void)q;\ - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ }\ // BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE) @@ -353,7 +352,7 @@ struct pair , StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(BOOST_MOVE_ADD(_VARIADIC_MAX, 3),M),::std::_Nil) > q)\ : first(BOOST_MOVE_GET_IDX##N), second(BOOST_MOVE_GET_IDXQ##M)\ { (void)p; (void)q;\ - BOOST_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ + BOOST_CONTAINER_STATIC_ASSERT((sizeof(std::pair<T1, T2>) == sizeof(pair<T1, T2>)));\ }\ // BOOST_MOVE_ITER2D_0TOMAX(BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_MAX_IT, BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_CODE) diff --git a/contrib/restricted/boost/container/include/boost/container/detail/transform_iterator.hpp b/contrib/restricted/boost/container/include/boost/container/detail/transform_iterator.hpp index 5c7bbf2dd0..35b64b85fe 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/transform_iterator.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/transform_iterator.hpp @@ -33,13 +33,13 @@ namespace container { template <class PseudoReference> struct operator_arrow_proxy { - BOOST_CONTAINER_FORCEINLINE operator_arrow_proxy(const PseudoReference &px) + inline operator_arrow_proxy(const PseudoReference &px) : m_value(px) {} typedef PseudoReference element_type; - BOOST_CONTAINER_FORCEINLINE PseudoReference* operator->() const { return &m_value; } + inline PseudoReference* operator->() const { return &m_value; } mutable PseudoReference m_value; }; @@ -47,13 +47,13 @@ struct operator_arrow_proxy template <class T> struct operator_arrow_proxy<T&> { - BOOST_CONTAINER_FORCEINLINE operator_arrow_proxy(T &px) + inline operator_arrow_proxy(T &px) : m_value(px) {} typedef T element_type; - BOOST_CONTAINER_FORCEINLINE T* operator->() const { return const_cast<T*>(&m_value); } + inline T* operator->() const { return const_cast<T*>(&m_value); } T &m_value; }; @@ -69,29 +69,29 @@ class transform_iterator , typename UnaryFunction::result_type> { public: - BOOST_CONTAINER_FORCEINLINE explicit transform_iterator(const Iterator &it, const UnaryFunction &f = UnaryFunction()) + inline explicit transform_iterator(const Iterator &it, const UnaryFunction &f = UnaryFunction()) : UnaryFunction(f), m_it(it) {} - BOOST_CONTAINER_FORCEINLINE explicit transform_iterator() + inline explicit transform_iterator() : UnaryFunction(), m_it() {} //Constructors - BOOST_CONTAINER_FORCEINLINE transform_iterator& operator++() + inline transform_iterator& operator++() { increment(); return *this; } - BOOST_CONTAINER_FORCEINLINE transform_iterator operator++(int) + inline transform_iterator operator++(int) { transform_iterator result (*this); increment(); return result; } - BOOST_CONTAINER_FORCEINLINE friend bool operator== (const transform_iterator& i, const transform_iterator& i2) + inline friend bool operator== (const transform_iterator& i, const transform_iterator& i2) { return i.equal(i2); } - BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const transform_iterator& i, const transform_iterator& i2) + inline friend bool operator!= (const transform_iterator& i, const transform_iterator& i2) { return !(i == i2); } /* @@ -104,69 +104,69 @@ class transform_iterator friend bool operator>= (const transform_iterator& i, const transform_iterator& i2) { return !(i < i2); } */ - BOOST_CONTAINER_FORCEINLINE friend typename Iterator::difference_type operator- (const transform_iterator& i, const transform_iterator& i2) + inline friend typename Iterator::difference_type operator- (const transform_iterator& i, const transform_iterator& i2) { return i2.distance_to(i); } //Arithmetic - BOOST_CONTAINER_FORCEINLINE transform_iterator& operator+=(typename Iterator::difference_type off) + inline transform_iterator& operator+=(typename Iterator::difference_type off) { this->advance(off); return *this; } - BOOST_CONTAINER_FORCEINLINE transform_iterator operator+(typename Iterator::difference_type off) const + inline transform_iterator operator+(typename Iterator::difference_type off) const { transform_iterator other(*this); other.advance(off); return other; } - BOOST_CONTAINER_FORCEINLINE friend transform_iterator operator+(typename Iterator::difference_type off, const transform_iterator& right) + inline friend transform_iterator operator+(typename Iterator::difference_type off, const transform_iterator& right) { return right + off; } - BOOST_CONTAINER_FORCEINLINE transform_iterator& operator-=(typename Iterator::difference_type off) + inline transform_iterator& operator-=(typename Iterator::difference_type off) { this->advance(-off); return *this; } - BOOST_CONTAINER_FORCEINLINE transform_iterator operator-(typename Iterator::difference_type off) const + inline transform_iterator operator-(typename Iterator::difference_type off) const { return *this + (-off); } - BOOST_CONTAINER_FORCEINLINE typename UnaryFunction::result_type operator*() const + inline typename UnaryFunction::result_type operator*() const { return dereference(); } - BOOST_CONTAINER_FORCEINLINE operator_arrow_proxy<typename UnaryFunction::result_type> + inline operator_arrow_proxy<typename UnaryFunction::result_type> operator->() const { return operator_arrow_proxy<typename UnaryFunction::result_type>(dereference()); } - BOOST_CONTAINER_FORCEINLINE Iterator & base() + inline Iterator & base() { return m_it; } - BOOST_CONTAINER_FORCEINLINE const Iterator & base() const + inline const Iterator & base() const { return m_it; } private: Iterator m_it; - BOOST_CONTAINER_FORCEINLINE void increment() + inline void increment() { ++m_it; } - BOOST_CONTAINER_FORCEINLINE void decrement() + inline void decrement() { --m_it; } - BOOST_CONTAINER_FORCEINLINE bool equal(const transform_iterator &other) const + inline bool equal(const transform_iterator &other) const { return m_it == other.m_it; } - BOOST_CONTAINER_FORCEINLINE bool less(const transform_iterator &other) const + inline bool less(const transform_iterator &other) const { return other.m_it < m_it; } - BOOST_CONTAINER_FORCEINLINE typename UnaryFunction::result_type dereference() const + inline typename UnaryFunction::result_type dereference() const { return UnaryFunction::operator()(*m_it); } - BOOST_CONTAINER_FORCEINLINE void advance(typename Iterator::difference_type n) + inline void advance(typename Iterator::difference_type n) { boost::container::iterator_advance(m_it, n); } - BOOST_CONTAINER_FORCEINLINE typename Iterator::difference_type distance_to(const transform_iterator &other)const + inline typename Iterator::difference_type distance_to(const transform_iterator &other)const { return boost::container::iterator_distance(other.m_it, m_it); } }; template <class Iterator, class UnaryFunc> -BOOST_CONTAINER_FORCEINLINE transform_iterator<Iterator, UnaryFunc> +inline transform_iterator<Iterator, UnaryFunc> make_transform_iterator(Iterator it, UnaryFunc fun) { return transform_iterator<Iterator, UnaryFunc>(it, fun); diff --git a/contrib/restricted/boost/container/include/boost/container/detail/tree.hpp b/contrib/restricted/boost/container/include/boost/container/detail/tree.hpp index 843ad3cb78..f4a27b200e 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/tree.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/tree.hpp @@ -131,11 +131,11 @@ class insert_equal_end_hint_functor Icont &icont_; public: - BOOST_CONTAINER_FORCEINLINE insert_equal_end_hint_functor(Icont &icont) + inline insert_equal_end_hint_functor(Icont &icont) : icont_(icont) {} - BOOST_CONTAINER_FORCEINLINE void operator()(Node &n) + inline void operator()(Node &n) { this->icont_.insert_equal(this->icont_.cend(), n); } }; @@ -145,11 +145,11 @@ class push_back_functor Icont &icont_; public: - BOOST_CONTAINER_FORCEINLINE push_back_functor(Icont &icont) + inline push_back_functor(Icont &icont) : icont_(icont) {} - BOOST_CONTAINER_FORCEINLINE void operator()(Node &n) + inline void operator()(Node &n) { this->icont_.push_back(n); } }; @@ -267,14 +267,14 @@ template< boost::container::tree_type_enum tree_type_value struct intrusive_tree_proxy { template<class Icont> - BOOST_CONTAINER_FORCEINLINE static void rebalance(Icont &) {} + inline static void rebalance(Icont &) {} }; template<boost::container::tree_type_enum tree_type_value> struct intrusive_tree_proxy<tree_type_value, true> { template<class Icont> - BOOST_CONTAINER_FORCEINLINE static void rebalance(Icont &c) + inline static void rebalance(Icont &c) { c.rebalance(); } }; @@ -298,10 +298,10 @@ class RecyclingCloner : m_holder(holder), m_icont(itree) {} - BOOST_CONTAINER_FORCEINLINE static void do_assign(node_ptr_type p, node_t &other, bool_<true>) + inline static void do_assign(node_ptr_type p, node_t &other, bool_<true>) { p->do_move_assign(other.get_real_data()); } - BOOST_CONTAINER_FORCEINLINE static void do_assign(node_ptr_type p, const node_t &other, bool_<false>) + inline static void do_assign(node_ptr_type p, const node_t &other, bool_<false>) { p->do_assign(other.get_real_data()); } node_ptr_type operator() @@ -461,19 +461,19 @@ class tree public: - BOOST_CONTAINER_FORCEINLINE tree() + inline tree() : AllocHolder() {} - BOOST_CONTAINER_FORCEINLINE explicit tree(const key_compare& comp) + inline explicit tree(const key_compare& comp) : AllocHolder(ValComp(comp)) {} - BOOST_CONTAINER_FORCEINLINE explicit tree(const key_compare& comp, const allocator_type& a) + inline explicit tree(const key_compare& comp, const allocator_type& a) : AllocHolder(ValComp(comp), a) {} - BOOST_CONTAINER_FORCEINLINE explicit tree(const allocator_type& a) + inline explicit tree(const allocator_type& a) : AllocHolder(a) {} @@ -616,19 +616,19 @@ class tree public: - BOOST_CONTAINER_FORCEINLINE tree(const tree& x) + inline tree(const tree& x) : AllocHolder(x, x.value_comp()) { this->icont().clone_from (x.icont(), typename AllocHolder::cloner(*this), Destroyer(this->node_alloc())); } - BOOST_CONTAINER_FORCEINLINE tree(BOOST_RV_REF(tree) x) + inline tree(BOOST_RV_REF(tree) x) BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value) : AllocHolder(BOOST_MOVE_BASE(AllocHolder, x), x.value_comp()) {} - BOOST_CONTAINER_FORCEINLINE tree(const tree& x, const allocator_type &a) + inline tree(const tree& x, const allocator_type &a) : AllocHolder(x.value_comp(), a) { this->icont().clone_from @@ -649,7 +649,7 @@ class tree //AllocHolder clears in case of exception } - BOOST_CONTAINER_FORCEINLINE ~tree() + inline ~tree() {} //AllocHolder clears the tree tree& operator=(BOOST_COPY_ASSIGN_REF(tree) x) @@ -729,56 +729,56 @@ class tree public: // accessors: - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline value_compare value_comp() const { return value_compare(this->key_comp()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline key_compare key_comp() const { return this->icont().key_comp(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline allocator_type get_allocator() const { return allocator_type(this->node_alloc()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const stored_allocator_type &get_stored_allocator() const { return this->node_alloc(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline stored_allocator_type &get_stored_allocator() { return this->node_alloc(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator begin() { return iterator(this->icont().begin()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator begin() const { return this->cbegin(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator end() { return iterator(this->icont().end()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator end() const { return this->cend(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rbegin() { return reverse_iterator(end()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rbegin() const { return this->crbegin(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rend() { return reverse_iterator(begin()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rend() const { return this->crend(); } @@ -787,7 +787,7 @@ class tree //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cbegin() const { return const_iterator(this->non_const_icont().begin()); } @@ -796,7 +796,7 @@ class tree //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cend() const { return const_iterator(this->non_const_icont().end()); } @@ -806,7 +806,7 @@ class tree //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crbegin() const { return const_reverse_iterator(cend()); } @@ -816,23 +816,23 @@ class tree //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crend() const { return const_reverse_iterator(cbegin()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline bool empty() const { return !this->size(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type size() const { return this->icont().size(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type max_size() const { return AllocHolder::max_size(); } - BOOST_CONTAINER_FORCEINLINE void swap(ThisType& x) + inline void swap(ThisType& x) BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value && boost::container::dtl::is_nothrow_swappable<Compare>::value ) { AllocHolder::swap(x); } @@ -962,11 +962,11 @@ class tree #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) template <class... Args> - BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> emplace_unique(BOOST_FWD_REF(Args)... args) + inline std::pair<iterator, bool> emplace_unique(BOOST_FWD_REF(Args)... args) { return this->emplace_unique_node(AllocHolder::create_node(boost::forward<Args>(args)...)); } template <class... Args> - BOOST_CONTAINER_FORCEINLINE iterator emplace_hint_unique(const_iterator hint, BOOST_FWD_REF(Args)... args) + inline iterator emplace_hint_unique(const_iterator hint, BOOST_FWD_REF(Args)... args) { return this->emplace_hint_unique_node(hint, AllocHolder::create_node(boost::forward<Args>(args)...)); } template <class... Args> @@ -991,7 +991,7 @@ class tree } template <class KeyType, class... Args> - BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace + inline std::pair<iterator, bool> try_emplace (const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(Args)... args) { insert_commit_data data; @@ -1039,7 +1039,7 @@ class tree }\ \ template <class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\ - BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool>\ + inline std::pair<iterator, bool>\ try_emplace(const_iterator hint, BOOST_FWD_REF(KeyType) key BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ {\ insert_commit_data data;\ @@ -1122,7 +1122,7 @@ class tree return iterator(this->icont().erase_and_dispose(position.get(), Destroyer(this->node_alloc()))); } - BOOST_CONTAINER_FORCEINLINE size_type erase(const key_type& k) + inline size_type erase(const key_type& k) { return AllocHolder::erase_key(k, alloc_version()); } size_type erase_unique(const key_type& k) @@ -1209,105 +1209,105 @@ class tree } template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge_unique(tree<T, KeyOfValue, C2, Allocator, Options>& source) + inline void merge_unique(tree<T, KeyOfValue, C2, Allocator, Options>& source) { return this->icont().merge_unique(source.icont()); } template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge_equal(tree<T, KeyOfValue, C2, Allocator, Options>& source) + inline void merge_equal(tree<T, KeyOfValue, C2, Allocator, Options>& source) { return this->icont().merge_equal(source.icont()); } - BOOST_CONTAINER_FORCEINLINE void clear() + inline void clear() { AllocHolder::clear(alloc_version()); } // search operations. Const and non-const overloads even if no iterator is returned // so splay implementations can to their rebalancing when searching in non-const versions - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator find(const key_type& k) { return iterator(this->icont().find(k)); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator find(const key_type& k) const { return const_iterator(this->non_const_icont().find(k)); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, iterator>::type find(const K& k) { return iterator(this->icont().find(k, KeyNodeCompare())); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type find(const K& k) const { return const_iterator(this->non_const_icont().find(k, KeyNodeCompare())); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type count(const key_type& k) const { return size_type(this->icont().count(k)); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, size_type>::type count(const K& k) const { return size_type(this->icont().count(k, KeyNodeCompare())); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline bool contains(const key_type& x) const { return this->find(x) != this->cend(); } template<typename K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, bool>::type contains(const K& x) const { return this->find(x) != this->cend(); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator lower_bound(const key_type& k) { return iterator(this->icont().lower_bound(k)); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator lower_bound(const key_type& k) const { return const_iterator(this->non_const_icont().lower_bound(k)); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, iterator>::type lower_bound(const K& k) { return iterator(this->icont().lower_bound(k, KeyNodeCompare())); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type lower_bound(const K& k) const { return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare())); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator upper_bound(const key_type& k) { return iterator(this->icont().upper_bound(k)); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator upper_bound(const key_type& k) const { return const_iterator(this->non_const_icont().upper_bound(k)); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, iterator>::type upper_bound(const K& k) { return iterator(this->icont().upper_bound(k, KeyNodeCompare())); } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type upper_bound(const K& k) const { return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare())); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline std::pair<iterator,iterator> equal_range(const key_type& k) { std::pair<iiterator, iiterator> ret = this->icont().equal_range(k); return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second)); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const { std::pair<iiterator, iiterator> ret = @@ -1317,7 +1317,7 @@ class tree } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, std::pair<iterator,iterator> >::type equal_range(const K& k) { @@ -1327,7 +1327,7 @@ class tree } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, std::pair<const_iterator, const_iterator> >::type equal_range(const K& k) const { @@ -1337,7 +1337,7 @@ class tree (const_iterator(ret.first), const_iterator(ret.second)); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline std::pair<iterator,iterator> lower_bound_range(const key_type& k) { std::pair<iiterator, iiterator> ret = @@ -1345,7 +1345,7 @@ class tree return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second)); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline std::pair<const_iterator, const_iterator> lower_bound_range(const key_type& k) const { std::pair<iiterator, iiterator> ret = @@ -1355,7 +1355,7 @@ class tree } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, std::pair<iterator,iterator> >::type lower_bound_range(const K& k) { @@ -1365,7 +1365,7 @@ class tree } template <class K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline typename dtl::enable_if_transparent<key_compare, K, std::pair<const_iterator, const_iterator> >::type lower_bound_range(const K& k) const { @@ -1375,34 +1375,34 @@ class tree (const_iterator(ret.first), const_iterator(ret.second)); } - BOOST_CONTAINER_FORCEINLINE void rebalance() + inline void rebalance() { intrusive_tree_proxy_t::rebalance(this->icont()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator==(const tree& x, const tree& y) { return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator<(const tree& x, const tree& y) { return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator!=(const tree& x, const tree& y) { return !(x == y); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>(const tree& x, const tree& y) { return y < x; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator<=(const tree& x, const tree& y) { return !(y < x); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>=(const tree& x, const tree& y) { return !(x < y); } - BOOST_CONTAINER_FORCEINLINE friend void swap(tree& x, tree& y) + inline friend void swap(tree& x, tree& y) BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value && boost::container::dtl::is_nothrow_swappable<Compare>::value ) { x.swap(y); } diff --git a/contrib/restricted/boost/container/include/boost/container/detail/value_init.hpp b/contrib/restricted/boost/container/include/boost/container/detail/value_init.hpp index 35b0aa11d3..08a1f84121 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/value_init.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/value_init.hpp @@ -31,13 +31,13 @@ namespace dtl { template<class T> struct value_init { - value_init() + BOOST_CONTAINER_FORCEINLINE value_init() : m_t() {} - operator T &() { return m_t; } + BOOST_CONTAINER_FORCEINLINE operator T &() { return m_t; } - T &get() { return m_t; } + BOOST_CONTAINER_FORCEINLINE T &get() { return m_t; } T m_t; }; diff --git a/contrib/restricted/boost/container/include/boost/container/detail/workaround.hpp b/contrib/restricted/boost/container/include/boost/container/detail/workaround.hpp index 64daa0c1d9..23342bb0d1 100644 --- a/contrib/restricted/boost/container/include/boost/container/detail/workaround.hpp +++ b/contrib/restricted/boost/container/include/boost/container/detail/workaround.hpp @@ -101,8 +101,11 @@ #elif defined(BOOST_MSVC) && (_MSC_VER <= 1900 || defined(_DEBUG)) //"__forceinline" and MSVC seems to have some bugs in old versions and in debug mode #define BOOST_CONTAINER_FORCEINLINE inline -#elif defined(BOOST_GCC) && ((__GNUC__ <= 5) || defined(__MINGW32__)) +#elif defined(BOOST_CLANG) || (defined(BOOST_GCC) && ((__GNUC__ <= 5) || defined(__MINGW32__))) //Older GCCs and MinGw have problems with forceinline + //Clang can have code bloat issues with forceinline, see + //https://lists.boost.org/boost-users/2023/04/91445.php and + //https://github.com/llvm/llvm-project/issues/62202 #define BOOST_CONTAINER_FORCEINLINE inline #else #define BOOST_CONTAINER_FORCEINLINE BOOST_FORCEINLINE @@ -187,4 +190,44 @@ BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore(T1 const&) # define BOOST_CONTAINER_CATCH_END } #endif +#ifndef BOOST_NO_CXX11_STATIC_ASSERT +# ifndef BOOST_NO_CXX11_VARIADIC_MACROS +# define BOOST_CONTAINER_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__) +# else +# define BOOST_CONTAINER_STATIC_ASSERT( B ) static_assert(B, #B) +# endif +#else +namespace boost { + namespace container { + namespace dtl { + + template<bool B> + struct STATIC_ASSERTION_FAILURE; + + template<> + struct STATIC_ASSERTION_FAILURE<true> {}; + + template<unsigned> struct static_assert_test {}; + + } + } +} + +#define BOOST_CONTAINER_STATIC_ASSERT(B) \ + typedef ::boost::container::dtl::static_assert_test<\ + (unsigned)sizeof(::boost::container::dtl::STATIC_ASSERTION_FAILURE<bool(B)>)>\ + BOOST_JOIN(boost_container_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED + +#endif + +#ifndef BOOST_NO_CXX11_STATIC_ASSERT +# ifndef BOOST_NO_CXX11_VARIADIC_MACROS +# define BOOST_CONTAINER_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__) +# else +# define BOOST_CONTAINER_STATIC_ASSERT_MSG( B, Msg ) static_assert( B, Msg ) +# endif +#else +# define BOOST_CONTAINER_STATIC_ASSERT_MSG( B, Msg ) BOOST_CONTAINER_STATIC_ASSERT( B ) +#endif + #endif //#ifndef BOOST_CONTAINER_DETAIL_WORKAROUND_HPP diff --git a/contrib/restricted/boost/container/include/boost/container/new_allocator.hpp b/contrib/restricted/boost/container/include/boost/container/new_allocator.hpp index 82c42a957c..b01b9ba8f2 100644 --- a/contrib/restricted/boost/container/include/boost/container/new_allocator.hpp +++ b/contrib/restricted/boost/container/include/boost/container/new_allocator.hpp @@ -129,25 +129,23 @@ class new_allocator //!Default constructor //!Never throws - new_allocator() BOOST_NOEXCEPT_OR_NOTHROW + inline new_allocator() BOOST_NOEXCEPT_OR_NOTHROW {} //!Constructor from other new_allocator. //!Never throws - new_allocator(const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW + inline new_allocator(const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW {} //!Copy assignment operator from other new_allocator. //!Never throws - new_allocator& operator=(const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW - { - return *this; - } + inline new_allocator& operator=(const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW + { return *this; } //!Constructor from related new_allocator. //!Never throws template<class T2> - new_allocator(const new_allocator<T2> &) BOOST_NOEXCEPT_OR_NOTHROW + inline new_allocator(const new_allocator<T2> &) BOOST_NOEXCEPT_OR_NOTHROW {} //!Allocates memory for an array of count elements. @@ -174,22 +172,22 @@ class new_allocator //!Returns the maximum number of elements that could be allocated. //!Never throws - size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW + inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW { return std::size_t(-1)/(2*sizeof(T)); } //!Swaps two allocators, does nothing //!because this new_allocator is stateless - friend void swap(new_allocator &, new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW + inline friend void swap(new_allocator &, new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW {} //!An new_allocator always compares to true, as memory allocated with one //!instance can be deallocated by another instance - friend bool operator==(const new_allocator &, const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW + inline friend bool operator==(const new_allocator &, const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW { return true; } //!An new_allocator always compares to false, as memory allocated with one //!instance can be deallocated by another instance - friend bool operator!=(const new_allocator &, const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW + inline friend bool operator!=(const new_allocator &, const new_allocator &) BOOST_NOEXCEPT_OR_NOTHROW { return false; } }; diff --git a/contrib/restricted/boost/container/include/boost/container/node_handle.hpp b/contrib/restricted/boost/container/include/boost/container/node_handle.hpp index 323b79c348..41bea974c3 100644 --- a/contrib/restricted/boost/container/include/boost/container/node_handle.hpp +++ b/contrib/restricted/boost/container/include/boost/container/node_handle.hpp @@ -21,7 +21,6 @@ #include <boost/container/detail/config_begin.hpp> #include <boost/container/detail/workaround.hpp> -#include <boost/static_assert.hpp> #include <boost/container/detail/placement_new.hpp> #include <boost/move/detail/to_raw_pointer.hpp> #include <boost/container/allocator_traits.hpp> @@ -33,6 +32,12 @@ #include <boost/container/detail/mpl.hpp> #include <boost/assert.hpp> +//GCC 12 is confused about maybe uninitialized allocators +#if defined(BOOST_GCC) && (BOOST_GCC >= 120000) && (BOOST_GCC < 130000) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif + //!\file @@ -60,11 +65,11 @@ class node_handle_friend public: template<class NH> - BOOST_CONTAINER_FORCEINLINE static void destroy_alloc(NH &nh) BOOST_NOEXCEPT + inline static void destroy_alloc(NH &nh) BOOST_NOEXCEPT { nh.destroy_alloc(); } template<class NH> - BOOST_CONTAINER_FORCEINLINE static typename NH::node_pointer &get_node_pointer(NH &nh) BOOST_NOEXCEPT + inline static typename NH::node_pointer &get_node_pointer(NH &nh) BOOST_NOEXCEPT { return nh.get_node_pointer(); } }; @@ -252,7 +257,7 @@ class node_handle //! <b>Throws</b>: Nothing. value_type& value() const BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT((dtl::is_same<KeyMapped, void>::value)); + BOOST_CONTAINER_STATIC_ASSERT((dtl::is_same<KeyMapped, void>::value)); BOOST_ASSERT(!empty()); return m_ptr->get_data(); } @@ -267,7 +272,7 @@ class node_handle //! <b>Requires</b>: Modifying the key through the returned reference is permitted. key_type& key() const BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT((!dtl::is_same<KeyMapped, void>::value)); + BOOST_CONTAINER_STATIC_ASSERT((!dtl::is_same<KeyMapped, void>::value)); BOOST_ASSERT(!empty()); return const_cast<key_type &>(KeyMapped().key_of_value(m_ptr->get_data())); } @@ -280,7 +285,7 @@ class node_handle //! <b>Throws</b>: Nothing. mapped_type& mapped() const BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT((!dtl::is_same<KeyMapped, void>::value)); + BOOST_CONTAINER_STATIC_ASSERT((!dtl::is_same<KeyMapped, void>::value)); BOOST_ASSERT(!empty()); return KeyMapped().mapped_of_value(m_ptr->get_data()); } @@ -299,10 +304,10 @@ class node_handle //! <b>Returns</b>: m_ptr != nullptr. //! #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED - BOOST_CONTAINER_FORCEINLINE explicit operator bool + inline explicit operator bool #else private: struct bool_conversion {int for_bool; int for_arg(); }; typedef int bool_conversion::* explicit_bool_arg; - public: BOOST_CONTAINER_FORCEINLINE operator explicit_bool_arg + public: inline operator explicit_bool_arg #endif ()const BOOST_NOEXCEPT { return m_ptr ? &bool_conversion::for_bool : explicit_bool_arg(0); } @@ -343,6 +348,7 @@ class node_handle nh.move_construct_alloc(this->node_alloc()); this->destroy_alloc(); } + ::boost::adl_move_swap(m_ptr, nh.m_ptr); } @@ -440,6 +446,10 @@ struct insert_return_type_base } //namespace container { } //namespace boost { +#if defined(BOOST_GCC) && (BOOST_GCC >= 120000) && (BOOST_GCC < 130000) +#pragma GCC diagnostic pop +#endif + #include <boost/container/detail/config_end.hpp> #endif //BOOST_CONTAINER_NODE_HANDLE_HPP diff --git a/contrib/restricted/boost/container/include/boost/container/options.hpp b/contrib/restricted/boost/container/include/boost/container/options.hpp index c58ff82a22..48edd38197 100644 --- a/contrib/restricted/boost/container/include/boost/container/options.hpp +++ b/contrib/restricted/boost/container/include/boost/container/options.hpp @@ -23,8 +23,8 @@ #include <boost/container/detail/config_begin.hpp> #include <boost/container/container_fwd.hpp> +#include <boost/container/detail/workaround.hpp> #include <boost/intrusive/pack_options.hpp> -#include <boost/static_assert.hpp> namespace boost { namespace container { @@ -608,7 +608,7 @@ struct deque_opt { static const std::size_t block_bytes = BlockBytes; static const std::size_t block_size = BlockSize; - BOOST_STATIC_ASSERT_MSG(!(block_bytes && block_size), "block_bytes and block_size can't be specified at the same time"); + BOOST_CONTAINER_STATIC_ASSERT_MSG(!(block_bytes && block_size), "block_bytes and block_size can't be specified at the same time"); }; typedef deque_opt<0u, 0u> deque_null_opt; diff --git a/contrib/restricted/boost/container/include/boost/container/scoped_allocator.hpp b/contrib/restricted/boost/container/include/boost/container/scoped_allocator.hpp index 3e9c6847a2..a979ad658a 100644 --- a/contrib/restricted/boost/container/include/boost/container/scoped_allocator.hpp +++ b/contrib/restricted/boost/container/include/boost/container/scoped_allocator.hpp @@ -77,10 +77,10 @@ struct outermost_allocator_imp { typedef MaybeScopedAlloc type; - BOOST_CONTAINER_FORCEINLINE static type &get(MaybeScopedAlloc &a) + inline static type &get(MaybeScopedAlloc &a) { return a; } - BOOST_CONTAINER_FORCEINLINE static const type &get(const MaybeScopedAlloc &a) + inline static const type &get(const MaybeScopedAlloc &a) { return a; } }; @@ -90,10 +90,10 @@ struct outermost_allocator_imp<MaybeScopedAlloc, true> typedef typename MaybeScopedAlloc::outer_allocator_type outer_type; typedef typename outermost_allocator_type_impl<outer_type>::type type; - BOOST_CONTAINER_FORCEINLINE static type &get(MaybeScopedAlloc &a) + inline static type &get(MaybeScopedAlloc &a) { return outermost_allocator_imp<outer_type>::get(a.outer_allocator()); } - BOOST_CONTAINER_FORCEINLINE static const type &get(const MaybeScopedAlloc &a) + inline static const type &get(const MaybeScopedAlloc &a) { return outermost_allocator_imp<outer_type>::get(a.outer_allocator()); } }; @@ -110,12 +110,12 @@ struct outermost_allocator {}; template <typename Allocator> -BOOST_CONTAINER_FORCEINLINE typename outermost_allocator<Allocator>::type & +inline typename outermost_allocator<Allocator>::type & get_outermost_allocator(Allocator &a) { return outermost_allocator<Allocator>::get(a); } template <typename Allocator> -BOOST_CONTAINER_FORCEINLINE const typename outermost_allocator<Allocator>::type & +inline const typename outermost_allocator<Allocator>::type & get_outermost_allocator(const Allocator &a) { return outermost_allocator<Allocator>::get(a); } @@ -159,34 +159,34 @@ class scoped_allocator_adaptor_base inner_allocator_type::is_always_equal::value > is_always_equal; - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base() + inline scoped_allocator_adaptor_base() {} template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc, const InnerAllocs &...args) + inline scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc, const InnerAllocs &...args) : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc)) , m_inner(args...) {} - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other) + inline scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other) : outer_allocator_type(other.outer_allocator()) , m_inner(other.inner_allocator()) {} - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other) + inline scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other) : outer_allocator_type(::boost::move(other.outer_allocator())) , m_inner(::boost::move(other.inner_allocator())) {} template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base + inline scoped_allocator_adaptor_base (const scoped_allocator_adaptor_base<OuterA2, InnerAllocs...>& other) : outer_allocator_type(other.outer_allocator()) , m_inner(other.inner_allocator()) {} template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base + inline scoped_allocator_adaptor_base (BOOST_RV_REF_BEG scoped_allocator_adaptor_base <OuterA2, InnerAllocs...> BOOST_RV_REF_END other) : outer_allocator_type(other.outer_allocator()) @@ -197,7 +197,7 @@ class scoped_allocator_adaptor_base struct internal_type_t{}; template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base + inline scoped_allocator_adaptor_base ( internal_type_t , BOOST_FWD_REF(OuterA2) outerAlloc , const inner_allocator_type &inner) @@ -207,7 +207,7 @@ class scoped_allocator_adaptor_base public: - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base &operator= + inline scoped_allocator_adaptor_base &operator= (BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other) { outer_allocator_type::operator=(other.outer_allocator()); @@ -215,35 +215,35 @@ class scoped_allocator_adaptor_base return *this; } - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other) + inline scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other) { outer_allocator_type::operator=(boost::move(other.outer_allocator())); m_inner = ::boost::move(other.inner_allocator()); return *this; } - BOOST_CONTAINER_FORCEINLINE void swap(scoped_allocator_adaptor_base &r) + inline void swap(scoped_allocator_adaptor_base &r) { boost::adl_move_swap(this->outer_allocator(), r.outer_allocator()); boost::adl_move_swap(this->m_inner, r.inner_allocator()); } - BOOST_CONTAINER_FORCEINLINE friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) + inline friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) { l.swap(r); } - BOOST_CONTAINER_FORCEINLINE inner_allocator_type& inner_allocator() BOOST_NOEXCEPT_OR_NOTHROW + inline inner_allocator_type& inner_allocator() BOOST_NOEXCEPT_OR_NOTHROW { return m_inner; } - BOOST_CONTAINER_FORCEINLINE inner_allocator_type const& inner_allocator() const BOOST_NOEXCEPT_OR_NOTHROW + inline inner_allocator_type const& inner_allocator() const BOOST_NOEXCEPT_OR_NOTHROW { return m_inner; } - BOOST_CONTAINER_FORCEINLINE outer_allocator_type & outer_allocator() BOOST_NOEXCEPT_OR_NOTHROW + inline outer_allocator_type & outer_allocator() BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<outer_allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE const outer_allocator_type &outer_allocator() const BOOST_NOEXCEPT_OR_NOTHROW + inline const outer_allocator_type &outer_allocator() const BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<const outer_allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE scoped_allocator_type select_on_container_copy_construction() const + inline scoped_allocator_type select_on_container_copy_construction() const { return scoped_allocator_type (internal_type_t() @@ -302,33 +302,33 @@ class scoped_allocator_adaptor_base<OuterAlloc, true, BOOST_MOVE_TARG##N>\ inner_allocator_type::is_always_equal::value\ > is_always_equal;\ \ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(){}\ + inline scoped_allocator_adaptor_base(){}\ \ template <class OuterA2>\ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc, BOOST_MOVE_CREF##N)\ + inline scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc, BOOST_MOVE_CREF##N)\ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc))\ , m_inner(BOOST_MOVE_ARG##N)\ {}\ \ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other)\ + inline scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other)\ : outer_allocator_type(other.outer_allocator())\ , m_inner(other.inner_allocator())\ {}\ \ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other)\ + inline scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other)\ : outer_allocator_type(::boost::move(other.outer_allocator()))\ , m_inner(::boost::move(other.inner_allocator()))\ {}\ \ template <class OuterA2>\ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base\ + inline scoped_allocator_adaptor_base\ (const scoped_allocator_adaptor_base<OuterA2, true, BOOST_MOVE_TARG##N>& other)\ : outer_allocator_type(other.outer_allocator())\ , m_inner(other.inner_allocator())\ {}\ \ template <class OuterA2>\ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base\ + inline scoped_allocator_adaptor_base\ (BOOST_RV_REF_BEG scoped_allocator_adaptor_base<OuterA2, true, BOOST_MOVE_TARG##N> BOOST_RV_REF_END other)\ : outer_allocator_type(other.outer_allocator())\ , m_inner(other.inner_allocator())\ @@ -338,14 +338,14 @@ class scoped_allocator_adaptor_base<OuterAlloc, true, BOOST_MOVE_TARG##N>\ struct internal_type_t{};\ \ template <class OuterA2>\ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base\ + inline scoped_allocator_adaptor_base\ ( internal_type_t, BOOST_FWD_REF(OuterA2) outerAlloc, const inner_allocator_type &inner)\ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc))\ , m_inner(inner)\ {}\ \ public:\ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base &operator=\ + inline scoped_allocator_adaptor_base &operator=\ (BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other)\ {\ outer_allocator_type::operator=(other.outer_allocator());\ @@ -353,35 +353,35 @@ class scoped_allocator_adaptor_base<OuterAlloc, true, BOOST_MOVE_TARG##N>\ return *this;\ }\ \ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other)\ + inline scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other)\ {\ outer_allocator_type::operator=(boost::move(other.outer_allocator()));\ m_inner = ::boost::move(other.inner_allocator());\ return *this;\ }\ \ - BOOST_CONTAINER_FORCEINLINE void swap(scoped_allocator_adaptor_base &r)\ + inline void swap(scoped_allocator_adaptor_base &r)\ {\ boost::adl_move_swap(this->outer_allocator(), r.outer_allocator());\ boost::adl_move_swap(this->m_inner, r.inner_allocator());\ }\ \ - BOOST_CONTAINER_FORCEINLINE friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r)\ + inline friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r)\ { l.swap(r); }\ \ - BOOST_CONTAINER_FORCEINLINE inner_allocator_type& inner_allocator()\ + inline inner_allocator_type& inner_allocator()\ { return m_inner; }\ \ - BOOST_CONTAINER_FORCEINLINE inner_allocator_type const& inner_allocator() const\ + inline inner_allocator_type const& inner_allocator() const\ { return m_inner; }\ \ - BOOST_CONTAINER_FORCEINLINE outer_allocator_type & outer_allocator()\ + inline outer_allocator_type & outer_allocator()\ { return static_cast<outer_allocator_type&>(*this); }\ \ - BOOST_CONTAINER_FORCEINLINE const outer_allocator_type &outer_allocator() const\ + inline const outer_allocator_type &outer_allocator() const\ { return static_cast<const outer_allocator_type&>(*this); }\ \ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_type select_on_container_copy_construction() const\ + inline scoped_allocator_type select_on_container_copy_construction() const\ {\ return scoped_allocator_type\ (internal_type_t()\ @@ -438,30 +438,30 @@ class scoped_allocator_adaptor_base< OuterAlloc BOOST_CONTAINER_SCOPEDALLOC_DUMM typedef typename outer_traits_type:: is_always_equal is_always_equal; - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base() + inline scoped_allocator_adaptor_base() {} template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc) + inline scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc) : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc)) {} - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other) + inline scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other) : outer_allocator_type(other.outer_allocator()) {} - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other) + inline scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other) : outer_allocator_type(::boost::move(other.outer_allocator())) {} template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base + inline scoped_allocator_adaptor_base (const scoped_allocator_adaptor_base<OuterA2 BOOST_CONTAINER_SCOPEDALLOC_DUMMYTRUE>& other) : outer_allocator_type(other.outer_allocator()) {} template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base + inline scoped_allocator_adaptor_base (BOOST_RV_REF_BEG scoped_allocator_adaptor_base<OuterA2 BOOST_CONTAINER_SCOPEDALLOC_DUMMYTRUE> BOOST_RV_REF_END other) : outer_allocator_type(other.outer_allocator()) {} @@ -470,44 +470,44 @@ class scoped_allocator_adaptor_base< OuterAlloc BOOST_CONTAINER_SCOPEDALLOC_DUMM struct internal_type_t{}; template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base(internal_type_t, BOOST_FWD_REF(OuterA2) outerAlloc, const inner_allocator_type &) + inline scoped_allocator_adaptor_base(internal_type_t, BOOST_FWD_REF(OuterA2) outerAlloc, const inner_allocator_type &) : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc)) {} public: - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other) + inline scoped_allocator_adaptor_base &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other) { outer_allocator_type::operator=(other.outer_allocator()); return *this; } - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other) + inline scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other) { outer_allocator_type::operator=(boost::move(other.outer_allocator())); return *this; } - BOOST_CONTAINER_FORCEINLINE void swap(scoped_allocator_adaptor_base &r) + inline void swap(scoped_allocator_adaptor_base &r) { boost::adl_move_swap(this->outer_allocator(), r.outer_allocator()); } - BOOST_CONTAINER_FORCEINLINE friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) + inline friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) { l.swap(r); } - BOOST_CONTAINER_FORCEINLINE inner_allocator_type& inner_allocator() + inline inner_allocator_type& inner_allocator() { return static_cast<inner_allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE inner_allocator_type const& inner_allocator() const + inline inner_allocator_type const& inner_allocator() const { return static_cast<const inner_allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE outer_allocator_type & outer_allocator() + inline outer_allocator_type & outer_allocator() { return static_cast<outer_allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE const outer_allocator_type &outer_allocator() const + inline const outer_allocator_type &outer_allocator() const { return static_cast<const outer_allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE scoped_allocator_type select_on_container_copy_construction() const + inline scoped_allocator_type select_on_container_copy_construction() const { return scoped_allocator_type (internal_type_t() @@ -639,21 +639,21 @@ class scoped_allocator_adaptor //! <b>Effects</b>: value-initializes the OuterAlloc base class //! and the inner allocator object. - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor() + inline scoped_allocator_adaptor() {} - BOOST_CONTAINER_FORCEINLINE ~scoped_allocator_adaptor() + inline ~scoped_allocator_adaptor() {} //! <b>Effects</b>: initializes each allocator within the adaptor with //! the corresponding allocator from other. - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(const scoped_allocator_adaptor& other) + inline scoped_allocator_adaptor(const scoped_allocator_adaptor& other) : base_type(other.base()) {} //! <b>Effects</b>: move constructs each allocator within the adaptor with //! the corresponding allocator from other. - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(BOOST_RV_REF(scoped_allocator_adaptor) other) + inline scoped_allocator_adaptor(BOOST_RV_REF(scoped_allocator_adaptor) other) : base_type(::boost::move(other.base())) {} @@ -665,14 +665,14 @@ class scoped_allocator_adaptor //! with innerAllocs...(hence recursively initializing each allocator within the adaptor with the //! corresponding allocator from the argument list). template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(BOOST_FWD_REF(OuterA2) outerAlloc, const InnerAllocs & ...innerAllocs) + inline scoped_allocator_adaptor(BOOST_FWD_REF(OuterA2) outerAlloc, const InnerAllocs & ...innerAllocs) : base_type(::boost::forward<OuterA2>(outerAlloc), innerAllocs...) {} #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) #define BOOST_CONTAINER_SCOPED_ALLOCATOR_ADAPTOR_RELATED_ALLOCATOR_CONSTRUCTOR_CODE(N)\ template <class OuterA2>\ - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(BOOST_FWD_REF(OuterA2) outerAlloc BOOST_MOVE_I##N BOOST_MOVE_CREF##N)\ + inline scoped_allocator_adaptor(BOOST_FWD_REF(OuterA2) outerAlloc BOOST_MOVE_I##N BOOST_MOVE_CREF##N)\ : base_type(::boost::forward<OuterA2>(outerAlloc) BOOST_MOVE_I##N BOOST_MOVE_ARG##N)\ {}\ // @@ -685,7 +685,7 @@ class scoped_allocator_adaptor //! //! <b>Effects</b>: initializes each allocator within the adaptor with the corresponding allocator from other. template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(const scoped_allocator_adaptor<OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER> &other) + inline scoped_allocator_adaptor(const scoped_allocator_adaptor<OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER> &other) : base_type(other.base()) {} @@ -694,15 +694,15 @@ class scoped_allocator_adaptor //! <b>Effects</b>: initializes each allocator within the adaptor with the corresponding allocator //! rvalue from other. template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(BOOST_RV_REF_BEG scoped_allocator_adaptor + inline scoped_allocator_adaptor(BOOST_RV_REF_BEG scoped_allocator_adaptor <OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER> BOOST_RV_REF_END other) : base_type(::boost::move(other.base())) {} - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor) other) + inline scoped_allocator_adaptor &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor) other) { return static_cast<scoped_allocator_adaptor&>(base_type::operator=(static_cast<const base_type &>(other))); } - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor &operator=(BOOST_RV_REF(scoped_allocator_adaptor) other) + inline scoped_allocator_adaptor &operator=(BOOST_RV_REF(scoped_allocator_adaptor) other) { return static_cast<scoped_allocator_adaptor&>(base_type::operator=(boost::move(other.base()))); } #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -734,13 +734,13 @@ class scoped_allocator_adaptor //! <b>Returns</b>: //! <code>allocator_traits<OuterAlloc>:: max_size(outer_allocator())</code>. - BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW + inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW { return outer_traits_type::max_size(this->outer_allocator()); } //! <b>Effects</b>: //! calls <code>OUTERMOST_ALLOC_TRAITS(*this):: destroy(OUTERMOST(*this), p)</code>. template <class T> - BOOST_CONTAINER_FORCEINLINE void destroy(T* p) BOOST_NOEXCEPT_OR_NOTHROW + inline void destroy(T* p) BOOST_NOEXCEPT_OR_NOTHROW { allocator_traits<typename outermost_allocator<OuterAlloc>::type> ::destroy(get_outermost_allocator(this->outer_allocator()), p); @@ -748,17 +748,17 @@ class scoped_allocator_adaptor //! <b>Returns</b>: //! <code>allocator_traits<OuterAlloc>::allocate(outer_allocator(), n)</code>. - BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type n) + inline pointer allocate(size_type n) { return outer_traits_type::allocate(this->outer_allocator(), n); } //! <b>Returns</b>: //! <code>allocator_traits<OuterAlloc>::allocate(outer_allocator(), n, hint)</code>. - BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type n, const_void_pointer hint) + inline pointer allocate(size_type n, const_void_pointer hint) { return outer_traits_type::allocate(this->outer_allocator(), n, hint); } //! <b>Effects</b>: //! <code>allocator_traits<OuterAlloc>::deallocate(outer_allocator(), p, n)</code>. - BOOST_CONTAINER_FORCEINLINE void deallocate(pointer p, size_type n) + inline void deallocate(pointer p, size_type n) { outer_traits_type::deallocate(this->outer_allocator(), p, n); } #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -770,9 +770,9 @@ class scoped_allocator_adaptor #endif //BOOST_CONTAINER_DOXYGEN_INVOKED #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED - BOOST_CONTAINER_FORCEINLINE base_type &base() { return *this; } + inline base_type &base() { return *this; } - BOOST_CONTAINER_FORCEINLINE const base_type &base() const { return *this; } + inline const base_type &base() const { return *this; } #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -806,7 +806,7 @@ class scoped_allocator_adaptor //! to true but the specific constructor does not take an allocator. This definition prevents a silent //! failure to pass an inner allocator to a contained element. -end note] template < typename T, class ...Args> - BOOST_CONTAINER_FORCEINLINE void construct(T* p, BOOST_FWD_REF(Args)...args) + inline void construct(T* p, BOOST_FWD_REF(Args)...args) { dtl::dispatch_uses_allocator ( (get_outermost_allocator)(this->outer_allocator()) @@ -819,7 +819,7 @@ class scoped_allocator_adaptor //overload selection problems when the first parameter is a pair. #define BOOST_CONTAINER_SCOPED_ALLOCATOR_CONSTRUCT_CODE(N) \ template < typename T BOOST_MOVE_I##N BOOST_MOVE_CLASSQ##N >\ - BOOST_CONTAINER_FORCEINLINE void construct(T* p BOOST_MOVE_I##N BOOST_MOVE_UREFQ##N)\ + inline void construct(T* p BOOST_MOVE_I##N BOOST_MOVE_UREFQ##N)\ {\ dtl::dispatch_uses_allocator\ ( (get_outermost_allocator)(this->outer_allocator())\ @@ -836,7 +836,7 @@ class scoped_allocator_adaptor public: //Internal function template <class OuterA2> - BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor(internal_type_t, BOOST_FWD_REF(OuterA2) outer, const inner_allocator_type& inner) + inline scoped_allocator_adaptor(internal_type_t, BOOST_FWD_REF(OuterA2) outer, const inner_allocator_type& inner) : base_type(internal_type_t(), ::boost::forward<OuterA2>(outer), inner) {} @@ -851,17 +851,17 @@ struct scoped_allocator_operator_equal //Optimize equal outer allocator types with //allocator_traits::equal which uses is_always_equal template<class IA> - BOOST_CONTAINER_FORCEINLINE static bool equal_outer(const IA &l, const IA &r) + inline static bool equal_outer(const IA &l, const IA &r) { return allocator_traits<IA>::equal(l, r); } //Otherwise compare it normally template<class IA1, class IA2> - BOOST_CONTAINER_FORCEINLINE static bool equal_outer(const IA1 &l, const IA2 &r) + inline static bool equal_outer(const IA1 &l, const IA2 &r) { return l == r; } //Otherwise compare it normally template<class IA> - BOOST_CONTAINER_FORCEINLINE static bool equal_inner(const IA &l, const IA &r) + inline static bool equal_inner(const IA &l, const IA &r) { return allocator_traits<IA>::equal(l, r); } }; @@ -873,14 +873,14 @@ struct scoped_allocator_operator_equal<true> //inner_allocator_type is the same as outer_allocator_type //so both types can be different in operator== template<class IA1, class IA2> - BOOST_CONTAINER_FORCEINLINE static bool equal_inner(const IA1 &, const IA2 &) + inline static bool equal_inner(const IA1 &, const IA2 &) { return true; } }; /// @endcond template <typename OuterA1, typename OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNERCLASS> -BOOST_CONTAINER_FORCEINLINE bool operator==(const scoped_allocator_adaptor<OuterA1, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER>& a +inline bool operator==(const scoped_allocator_adaptor<OuterA1, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER>& a ,const scoped_allocator_adaptor<OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER>& b) { #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -894,7 +894,7 @@ BOOST_CONTAINER_FORCEINLINE bool operator==(const scoped_allocator_adaptor<Outer } template <typename OuterA1, typename OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNERCLASS> -BOOST_CONTAINER_FORCEINLINE bool operator!=(const scoped_allocator_adaptor<OuterA1, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER>& a +inline bool operator!=(const scoped_allocator_adaptor<OuterA1, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER>& a ,const scoped_allocator_adaptor<OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNER>& b) { return !(a == b); } diff --git a/contrib/restricted/boost/container/include/boost/container/set.hpp b/contrib/restricted/boost/container/include/boost/container/set.hpp index f8a2efad2f..1aef8ff002 100644 --- a/contrib/restricted/boost/container/include/boost/container/set.hpp +++ b/contrib/restricted/boost/container/include/boost/container/set.hpp @@ -113,7 +113,7 @@ class set //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_FORCEINLINE set() + inline set() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value && dtl::is_nothrow_default_constructible<Compare>::value) : base_t() @@ -122,14 +122,14 @@ class set //! <b>Effects</b>: Constructs an empty set using the specified allocator object. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_FORCEINLINE explicit set(const allocator_type& a) + inline explicit set(const allocator_type& a) : base_t(a) {} //! <b>Effects</b>: Constructs an empty set using the specified comparison object. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_FORCEINLINE explicit set(const Compare& comp) + inline explicit set(const Compare& comp) : base_t(comp) {} @@ -137,7 +137,7 @@ class set //! and allocator. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_FORCEINLINE set(const Compare& comp, const allocator_type& a) + inline set(const Compare& comp, const allocator_type& a) : base_t(comp, a) {} @@ -147,7 +147,7 @@ class set //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using //! the predicate and otherwise N logN, where N is last - first. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set(InputIterator first, InputIterator last) + inline set(InputIterator first, InputIterator last) : base_t(true, first, last) {} @@ -157,7 +157,7 @@ class set //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using //! the predicate and otherwise N logN, where N is last - first. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set(InputIterator first, InputIterator last, const allocator_type& a) + inline set(InputIterator first, InputIterator last, const allocator_type& a) : base_t(true, first, last, key_compare(), a) {} @@ -167,7 +167,7 @@ class set //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using //! the predicate and otherwise N logN, where N is last - first. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set(InputIterator first, InputIterator last, const Compare& comp) + inline set(InputIterator first, InputIterator last, const Compare& comp) : base_t(true, first, last, comp) {} @@ -177,7 +177,7 @@ class set //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using //! the predicate and otherwise N logN, where N is last - first. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set(InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a) + inline set(InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a) : base_t(true, first, last, comp, a) {} @@ -192,7 +192,7 @@ class set //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set( ordered_unique_range_t, InputIterator first, InputIterator last) + inline set( ordered_unique_range_t, InputIterator first, InputIterator last) : base_t(ordered_range, first, last) {} @@ -207,7 +207,7 @@ class set //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set( ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp ) + inline set( ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp ) : base_t(ordered_range, first, last, comp) {} @@ -222,7 +222,7 @@ class set //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set( ordered_unique_range_t, InputIterator first, InputIterator last + inline set( ordered_unique_range_t, InputIterator first, InputIterator last , const Compare& comp, const allocator_type& a) : base_t(ordered_range, first, last, comp, a) {} @@ -238,7 +238,7 @@ class set //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE set(ordered_unique_range_t, InputIterator first, InputIterator last, const allocator_type& a) + inline set(ordered_unique_range_t, InputIterator first, InputIterator last, const allocator_type& a) : base_t(ordered_range, first, last, Compare(), a) {} @@ -248,7 +248,7 @@ class set //! //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using //! the predicate and otherwise N logN, where N is il.begin() - il.end(). - BOOST_CONTAINER_FORCEINLINE set(std::initializer_list<value_type> il) + inline set(std::initializer_list<value_type> il) : base_t(true, il.begin(), il.end()) {} @@ -257,7 +257,7 @@ class set //! //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using //! the predicate and otherwise N logN, where N is il.begin() - il.end(). - BOOST_CONTAINER_FORCEINLINE set(std::initializer_list<value_type> il, const allocator_type& a) + inline set(std::initializer_list<value_type> il, const allocator_type& a) : base_t(true, il.begin(), il.end(), Compare(), a) {} @@ -266,7 +266,7 @@ class set //! //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using //! the predicate and otherwise N logN, where N is il.begin() - il.end(). - BOOST_CONTAINER_FORCEINLINE set(std::initializer_list<value_type> il, const Compare& comp ) + inline set(std::initializer_list<value_type> il, const Compare& comp ) : base_t(true, il.begin(), il.end(), comp) {} @@ -275,7 +275,7 @@ class set //! //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using //! the predicate and otherwise N logN, where N is il.begin() - il.end(). - BOOST_CONTAINER_FORCEINLINE set(std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) + inline set(std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) : base_t(true, il.begin(), il.end(), comp, a) {} @@ -289,7 +289,7 @@ class set //! <b>Complexity</b>: Linear in N. //! //! <b>Note</b>: Non-standard extension. - BOOST_CONTAINER_FORCEINLINE set( ordered_unique_range_t, std::initializer_list<value_type> il) + inline set( ordered_unique_range_t, std::initializer_list<value_type> il) : base_t(ordered_range, il.begin(), il.end()) {} @@ -303,7 +303,7 @@ class set //! <b>Complexity</b>: Linear in N. //! //! <b>Note</b>: Non-standard extension. - BOOST_CONTAINER_FORCEINLINE set( ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp) + inline set( ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp) : base_t(ordered_range, il.begin(), il.end(), comp) {} @@ -317,7 +317,7 @@ class set //! <b>Complexity</b>: Linear in N. //! //! <b>Note</b>: Non-standard extension. - BOOST_CONTAINER_FORCEINLINE set( ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) + inline set( ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) : base_t(ordered_range, il.begin(), il.end(), comp, a) {} #endif @@ -325,7 +325,7 @@ class set //! <b>Effects</b>: Copy constructs a set. //! //! <b>Complexity</b>: Linear in x.size(). - BOOST_CONTAINER_FORCEINLINE set(const set& x) + inline set(const set& x) : base_t(static_cast<const base_t&>(x)) {} @@ -334,7 +334,7 @@ class set //! <b>Complexity</b>: Constant. //! //! <b>Postcondition</b>: x is emptied. - BOOST_CONTAINER_FORCEINLINE set(BOOST_RV_REF(set) x) + inline set(BOOST_RV_REF(set) x) BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value) : base_t(BOOST_MOVE_BASE(base_t, x)) {} @@ -342,7 +342,7 @@ class set //! <b>Effects</b>: Copy constructs a set using the specified allocator. //! //! <b>Complexity</b>: Linear in x.size(). - BOOST_CONTAINER_FORCEINLINE set(const set& x, const allocator_type &a) + inline set(const set& x, const allocator_type &a) : base_t(static_cast<const base_t&>(x), a) {} @@ -350,14 +350,14 @@ class set //! Constructs *this using x's resources. //! //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise. - BOOST_CONTAINER_FORCEINLINE set(BOOST_RV_REF(set) x, const allocator_type &a) + inline set(BOOST_RV_REF(set) x, const allocator_type &a) : base_t(BOOST_MOVE_BASE(base_t, x), a) {} //! <b>Effects</b>: Makes *this a copy of x. //! //! <b>Complexity</b>: Linear in x.size(). - BOOST_CONTAINER_FORCEINLINE set& operator=(BOOST_COPY_ASSIGN_REF(set) x) + inline set& operator=(BOOST_COPY_ASSIGN_REF(set) x) { return static_cast<set&>(this->base_t::operator=(static_cast<const base_t&>(x))); } //! <b>Effects</b>: this->swap(x.get()). @@ -368,7 +368,7 @@ class set //! <b>Complexity</b>: Constant if allocator_traits_type:: //! propagate_on_container_move_assignment is true or //! this->get>allocator() == x.get_allocator(). Linear otherwise. - BOOST_CONTAINER_FORCEINLINE set& operator=(BOOST_RV_REF(set) x) + inline set& operator=(BOOST_RV_REF(set) x) BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value || allocator_traits_type::is_always_equal::value) && boost::container::dtl::is_nothrow_move_assignable<Compare>::value) @@ -541,7 +541,7 @@ class set //! //! <b>Complexity</b>: Logarithmic. template <class... Args> - BOOST_CONTAINER_FORCEINLINE std::pair<iterator,bool> emplace(BOOST_FWD_REF(Args)... args) + inline std::pair<iterator,bool> emplace(BOOST_FWD_REF(Args)... args) { return this->base_t::emplace_unique(boost::forward<Args>(args)...); } //! <b>Effects</b>: Inserts an object of type Key constructed with @@ -554,18 +554,18 @@ class set //! //! <b>Complexity</b>: Logarithmic. template <class... Args> - BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args) + inline iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args) { return this->base_t::emplace_hint_unique(p, boost::forward<Args>(args)...); } #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) #define BOOST_CONTAINER_SET_EMPLACE_CODE(N) \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE std::pair<iterator,bool> emplace(BOOST_MOVE_UREF##N)\ + inline std::pair<iterator,bool> emplace(BOOST_MOVE_UREF##N)\ { return this->base_t::emplace_unique(BOOST_MOVE_FWD##N); }\ \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ + inline iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ { return this->base_t::emplace_hint_unique(hint BOOST_MOVE_I##N BOOST_MOVE_FWD##N); }\ // BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SET_EMPLACE_CODE) @@ -632,7 +632,7 @@ class set //! //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last) template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE void insert(InputIterator first, InputIterator last) + inline void insert(InputIterator first, InputIterator last) { this->base_t::insert_unique_range(first, last); } #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) @@ -640,21 +640,21 @@ class set //! if there is no element with key equivalent to the key of that element. //! //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from il.begin() to il.end()) - BOOST_CONTAINER_FORCEINLINE void insert(std::initializer_list<value_type> il) + inline void insert(std::initializer_list<value_type> il) { this->base_t::insert_unique_range(il.begin(), il.end()); } #endif //! @copydoc ::boost::container::map::insert(node_type&&) - BOOST_CONTAINER_FORCEINLINE insert_return_type insert(BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) + inline insert_return_type insert(BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) { return this->base_t::insert_unique_node(boost::move(nh)); } //! @copydoc ::boost::container::map::insert(const_iterator, node_type&&) - BOOST_CONTAINER_FORCEINLINE insert_return_type insert(const_iterator hint, BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) + inline insert_return_type insert(const_iterator hint, BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) { return this->base_t::insert_unique_node(hint, boost::move(nh)); } //! @copydoc ::boost::container::map::merge(map<Key, T, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(set<Key, C2, Allocator, Options>& source) + inline void merge(set<Key, C2, Allocator, Options>& source) { typedef dtl::tree <Key, void, C2, Allocator, Options> base2_t; @@ -663,12 +663,12 @@ class set //! @copydoc ::boost::container::set::merge(set<Key, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG set<Key, C2, Allocator, Options> BOOST_RV_REF_END source) + inline void merge(BOOST_RV_REF_BEG set<Key, C2, Allocator, Options> BOOST_RV_REF_END source) { return this->merge(static_cast<set<Key, C2, Allocator, Options>&>(source)); } //! @copydoc ::boost::container::map::merge(multimap<Key, T, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(multiset<Key, C2, Allocator, Options>& source) + inline void merge(multiset<Key, C2, Allocator, Options>& source) { typedef dtl::tree <Key, void, C2, Allocator, Options> base2_t; @@ -677,7 +677,7 @@ class set //! @copydoc ::boost::container::set::merge(multiset<Key, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG multiset<Key, C2, Allocator, Options> BOOST_RV_REF_END source) + inline void merge(BOOST_RV_REF_BEG multiset<Key, C2, Allocator, Options> BOOST_RV_REF_END source) { return this->merge(static_cast<multiset<Key, C2, Allocator, Options>&>(source)); } //! <b>Effects</b>: If present, erases the element in the container with key equivalent to x. @@ -685,7 +685,7 @@ class set //! <b>Returns</b>: Returns the number of erased elements (0/1). //! //! <b>Complexity</b>: log(size()) + count(k) - BOOST_CONTAINER_FORCEINLINE size_type erase(const key_type& x) + inline size_type erase(const key_type& x) { return this->base_t::erase_unique(x); } #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -779,7 +779,7 @@ class set //! <b>Returns</b>: The number of elements with key equivalent to x. //! //! <b>Complexity</b>: log(size())+count(k) - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type count(const key_type& x) const { return static_cast<size_type>(this->base_t::find(x) != this->base_t::cend()); } @@ -790,7 +790,7 @@ class set //! //! <b>Complexity</b>: log(size())+count(k) template<typename K> - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type count(const K& x) const { return static_cast<size_type>(this->find(x) != this->cend()); } @@ -881,13 +881,13 @@ class set //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! <b>Complexity</b>: Logarithmic - BOOST_CONTAINER_FORCEINLINE std::pair<iterator,iterator> equal_range(const key_type& x) + inline std::pair<iterator,iterator> equal_range(const key_type& x) { return this->base_t::lower_bound_range(x); } //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! <b>Complexity</b>: Logarithmic - BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const + inline std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const { return this->base_t::lower_bound_range(x); } //! <b>Requires</b>: This overload is available only if @@ -897,7 +897,7 @@ class set //! //! <b>Complexity</b>: Logarithmic template<typename K> - BOOST_CONTAINER_FORCEINLINE std::pair<iterator,iterator> equal_range(const K& x) + inline std::pair<iterator,iterator> equal_range(const K& x) { return this->base_t::lower_bound_range(x); } //! <b>Requires</b>: This overload is available only if @@ -907,7 +907,7 @@ class set //! //! <b>Complexity</b>: Logarithmic template<typename K> - BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator,const_iterator> equal_range(const K& x) const + inline std::pair<const_iterator,const_iterator> equal_range(const K& x) const { return this->base_t::lower_bound_range(x); } #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -1097,48 +1097,48 @@ class multiset ////////////////////////////////////////////// //! @copydoc ::boost::container::set::set() - BOOST_CONTAINER_FORCEINLINE multiset() + inline multiset() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value && dtl::is_nothrow_default_constructible<Compare>::value) : base_t() {} //! @copydoc ::boost::container::set::set(const allocator_type&) - BOOST_CONTAINER_FORCEINLINE explicit multiset(const allocator_type& a) + inline explicit multiset(const allocator_type& a) : base_t(a) {} //! @copydoc ::boost::container::set::set(const Compare&) - BOOST_CONTAINER_FORCEINLINE explicit multiset(const Compare& comp) + inline explicit multiset(const Compare& comp) : base_t(comp) {} //! @copydoc ::boost::container::set::set(const Compare&, const allocator_type&) - BOOST_CONTAINER_FORCEINLINE multiset(const Compare& comp, const allocator_type& a) + inline multiset(const Compare& comp, const allocator_type& a) : base_t(comp, a) {} //! @copydoc ::boost::container::set::set(InputIterator, InputIterator) template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset(InputIterator first, InputIterator last) + inline multiset(InputIterator first, InputIterator last) : base_t(false, first, last) {} //! @copydoc ::boost::container::set::set(InputIterator, InputIterator, const allocator_type&) template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset(InputIterator first, InputIterator last, const allocator_type& a) + inline multiset(InputIterator first, InputIterator last, const allocator_type& a) : base_t(false, first, last, key_compare(), a) {} //! @copydoc ::boost::container::set::set(InputIterator, InputIterator, const Compare&) template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset(InputIterator first, InputIterator last, const Compare& comp) + inline multiset(InputIterator first, InputIterator last, const Compare& comp) : base_t(false, first, last, comp) {} //! @copydoc ::boost::container::set::set(InputIterator, InputIterator, const Compare&, const allocator_type&) template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset(InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a) + inline multiset(InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a) : base_t(false, first, last, comp, a) {} @@ -1152,7 +1152,7 @@ class multiset //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset( ordered_range_t, InputIterator first, InputIterator last ) + inline multiset( ordered_range_t, InputIterator first, InputIterator last ) : base_t(ordered_range, first, last) {} @@ -1166,7 +1166,7 @@ class multiset //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset( ordered_range_t, InputIterator first, InputIterator last, const Compare& comp) + inline multiset( ordered_range_t, InputIterator first, InputIterator last, const Compare& comp) : base_t(ordered_range, first, last, comp) {} @@ -1180,7 +1180,7 @@ class multiset //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset( ordered_range_t, InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a) + inline multiset( ordered_range_t, InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a) : base_t(ordered_range, first, last, comp, a) {} @@ -1194,74 +1194,74 @@ class multiset //! //! <b>Note</b>: Non-standard extension. template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE multiset(ordered_range_t, InputIterator first, InputIterator last, const allocator_type &a) + inline multiset(ordered_range_t, InputIterator first, InputIterator last, const allocator_type &a) : base_t(ordered_range, first, last, Compare(), a) {} #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) //! @copydoc ::boost::container::set::set(std::initializer_list<value_type>) - BOOST_CONTAINER_FORCEINLINE multiset(std::initializer_list<value_type> il) + inline multiset(std::initializer_list<value_type> il) : base_t(false, il.begin(), il.end()) {} //! @copydoc ::boost::container::set::set(std::initializer_list<value_type>, const allocator_type&) - BOOST_CONTAINER_FORCEINLINE multiset(std::initializer_list<value_type> il, const allocator_type& a) + inline multiset(std::initializer_list<value_type> il, const allocator_type& a) : base_t(false, il.begin(), il.end(), Compare(), a) {} //! @copydoc ::boost::container::set::set(std::initializer_list<value_type>, const Compare&) - BOOST_CONTAINER_FORCEINLINE multiset(std::initializer_list<value_type> il, const Compare& comp) + inline multiset(std::initializer_list<value_type> il, const Compare& comp) : base_t(false, il.begin(), il.end(), comp) {} //! @copydoc ::boost::container::set::set(std::initializer_list<value_type>, const Compare&, const allocator_type&) - BOOST_CONTAINER_FORCEINLINE multiset(std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) + inline multiset(std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) : base_t(false, il.begin(), il.end(), comp, a) {} //! @copydoc ::boost::container::set::set(ordered_unique_range_t, std::initializer_list<value_type>) - BOOST_CONTAINER_FORCEINLINE multiset(ordered_range_t, std::initializer_list<value_type> il) + inline multiset(ordered_range_t, std::initializer_list<value_type> il) : base_t(ordered_range, il.begin(), il.end()) {} //! @copydoc ::boost::container::set::set(ordered_unique_range_t, std::initializer_list<value_type>, const Compare&) - BOOST_CONTAINER_FORCEINLINE multiset(ordered_range_t, std::initializer_list<value_type> il, const Compare& comp) + inline multiset(ordered_range_t, std::initializer_list<value_type> il, const Compare& comp) : base_t(ordered_range, il.begin(), il.end(), comp) {} //! @copydoc ::boost::container::set::set(ordered_unique_range_t, std::initializer_list<value_type>, const Compare&, const allocator_type&) - BOOST_CONTAINER_FORCEINLINE multiset(ordered_range_t, std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) + inline multiset(ordered_range_t, std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a) : base_t(ordered_range, il.begin(), il.end(), comp, a) {} #endif //! @copydoc ::boost::container::set::set(const set &) - BOOST_CONTAINER_FORCEINLINE multiset(const multiset& x) + inline multiset(const multiset& x) : base_t(static_cast<const base_t&>(x)) {} //! @copydoc ::boost::container::set::set(set &&) - BOOST_CONTAINER_FORCEINLINE multiset(BOOST_RV_REF(multiset) x) + inline multiset(BOOST_RV_REF(multiset) x) BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value) : base_t(BOOST_MOVE_BASE(base_t, x)) {} //! @copydoc ::boost::container::set::set(const set &, const allocator_type &) - BOOST_CONTAINER_FORCEINLINE multiset(const multiset& x, const allocator_type &a) + inline multiset(const multiset& x, const allocator_type &a) : base_t(static_cast<const base_t&>(x), a) {} //! @copydoc ::boost::container::set::set(set &&, const allocator_type &) - BOOST_CONTAINER_FORCEINLINE multiset(BOOST_RV_REF(multiset) x, const allocator_type &a) + inline multiset(BOOST_RV_REF(multiset) x, const allocator_type &a) : base_t(BOOST_MOVE_BASE(base_t, x), a) {} //! @copydoc ::boost::container::set::operator=(const set &) - BOOST_CONTAINER_FORCEINLINE multiset& operator=(BOOST_COPY_ASSIGN_REF(multiset) x) + inline multiset& operator=(BOOST_COPY_ASSIGN_REF(multiset) x) { return static_cast<multiset&>(this->base_t::operator=(static_cast<const base_t&>(x))); } //! @copydoc ::boost::container::set::operator=(set &&) - BOOST_CONTAINER_FORCEINLINE multiset& operator=(BOOST_RV_REF(multiset) x) + inline multiset& operator=(BOOST_RV_REF(multiset) x) BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value || allocator_traits_type::is_always_equal::value) && boost::container::dtl::is_nothrow_move_assignable<Compare>::value) @@ -1342,7 +1342,7 @@ class multiset //! //! <b>Complexity</b>: Logarithmic. template <class... Args> - BOOST_CONTAINER_FORCEINLINE iterator emplace(BOOST_FWD_REF(Args)... args) + inline iterator emplace(BOOST_FWD_REF(Args)... args) { return this->base_t::emplace_equal(boost::forward<Args>(args)...); } //! <b>Effects</b>: Inserts an object of type Key constructed with @@ -1354,18 +1354,18 @@ class multiset //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t //! is inserted right before p. template <class... Args> - BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args) + inline iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args) { return this->base_t::emplace_hint_equal(p, boost::forward<Args>(args)...); } #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) #define BOOST_CONTAINER_MULTISET_EMPLACE_CODE(N) \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE iterator emplace(BOOST_MOVE_UREF##N)\ + inline iterator emplace(BOOST_MOVE_UREF##N)\ { return this->base_t::emplace_equal(BOOST_MOVE_FWD##N); }\ \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ + inline iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ { return this->base_t::emplace_hint_equal(hint BOOST_MOVE_I##N BOOST_MOVE_FWD##N); }\ // BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_MULTISET_EMPLACE_CODE) @@ -1423,26 +1423,26 @@ class multiset //! //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last) template <class InputIterator> - BOOST_CONTAINER_FORCEINLINE void insert(InputIterator first, InputIterator last) + inline void insert(InputIterator first, InputIterator last) { this->base_t::insert_equal_range(first, last); } #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) //! @copydoc ::boost::container::set::insert(std::initializer_list<value_type>) - BOOST_CONTAINER_FORCEINLINE void insert(std::initializer_list<value_type> il) + inline void insert(std::initializer_list<value_type> il) { this->base_t::insert_equal_range(il.begin(), il.end()); } #endif //! @copydoc ::boost::container::multimap::insert(node_type&&) - BOOST_CONTAINER_FORCEINLINE iterator insert(BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) + inline iterator insert(BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) { return this->base_t::insert_equal_node(boost::move(nh)); } //! @copydoc ::boost::container::multimap::insert(const_iterator, node_type&&) - BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator hint, BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) + inline iterator insert(const_iterator hint, BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh) { return this->base_t::insert_equal_node(hint, boost::move(nh)); } //! @copydoc ::boost::container::multimap::merge(multimap<Key, T, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(multiset<Key, C2, Allocator, Options>& source) + inline void merge(multiset<Key, C2, Allocator, Options>& source) { typedef dtl::tree <Key, void, C2, Allocator, Options> base2_t; @@ -1451,12 +1451,12 @@ class multiset //! @copydoc ::boost::container::multiset::merge(multiset<Key, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG multiset<Key, C2, Allocator, Options> BOOST_RV_REF_END source) + inline void merge(BOOST_RV_REF_BEG multiset<Key, C2, Allocator, Options> BOOST_RV_REF_END source) { return this->merge(static_cast<multiset<Key, C2, Allocator, Options>&>(source)); } //! @copydoc ::boost::container::multimap::merge(map<Key, T, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(set<Key, C2, Allocator, Options>& source) + inline void merge(set<Key, C2, Allocator, Options>& source) { typedef dtl::tree <Key, void, C2, Allocator, Options> base2_t; @@ -1465,7 +1465,7 @@ class multiset //! @copydoc ::boost::container::multiset::merge(set<Key, C2, Allocator, Options>&) template<class C2> - BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG set<Key, C2, Allocator, Options> BOOST_RV_REF_END source) + inline void merge(BOOST_RV_REF_BEG set<Key, C2, Allocator, Options> BOOST_RV_REF_END source) { return this->merge(static_cast<set<Key, C2, Allocator, Options>&>(source)); } #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) diff --git a/contrib/restricted/boost/container/include/boost/container/small_vector.hpp b/contrib/restricted/boost/container/include/boost/container/small_vector.hpp index 66b31954d7..28adc46b88 100644 --- a/contrib/restricted/boost/container/include/boost/container/small_vector.hpp +++ b/contrib/restricted/boost/container/include/boost/container/small_vector.hpp @@ -46,6 +46,8 @@ #include <initializer_list> //for std::initializer_list #endif +#include <cstddef> //offsetof + namespace boost { namespace container { @@ -130,10 +132,10 @@ class small_vector_allocator BOOST_COPYABLE_AND_MOVABLE(small_vector_allocator) - BOOST_CONTAINER_FORCEINLINE const allocator_type &as_base() const BOOST_NOEXCEPT + inline const allocator_type &as_base() const BOOST_NOEXCEPT { return static_cast<const allocator_type&>(*this); } - BOOST_CONTAINER_FORCEINLINE allocator_type &as_base() BOOST_NOEXCEPT + inline allocator_type &as_base() BOOST_NOEXCEPT { return static_cast<allocator_type&>(*this); } #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -171,19 +173,19 @@ class small_vector_allocator typedef typename allocator_traits<allocator_type>::template portable_rebind_alloc<T2>::type other; }; - BOOST_CONTAINER_FORCEINLINE small_vector_allocator() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value) + inline small_vector_allocator() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value) {} //!Constructor from other small_vector_allocator. //!Never throws - BOOST_CONTAINER_FORCEINLINE small_vector_allocator + inline small_vector_allocator (const small_vector_allocator &other) BOOST_NOEXCEPT_OR_NOTHROW : allocator_type(other.as_base()) {} //!Move constructor from small_vector_allocator. //!Never throws - BOOST_CONTAINER_FORCEINLINE small_vector_allocator + inline small_vector_allocator (BOOST_RV_REF(small_vector_allocator) other) BOOST_NOEXCEPT_OR_NOTHROW : allocator_type(::boost::move(other.as_base())) {} @@ -191,7 +193,7 @@ class small_vector_allocator //!Constructor from related small_vector_allocator. //!Never throws template<class U, class OtherVoidAllocator, class OtherOptions> - BOOST_CONTAINER_FORCEINLINE small_vector_allocator + inline small_vector_allocator (const small_vector_allocator<U, OtherVoidAllocator, OtherOptions> &other) BOOST_NOEXCEPT_OR_NOTHROW : allocator_type(other.as_base()) {} @@ -199,52 +201,52 @@ class small_vector_allocator //!Move constructor from related small_vector_allocator. //!Never throws template<class U, class OtherVoidAllocator, class OtherOptions> - BOOST_CONTAINER_FORCEINLINE small_vector_allocator + inline small_vector_allocator (BOOST_RV_REF(small_vector_allocator<U BOOST_MOVE_I OtherVoidAllocator BOOST_MOVE_I OtherOptions>) other) BOOST_NOEXCEPT_OR_NOTHROW : allocator_type(::boost::move(other.as_base())) {} //!Constructor from allocator_type. //!Never throws - BOOST_CONTAINER_FORCEINLINE explicit small_vector_allocator + inline explicit small_vector_allocator (const allocator_type &other) BOOST_NOEXCEPT_OR_NOTHROW : allocator_type(other) {} //!Assignment from other small_vector_allocator. //!Never throws - BOOST_CONTAINER_FORCEINLINE small_vector_allocator & + inline small_vector_allocator & operator=(BOOST_COPY_ASSIGN_REF(small_vector_allocator) other) BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<small_vector_allocator&>(this->allocator_type::operator=(other.as_base())); } //!Move assignment from other small_vector_allocator. //!Never throws - BOOST_CONTAINER_FORCEINLINE small_vector_allocator & + inline small_vector_allocator & operator=(BOOST_RV_REF(small_vector_allocator) other) BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<small_vector_allocator&>(this->allocator_type::operator=(::boost::move(other.as_base()))); } //!Assignment from related small_vector_allocator. //!Never throws template<class U, class OtherVoidAllocator> - BOOST_CONTAINER_FORCEINLINE small_vector_allocator & + inline small_vector_allocator & operator=(BOOST_COPY_ASSIGN_REF(small_vector_allocator<U BOOST_MOVE_I OtherVoidAllocator BOOST_MOVE_I Options>) other) BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<small_vector_allocator&>(this->allocator_type::operator=(other.as_base())); } //!Move assignment from related small_vector_allocator. //!Never throws template<class U, class OtherVoidAllocator> - BOOST_CONTAINER_FORCEINLINE small_vector_allocator & + inline small_vector_allocator & operator=(BOOST_RV_REF(small_vector_allocator<U BOOST_MOVE_I OtherVoidAllocator BOOST_MOVE_I Options>) other) BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<small_vector_allocator&>(this->allocator_type::operator=(::boost::move(other.as_base()))); } //!Move assignment from allocator_type. //!Never throws - BOOST_CONTAINER_FORCEINLINE small_vector_allocator & + inline small_vector_allocator & operator=(const allocator_type &other) BOOST_NOEXCEPT_OR_NOTHROW { return static_cast<small_vector_allocator&>(this->allocator_type::operator=(other)); } //!Allocates storage from the standard-conforming allocator - BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type count, const_void_pointer hint = const_void_pointer()) + inline pointer allocate(size_type count, const_void_pointer hint = const_void_pointer()) { return allocator_traits_type::allocate(this->as_base(), count, hint); } //!Deallocates previously allocated memory. @@ -257,7 +259,7 @@ class small_vector_allocator //!Returns the maximum number of elements that could be allocated. //!Never throws - BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW + inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW { return allocator_traits_type::max_size(this->as_base()); } small_vector_allocator select_on_container_copy_construction() const @@ -268,17 +270,17 @@ class small_vector_allocator //!Swaps two allocators, does nothing //!because this small_vector_allocator is stateless - BOOST_CONTAINER_FORCEINLINE friend void swap(small_vector_allocator &l, small_vector_allocator &r) BOOST_NOEXCEPT_OR_NOTHROW + inline friend void swap(small_vector_allocator &l, small_vector_allocator &r) BOOST_NOEXCEPT_OR_NOTHROW { boost::adl_move_swap(l.as_base(), r.as_base()); } //!An small_vector_allocator always compares to true, as memory allocated with one //!instance can be deallocated by another instance (except for unpropagable storage) - BOOST_CONTAINER_FORCEINLINE friend bool operator==(const small_vector_allocator &l, const small_vector_allocator &r) BOOST_NOEXCEPT_OR_NOTHROW + inline friend bool operator==(const small_vector_allocator &l, const small_vector_allocator &r) BOOST_NOEXCEPT_OR_NOTHROW { return allocator_traits_type::equal(l.as_base(), r.as_base()); } //!An small_vector_allocator always compares to false, as memory allocated with one //!instance can be deallocated by another instance - BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const small_vector_allocator &l, const small_vector_allocator &r) BOOST_NOEXCEPT_OR_NOTHROW + inline friend bool operator!=(const small_vector_allocator &l, const small_vector_allocator &r) BOOST_NOEXCEPT_OR_NOTHROW { return !(l == r); } #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -288,12 +290,12 @@ class small_vector_allocator typedef typename dtl::vector_for_small_vector <value_type, allocator_type, Options>::type vector_type; - BOOST_CONTAINER_FORCEINLINE bool is_internal_storage(const_pointer p) const + inline bool is_internal_storage(const_pointer p) const { return this->internal_storage() == p; } public: - BOOST_CONTAINER_FORCEINLINE const_pointer internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW; - BOOST_CONTAINER_FORCEINLINE pointer internal_storage() BOOST_NOEXCEPT_OR_NOTHROW; + inline const_pointer internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW; + inline pointer internal_storage() BOOST_NOEXCEPT_OR_NOTHROW; #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; @@ -345,28 +347,28 @@ class small_vector_base public: //Make it public as it will be inherited by small_vector and container //must have this public member - typedef typename real_allocator<T, SecAlloc>::type secondary_allocator_t; - typedef typename allocator_traits<secondary_allocator_t>:: - template portable_rebind_alloc<void>::type void_allocator_t; - typedef typename dtl::get_small_vector_opt<Options>::type options_t; + typedef typename real_allocator<T, SecAlloc>::type allocator_type; + typedef typename allocator_traits<allocator_type>:: + template portable_rebind_alloc<void>::type void_allocator_t; + typedef typename dtl::get_small_vector_opt<Options>::type options_t; typedef typename dtl::vector_for_small_vector - <T, SecAlloc, Options>::type base_type; - typedef typename allocator_traits<secondary_allocator_t>::pointer pointer; - typedef typename allocator_traits<secondary_allocator_t>::const_pointer const_pointer; - typedef typename allocator_traits<secondary_allocator_t>::void_pointer void_pointer; - typedef typename allocator_traits<secondary_allocator_t>::const_void_pointer const_void_pointer; - typedef small_vector_allocator<T, void_allocator_t, Options> allocator_type; + <T, SecAlloc, Options>::type base_type; + typedef typename allocator_traits<allocator_type>::pointer pointer; + typedef typename allocator_traits<allocator_type>::const_pointer const_pointer; + typedef typename allocator_traits<allocator_type>::void_pointer void_pointer; + typedef typename allocator_traits<allocator_type>::const_void_pointer const_void_pointer; + typedef small_vector_allocator<T, void_allocator_t, Options> small_allocator_type; private: BOOST_COPYABLE_AND_MOVABLE(small_vector_base) friend class small_vector_allocator<T, void_allocator_t, Options>; - BOOST_CONTAINER_FORCEINLINE + inline const_pointer internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW { return this->base_type::get_stored_allocator().internal_storage(); } - BOOST_CONTAINER_FORCEINLINE + inline pointer internal_storage() BOOST_NOEXCEPT_OR_NOTHROW { return this->base_type::get_stored_allocator().internal_storage(); } @@ -378,16 +380,16 @@ class small_vector_base protected: - BOOST_CONTAINER_FORCEINLINE explicit small_vector_base(initial_capacity_t, std::size_t initial_capacity) + inline explicit small_vector_base(initial_capacity_t, std::size_t initial_capacity) : base_type(initial_capacity_t(), this->internal_storage(), initial_capacity) {} template<class AllocFwd> - BOOST_CONTAINER_FORCEINLINE explicit small_vector_base(initial_capacity_t, std::size_t capacity, BOOST_FWD_REF(AllocFwd) a) + inline explicit small_vector_base(initial_capacity_t, std::size_t capacity, BOOST_FWD_REF(AllocFwd) a) : base_type(initial_capacity_t(), this->internal_storage(), capacity, ::boost::forward<AllocFwd>(a)) {} - BOOST_CONTAINER_FORCEINLINE explicit small_vector_base(maybe_initial_capacity_t, std::size_t initial_capacity, std::size_t initial_size) + inline explicit small_vector_base(maybe_initial_capacity_t, std::size_t initial_capacity, std::size_t initial_size) : base_type( maybe_initial_capacity_t() , (initial_capacity >= initial_size) ? this->internal_storage() : pointer() , (initial_capacity >= initial_size) ? initial_capacity : initial_size @@ -395,7 +397,7 @@ class small_vector_base {} template<class AllocFwd> - BOOST_CONTAINER_FORCEINLINE explicit small_vector_base(maybe_initial_capacity_t, std::size_t initial_capacity, std::size_t initial_size, BOOST_FWD_REF(AllocFwd) a) + inline explicit small_vector_base(maybe_initial_capacity_t, std::size_t initial_capacity, std::size_t initial_size, BOOST_FWD_REF(AllocFwd) a) : base_type(maybe_initial_capacity_t() , (initial_capacity >= initial_size) ? this->internal_storage() : pointer() , (initial_capacity >= initial_size) ? initial_capacity : initial_size @@ -409,20 +411,20 @@ class small_vector_base #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: - BOOST_CONTAINER_FORCEINLINE small_vector_base& operator=(BOOST_COPY_ASSIGN_REF(small_vector_base) other) + inline small_vector_base& operator=(BOOST_COPY_ASSIGN_REF(small_vector_base) other) { return static_cast<small_vector_base&>(this->base_type::operator=(static_cast<base_type const&>(other))); } - BOOST_CONTAINER_FORCEINLINE small_vector_base& operator=(BOOST_RV_REF(small_vector_base) other) + inline small_vector_base& operator=(BOOST_RV_REF(small_vector_base) other) { return static_cast<small_vector_base&>(this->base_type::operator=(BOOST_MOVE_BASE(base_type, other))); } - BOOST_CONTAINER_FORCEINLINE void swap(small_vector_base &other) + inline void swap(small_vector_base &other) { return this->base_type::swap(other); } #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED protected: - void move_construct_impl(base_type &x, const allocator_type &a) + void move_construct_impl(base_type &x) { - if(base_type::is_propagable_from(x.get_stored_allocator(), x.data(), a, true)){ + if(base_type::is_propagable_from(x.get_stored_allocator(), x.data(), this->base_type::get_stored_allocator(), true)){ this->steal_resources(x); } else{ @@ -452,61 +454,65 @@ struct small_vector_storage_definer typedef small_vector_storage<T, N, final_alignment> type; }; + +/// Figure out the offset of the first element. Idea taken from LLVM's SmallVector template <class T, class SecAlloc, class Options> -struct small_vector_storage_strawman - : public small_vector_base<T, SecAlloc, Options> - , public small_vector_storage_definer<T, 1, Options>::type +struct small_vector_storage_offset { - typedef typename small_vector_storage_definer<T, 1, Options>::type sm_storage_t; + typedef small_vector_base<T, SecAlloc, Options> base_type; + typedef typename small_vector_storage_definer<T, 1, Options>::type storage_type; + typename dtl::aligned_storage + < sizeof(base_type), dtl::alignment_of<base_type>::value + >::type base; + + typename dtl::aligned_storage + < sizeof(storage_type), dtl::alignment_of<storage_type>::value + > ::type storage; }; +template <class T, class SecAlloc, class Options> +inline std::size_t get_small_vector_storage_offset() +{ + typedef small_vector_storage_offset<T, SecAlloc, Options> struct_type; + return offsetof(struct_type, storage); +} + +#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-align" +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + //Internal storage hack template<class T, class VoidAlloc, class Options> -BOOST_CONTAINER_FORCEINLINE typename small_vector_allocator<T, VoidAlloc, Options>::const_pointer +inline typename small_vector_allocator<T, VoidAlloc, Options>::const_pointer small_vector_allocator<T, VoidAlloc, Options>::internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW { - typedef small_vector_storage_strawman<T, allocator_type, Options> strawman_t; - typedef typename strawman_t::sm_storage_t sm_storage_t; - - //These warnings are false positives, as we know the alignment is correct - //and aligned storage is allowed to hold any type - #if defined(BOOST_GCC) && (BOOST_GCC >= 40600) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wcast-align" - #pragma GCC diagnostic ignored "-Wstrict-aliasing" - #endif const vector_type& v = reinterpret_cast<const vector_type&>(*this); - BOOST_ASSERT((std::size_t(this) % dtl::alignment_of<strawman_t>::value) == 0); - const strawman_t &straw = static_cast<const strawman_t&>(v); - const sm_storage_t& stor = static_cast<const sm_storage_t&>(straw); - return boost::intrusive::pointer_traits<const_pointer>::pointer_to(*((const T*)stor.m_storage.data)); - #if defined(BOOST_GCC) && (BOOST_GCC >= 40600) - #pragma GCC diagnostic pop - #endif + BOOST_ASSERT((std::size_t(this) % dtl::alignment_of< small_vector_storage_offset<T, allocator_type, Options> >::value) == 0); + const char *addr = reinterpret_cast<const char*>(&v); + typedef typename boost::intrusive::pointer_traits<pointer>::template rebind_pointer<const char>::type const_char_pointer; + const_void_pointer vptr = boost::intrusive::pointer_traits<const_char_pointer>::pointer_to(*addr) + + get_small_vector_storage_offset<T, allocator_type, Options>(); + return boost::intrusive::pointer_traits<const_pointer>::static_cast_from(vptr); } template <class T, class VoidAlloc, class Options> -BOOST_CONTAINER_FORCEINLINE typename small_vector_allocator<T, VoidAlloc, Options>::pointer +inline typename small_vector_allocator<T, VoidAlloc, Options>::pointer small_vector_allocator<T, VoidAlloc, Options>::internal_storage() BOOST_NOEXCEPT_OR_NOTHROW { - typedef small_vector_storage_strawman<T, allocator_type, Options> strawman_t; - typedef typename strawman_t::sm_storage_t sm_storage_t; - - #if defined(BOOST_GCC) && (BOOST_GCC >= 40600) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wcast-align" - #pragma GCC diagnostic ignored "-Wstrict-aliasing" - #endif vector_type& v = reinterpret_cast<vector_type&>(*this); - BOOST_ASSERT((std::size_t(this) % dtl::alignment_of<strawman_t>::value) == 0); - strawman_t &straw = static_cast<strawman_t&>(v); - sm_storage_t& stor = static_cast<sm_storage_t&>(straw); - return boost::intrusive::pointer_traits<pointer>::pointer_to(*((T*)stor.m_storage.data)); - #if defined(BOOST_GCC) && (BOOST_GCC >= 40600) - #pragma GCC diagnostic pop - #endif + BOOST_ASSERT((std::size_t(this) % dtl::alignment_of< small_vector_storage_offset<T, allocator_type, Options> >::value) == 0); + char* addr = reinterpret_cast<char*>(&v); + typedef typename boost::intrusive::pointer_traits<pointer>::template rebind_pointer<char>::type char_pointer; + void_pointer vptr = boost::intrusive::pointer_traits<char_pointer>::pointer_to(*addr) + + get_small_vector_storage_offset<T, allocator_type, Options>(); + return boost::intrusive::pointer_traits<pointer>::static_cast_from(vptr); } +#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#pragma GCC diagnostic pop +#endif #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -540,11 +546,11 @@ class small_vector public: typedef small_vector_base<T, Allocator, Options> base_type; - typedef typename base_type::allocator_type allocator_type; - typedef typename base_type::size_type size_type; - typedef typename base_type::value_type value_type; + typedef typename base_type::allocator_type allocator_type; + typedef typename base_type::size_type size_type; + typedef typename base_type::value_type value_type; - BOOST_CONTAINER_FORCEINLINE static std::size_t internal_capacity() + inline static std::size_t internal_capacity() { return static_capacity; } typedef allocator_traits<typename base_type::allocator_type> allocator_traits_type; @@ -555,41 +561,41 @@ class small_vector static const size_type static_capacity = small_vector_storage_definer<T, N, Options>::type::sms_size; public: - BOOST_CONTAINER_FORCEINLINE small_vector() + inline small_vector() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value) : base_type(initial_capacity_t(), internal_capacity()) {} - BOOST_CONTAINER_FORCEINLINE explicit small_vector(const allocator_type &a) + inline explicit small_vector(const allocator_type &a) : base_type(initial_capacity_t(), internal_capacity(), a) {} - BOOST_CONTAINER_FORCEINLINE explicit small_vector(size_type n) + inline explicit small_vector(size_type n) : base_type(maybe_initial_capacity_t(), internal_capacity(), n) { this->protected_init_n(n, value_init); } - BOOST_CONTAINER_FORCEINLINE small_vector(size_type n, const allocator_type &a) + inline small_vector(size_type n, const allocator_type &a) : base_type(maybe_initial_capacity_t(), internal_capacity(), n, a) { this->protected_init_n(n, value_init); } - BOOST_CONTAINER_FORCEINLINE small_vector(size_type n, default_init_t) + inline small_vector(size_type n, default_init_t) : base_type(maybe_initial_capacity_t(), internal_capacity(), n) { this->protected_init_n(n, default_init_t()); } - BOOST_CONTAINER_FORCEINLINE small_vector(size_type n, default_init_t, const allocator_type &a) + inline small_vector(size_type n, default_init_t, const allocator_type &a) : base_type(maybe_initial_capacity_t(), internal_capacity(), n, a) { this->protected_init_n(n, default_init_t()); } - BOOST_CONTAINER_FORCEINLINE small_vector(size_type n, const value_type &v) + inline small_vector(size_type n, const value_type &v) : base_type(maybe_initial_capacity_t(), internal_capacity(), n) { this->protected_init_n(n, v); } - BOOST_CONTAINER_FORCEINLINE small_vector(size_type n, const value_type &v, const allocator_type &a) + inline small_vector(size_type n, const value_type &v, const allocator_type &a) : base_type(maybe_initial_capacity_t(), internal_capacity(), n, a) { this->protected_init_n(n, v); } template <class InIt> - BOOST_CONTAINER_FORCEINLINE small_vector(InIt first, InIt last + inline small_vector(InIt first, InIt last BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c < dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value BOOST_MOVE_I dtl::nat >::type * = 0) @@ -598,7 +604,7 @@ class small_vector { this->assign(first, last); } template <class InIt> - BOOST_CONTAINER_FORCEINLINE small_vector(InIt first, InIt last, const allocator_type& a + inline small_vector(InIt first, InIt last, const allocator_type& a BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c < dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value BOOST_MOVE_I dtl::nat >::type * = 0) @@ -606,57 +612,57 @@ class small_vector : base_type(initial_capacity_t(), internal_capacity(), a) { this->assign(first, last); } - BOOST_CONTAINER_FORCEINLINE small_vector(const small_vector &other) + inline small_vector(const small_vector &other) : base_type( initial_capacity_t(), internal_capacity() , allocator_traits_type::select_on_container_copy_construction(other.get_stored_allocator())) { this->assign(other.cbegin(), other.cend()); } - BOOST_CONTAINER_FORCEINLINE small_vector(const small_vector &other, const allocator_type &a) + inline small_vector(const small_vector &other, const allocator_type &a) : base_type(initial_capacity_t(), internal_capacity(), a) { this->assign(other.cbegin(), other.cend()); } - BOOST_CONTAINER_FORCEINLINE explicit small_vector(const base_type &other) + inline explicit small_vector(const base_type &other) : base_type( initial_capacity_t(), internal_capacity() , allocator_traits_type::select_on_container_copy_construction(other.get_stored_allocator())) { this->assign(other.cbegin(), other.cend()); } - BOOST_CONTAINER_FORCEINLINE explicit small_vector(BOOST_RV_REF(base_type) other) + inline explicit small_vector(BOOST_RV_REF(base_type) other) : base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator())) - { this->move_construct_impl(other, other.get_stored_allocator()); } + { this->base_type::move_construct_impl(other); } - BOOST_CONTAINER_FORCEINLINE small_vector(BOOST_RV_REF(small_vector) other) + inline small_vector(BOOST_RV_REF(small_vector) other) BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<value_type>::value) : base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator())) - { this->move_construct_impl(other, other.get_stored_allocator()); } + { this->base_type::move_construct_impl(other); } - BOOST_CONTAINER_FORCEINLINE small_vector(BOOST_RV_REF(small_vector) other, const allocator_type &a) + inline small_vector(BOOST_RV_REF(small_vector) other, const allocator_type &a) : base_type(initial_capacity_t(), internal_capacity(), a) - { this->move_construct_impl(other, a); } + { this->base_type::move_construct_impl(other); } #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) - BOOST_CONTAINER_FORCEINLINE small_vector(std::initializer_list<value_type> il, const allocator_type& a = allocator_type()) + inline small_vector(std::initializer_list<value_type> il, const allocator_type& a = allocator_type()) : base_type(initial_capacity_t(), internal_capacity(), a) { this->assign(il.begin(), il.end()); } #endif - BOOST_CONTAINER_FORCEINLINE small_vector& operator=(BOOST_COPY_ASSIGN_REF(small_vector) other) + inline small_vector& operator=(BOOST_COPY_ASSIGN_REF(small_vector) other) { return static_cast<small_vector&>(this->base_type::operator=(static_cast<base_type const&>(other))); } - BOOST_CONTAINER_FORCEINLINE small_vector& operator=(BOOST_RV_REF(small_vector) other) + inline small_vector& operator=(BOOST_RV_REF(small_vector) other) BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_assignable<value_type>::value && (allocator_traits_type::propagate_on_container_move_assignment::value || allocator_traits_type::is_always_equal::value)) { return static_cast<small_vector&>(this->base_type::operator=(BOOST_MOVE_BASE(base_type, other))); } - BOOST_CONTAINER_FORCEINLINE small_vector& operator=(const base_type &other) + inline small_vector& operator=(const base_type &other) { return static_cast<small_vector&>(this->base_type::operator=(other)); } - BOOST_CONTAINER_FORCEINLINE small_vector& operator=(BOOST_RV_REF(base_type) other) + inline small_vector& operator=(BOOST_RV_REF(base_type) other) { return static_cast<small_vector&>(this->base_type::operator=(boost::move(other))); } - BOOST_CONTAINER_FORCEINLINE void swap(small_vector &other) + inline void swap(small_vector &other) { return this->base_type::swap(other); } }; diff --git a/contrib/restricted/boost/container/include/boost/container/vector.hpp b/contrib/restricted/boost/container/include/boost/container/vector.hpp index d5d2f1eacb..503a80ba3d 100644 --- a/contrib/restricted/boost/container/include/boost/container/vector.hpp +++ b/contrib/restricted/boost/container/include/boost/container/vector.hpp @@ -120,15 +120,15 @@ class vec_iterator , nat>::type nonconst_iterator; public: - BOOST_CONTAINER_FORCEINLINE + inline const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW { return m_ptr; } - BOOST_CONTAINER_FORCEINLINE + inline Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW { return m_ptr; } - BOOST_CONTAINER_FORCEINLINE explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW + inline explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW : m_ptr(ptr) {} #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -136,93 +136,93 @@ class vec_iterator public: //Constructors - BOOST_CONTAINER_FORCEINLINE vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW : m_ptr() //Value initialization to achieve "null iterators" (N3644) {} - BOOST_CONTAINER_FORCEINLINE vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW : m_ptr(other.get_ptr()) {} - BOOST_CONTAINER_FORCEINLINE vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW : m_ptr(other.get_ptr()) {} - BOOST_CONTAINER_FORCEINLINE vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW { m_ptr = other.get_ptr(); return *this; } //Pointer like operators - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!!m_ptr); return *m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW { return m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!!m_ptr); return m_ptr[off]; } //Increment / Decrement - BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!!m_ptr); ++m_ptr; return *this; } - BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr++); } - BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!!m_ptr); --m_ptr; return *this; } - BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr--); } //Arithmetic - BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(m_ptr || !off); m_ptr += off; return *this; } - BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW + inline vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; } //Difference - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW { return left.m_ptr - right.m_ptr; } //Comparison operators - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_ptr == r.m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_ptr != r.m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_ptr < r.m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_ptr <= r.m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_ptr > r.m_ptr; } - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW { return l.m_ptr >= r.m_ptr; } }; @@ -233,7 +233,7 @@ struct vector_insert_ordered_cursor typedef typename iterator_traits<BiDirPosConstIt>::value_type size_type; typedef typename iterator_traits<BiDirValueIt>::reference reference; - BOOST_CONTAINER_FORCEINLINE vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit) + inline vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit) : last_position_it(posit), last_value_it(valueit) {} @@ -247,10 +247,10 @@ struct vector_insert_ordered_cursor } } - BOOST_CONTAINER_FORCEINLINE size_type get_pos() const + inline size_type get_pos() const { return *last_position_it; } - BOOST_CONTAINER_FORCEINLINE reference get_val() + inline reference get_val() { return *last_value_it; } BiDirPosConstIt last_position_it; @@ -258,11 +258,11 @@ struct vector_insert_ordered_cursor }; template<class Pointer, bool IsConst> -BOOST_CONTAINER_FORCEINLINE const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW +inline const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW { return it.get_ptr(); } template<class Pointer, bool IsConst> -BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW +inline Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW { return it.get_ptr(); } struct initial_capacity_t {}; @@ -351,7 +351,7 @@ struct vector_alloc_holder public: - BOOST_CONTAINER_FORCEINLINE + inline static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator) { (void)propagate_allocator; (void)p; (void)to_alloc; (void)from_alloc; @@ -361,7 +361,7 @@ struct vector_alloc_holder (propagate_allocator || allocator_traits_type::is_always_equal::value || allocator_traits_type::equal(from_alloc, to_alloc)); } - BOOST_CONTAINER_FORCEINLINE + inline static bool are_swap_propagable(const allocator_type &l_a, pointer l_p, const allocator_type &r_a, pointer r_p, bool const propagate_allocator) { (void)propagate_allocator; (void)l_p; (void)r_p; (void)l_a; (void)r_a; @@ -446,33 +446,33 @@ struct vector_alloc_holder holder.m_size = holder.m_capacity = 0; } - BOOST_CONTAINER_FORCEINLINE ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW + inline ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW { if(this->m_capacity){ this->deallocate(this->m_start, this->m_capacity); } } - BOOST_CONTAINER_FORCEINLINE void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW + inline void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW { this->m_size = static_cast<stored_size_type>(s); } - BOOST_CONTAINER_FORCEINLINE void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW + inline void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW { this->m_size = static_cast<stored_size_type>(this->m_size - s); } - BOOST_CONTAINER_FORCEINLINE void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW + inline void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW { this->m_size = static_cast<stored_size_type>(this->m_size + s); } - BOOST_CONTAINER_FORCEINLINE void set_stored_capacity(size_type c) BOOST_NOEXCEPT_OR_NOTHROW + inline void set_stored_capacity(size_type c) BOOST_NOEXCEPT_OR_NOTHROW { this->m_capacity = static_cast<stored_size_type>(c); } - BOOST_CONTAINER_FORCEINLINE pointer allocation_command(boost::container::allocation_type command, + inline pointer allocation_command(boost::container::allocation_type command, size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse) { typedef typename dtl::version<allocator_type>::type alloc_version; return this->priv_allocation_command(alloc_version(), command, limit_size, prefer_in_recvd_out_size, reuse); } - BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type n) + inline pointer allocate(size_type n) { const size_type max_alloc = allocator_traits_type::max_size(this->alloc()); const size_type max = max_alloc <= stored_size_type(-1) ? max_alloc : stored_size_type(-1); @@ -482,7 +482,7 @@ struct vector_alloc_holder return allocator_traits_type::allocate(this->alloc(), n); } - BOOST_CONTAINER_FORCEINLINE void deallocate(const pointer &p, size_type n) + inline void deallocate(const pointer &p, size_type n) { allocator_traits_type::deallocate(this->alloc(), p, n); } @@ -539,22 +539,22 @@ struct vector_alloc_holder x.m_size = x.m_capacity = 0; } - BOOST_CONTAINER_FORCEINLINE allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW + inline allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW { return *this; } - BOOST_CONTAINER_FORCEINLINE const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW + inline const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW { return *this; } - BOOST_CONTAINER_FORCEINLINE const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW + inline const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW { return m_start; } - BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW + inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return m_capacity; } - BOOST_CONTAINER_FORCEINLINE void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW + inline void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW { m_start = p; } - BOOST_CONTAINER_FORCEINLINE void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW + inline void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT( c <= stored_size_type(-1)); this->set_stored_capacity(c); } - static BOOST_CONTAINER_FORCEINLINE void on_capacity_overflow() + static inline void on_capacity_overflow() { } private: @@ -680,26 +680,26 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0> (this->alloc(), boost::movelib::to_raw_pointer(holder.start()), n, boost::movelib::to_raw_pointer(this->start())); } - static BOOST_CONTAINER_FORCEINLINE void on_capacity_overflow() + static inline void on_capacity_overflow() { allocator_type::on_capacity_overflow(); } - BOOST_CONTAINER_FORCEINLINE void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW + inline void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW { this->m_size = static_cast<stored_size_type>(s); } - BOOST_CONTAINER_FORCEINLINE void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW + inline void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW { this->m_size = static_cast<stored_size_type>(this->m_size - s); } - BOOST_CONTAINER_FORCEINLINE void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW + inline void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW { this->m_size = static_cast<stored_size_type>(this->m_size + s); } - BOOST_CONTAINER_FORCEINLINE void priv_first_allocation(size_type cap) + inline void priv_first_allocation(size_type cap) { if(cap > allocator_type::internal_capacity){ on_capacity_overflow(); } } - BOOST_CONTAINER_FORCEINLINE void deep_swap(vector_alloc_holder &x) + inline void deep_swap(vector_alloc_holder &x) { this->priv_deep_swap(x); } template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion> @@ -712,29 +712,29 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0> this->priv_deep_swap(x); } - BOOST_CONTAINER_FORCEINLINE void swap_resources(vector_alloc_holder &) BOOST_NOEXCEPT_OR_NOTHROW + inline void swap_resources(vector_alloc_holder &) BOOST_NOEXCEPT_OR_NOTHROW { //Containers with version 0 allocators can't be moved without moving elements one by one on_capacity_overflow(); } - BOOST_CONTAINER_FORCEINLINE void steal_resources(vector_alloc_holder &) + inline void steal_resources(vector_alloc_holder &) { //Containers with version 0 allocators can't be moved without moving elements one by one on_capacity_overflow(); } - BOOST_CONTAINER_FORCEINLINE allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW + inline allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW { return *this; } - BOOST_CONTAINER_FORCEINLINE const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW + inline const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW { return *this; } - BOOST_CONTAINER_FORCEINLINE bool try_expand_fwd(size_type at_least) + inline bool try_expand_fwd(size_type at_least) { return !at_least; } - BOOST_CONTAINER_FORCEINLINE pointer start() const BOOST_NOEXCEPT_OR_NOTHROW + inline pointer start() const BOOST_NOEXCEPT_OR_NOTHROW { return allocator_type::internal_storage(); } - BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW + inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return allocator_type::internal_capacity; } stored_size_type m_size; @@ -822,7 +822,7 @@ private: typedef value_less<T> value_less_t; //If provided the stored_size option must specify a type that is equal or a type that is smaller. - BOOST_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) || + BOOST_CONTAINER_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) || dtl::is_same<stored_size_type, alloc_size_type>::value) ); typedef typename dtl::version<allocator_type>::type alloc_version; @@ -837,11 +837,11 @@ private: protected: - BOOST_CONTAINER_FORCEINLINE + inline static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator) { return alloc_holder_t::is_propagable_from(from_alloc, p, to_alloc, propagate_allocator); } - BOOST_CONTAINER_FORCEINLINE + inline static bool are_swap_propagable( const allocator_type &l_a, pointer l_p , const allocator_type &r_a, pointer r_p, bool const propagate_allocator) { return alloc_holder_t::are_swap_propagable(l_a, l_p, r_a, r_p, propagate_allocator); } @@ -855,23 +855,23 @@ private: protected: - BOOST_CONTAINER_FORCEINLINE void steal_resources(vector &x) + inline void steal_resources(vector &x) { return this->m_holder.steal_resources(x.m_holder); } - BOOST_CONTAINER_FORCEINLINE void protected_set_size(size_type n) + inline void protected_set_size(size_type n) { this->m_holder.m_size = static_cast<stored_size_type>(n); } template<class AllocFwd> - BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type cap, BOOST_FWD_REF(AllocFwd) a) + inline vector(initial_capacity_t, pointer initial_memory, size_type cap, BOOST_FWD_REF(AllocFwd) a) : m_holder(initial_capacity_t(), initial_memory, cap, ::boost::forward<AllocFwd>(a)) {} - BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type cap) + inline vector(initial_capacity_t, pointer initial_memory, size_type cap) : m_holder(initial_capacity_t(), initial_memory, cap) {} template<class SizeType, class AllocFwd> - BOOST_CONTAINER_FORCEINLINE vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity, BOOST_FWD_REF(AllocFwd) a) + inline vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity, BOOST_FWD_REF(AllocFwd) a) : m_holder(maybe_initial_capacity_t(), p, initial_capacity, ::boost::forward<AllocFwd>(a)) { #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS @@ -880,7 +880,7 @@ private: } template<class SizeType> - BOOST_CONTAINER_FORCEINLINE vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity) + inline vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity) : m_holder(maybe_initial_capacity_t(), p, initial_capacity) { #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS @@ -1094,7 +1094,7 @@ private: //! <b>Complexity</b>: Constant. vector(BOOST_RV_REF(vector) x) BOOST_NOEXCEPT_OR_NOTHROW : m_holder(boost::move(x.m_holder)) - { BOOST_STATIC_ASSERT((!allocator_traits_type::is_partially_propagable::value)); } + { BOOST_CONTAINER_STATIC_ASSERT((!allocator_traits_type::is_partially_propagable::value)); } #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) //! <b>Effects</b>: Constructs a vector that will use a copy of allocator a @@ -1202,7 +1202,7 @@ private: //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor/assignment throws. //! //! <b>Complexity</b>: Linear to the number of elements in x. - BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x) + inline vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x) { if (BOOST_LIKELY(&x != this)){ this->priv_copy_assign(x); @@ -1214,7 +1214,7 @@ private: //! <b>Effects</b>: Make *this container contains elements from il. //! //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()). - BOOST_CONTAINER_FORCEINLINE vector& operator=(std::initializer_list<value_type> il) + inline vector& operator=(std::initializer_list<value_type> il) { this->assign(il.begin(), il.end()); return *this; @@ -1232,7 +1232,7 @@ private: //! <b>Complexity</b>: Constant if allocator_traits_type:: //! propagate_on_container_move_assignment is true or //! this->get>allocator() == x.get_allocator(). Linear otherwise. - BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_RV_REF(vector) x) + inline vector& operator=(BOOST_RV_REF(vector) x) BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value || allocator_traits_type::is_always_equal::value) { @@ -1255,7 +1255,7 @@ private: //! //! <b>Note</b>: Non-standard extension to support static_vector template<class OtherA> - BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and + inline typename dtl::enable_if_and < vector& , dtl::is_version<typename real_allocator<T, OtherA>::type, 0> , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type> @@ -1277,7 +1277,7 @@ private: //! //! <b>Note</b>: Non-standard extension to support static_vector template<class OtherA> - BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and + inline typename dtl::enable_if_and < vector& , dtl::is_version<typename real_allocator<T, OtherA>::type, 0> , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type> @@ -1334,7 +1334,7 @@ private: //! <b>Throws</b>: If memory allocation throws or //! T's constructor from dereferencing iniializer_list iterator throws. //! - BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<T> il) + inline void assign(std::initializer_list<T> il) { this->assign(il.begin(), il.end()); } @@ -1405,7 +1405,7 @@ private: //! T's copy/move constructor/assignment throws. //! //! <b>Complexity</b>: Linear to n. - BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const value_type& val) + inline void assign(size_type n, const value_type& val) { this->assign(cvalue_iterator(val, n), cvalue_iterator()); } //! <b>Effects</b>: Returns a copy of the internal allocator. @@ -1413,7 +1413,7 @@ private: //! <b>Throws</b>: If allocator's copy constructor throws. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW { return this->m_holder.alloc(); } //! <b>Effects</b>: Returns a reference to the internal allocator. @@ -1423,7 +1423,7 @@ private: //! <b>Complexity</b>: Constant. //! //! <b>Note</b>: Non-standard extension. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW { return this->m_holder.alloc(); } @@ -1434,7 +1434,7 @@ private: //! <b>Complexity</b>: Constant. //! //! <b>Note</b>: Non-standard extension. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW { return this->m_holder.alloc(); } @@ -1449,7 +1449,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator begin() BOOST_NOEXCEPT_OR_NOTHROW { return iterator(this->m_holder.start()); } //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector. @@ -1457,7 +1457,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW { return const_iterator(this->m_holder.start()); } //! <b>Effects</b>: Returns an iterator to the end of the vector. @@ -1465,7 +1465,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator end() BOOST_NOEXCEPT_OR_NOTHROW { iterator it (this->m_holder.start()); it += difference_type(this->m_holder.m_size); @@ -1477,7 +1477,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW { return this->cend(); } //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning @@ -1486,7 +1486,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW { return reverse_iterator(this->end()); } //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning @@ -1495,7 +1495,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW { return this->crbegin(); } //! <b>Effects</b>: Returns a reverse_iterator pointing to the end @@ -1504,7 +1504,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW { return reverse_iterator(this->begin()); } //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end @@ -1513,7 +1513,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW { return this->crend(); } //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector. @@ -1521,7 +1521,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW { return const_iterator(this->m_holder.start()); } //! <b>Effects</b>: Returns a const_iterator to the end of the vector. @@ -1529,7 +1529,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW { const_iterator it (this->m_holder.start()); it += difference_type(this->m_holder.m_size); @@ -1542,7 +1542,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW { return const_reverse_iterator(this->end());} //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end @@ -1551,7 +1551,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW { return const_reverse_iterator(this->begin()); } ////////////////////////////////////////////// @@ -1565,7 +1565,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline bool empty() const BOOST_NOEXCEPT_OR_NOTHROW { return !this->m_holder.m_size; } //! <b>Effects</b>: Returns the number of the elements contained in the vector. @@ -1573,7 +1573,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type size() const BOOST_NOEXCEPT_OR_NOTHROW { return this->m_holder.m_size; } //! <b>Effects</b>: Returns the largest possible size of the vector. @@ -1581,7 +1581,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW { return allocator_traits_type::max_size(this->m_holder.alloc()); } //! <b>Effects</b>: Inserts or erases elements at the end such that @@ -1590,7 +1590,7 @@ private: //! <b>Throws</b>: If memory allocation throws, or T's copy/move or value initialization throws. //! //! <b>Complexity</b>: Linear to the difference between size() and new_size. - BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size) + inline void resize(size_type new_size) { this->priv_resize(new_size, value_init, alloc_version()); } //! <b>Effects</b>: Inserts or erases elements at the end such that @@ -1601,7 +1601,7 @@ private: //! <b>Complexity</b>: Linear to the difference between size() and new_size. //! //! <b>Note</b>: Non-standard extension - BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size, default_init_t) + inline void resize(size_type new_size, default_init_t) { this->priv_resize(new_size, default_init, alloc_version()); } //! <b>Effects</b>: Inserts or erases elements at the end such that @@ -1610,7 +1610,7 @@ private: //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws. //! //! <b>Complexity</b>: Linear to the difference between size() and new_size. - BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size, const T& x) + inline void resize(size_type new_size, const T& x) { this->priv_resize(new_size, x, alloc_version()); } //! <b>Effects</b>: Number of elements for which memory has been allocated. @@ -1619,7 +1619,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return this->m_holder.capacity(); } //! <b>Effects</b>: If n is less than or equal to capacity(), this call has no @@ -1628,7 +1628,7 @@ private: //! n; otherwise, capacity() is unchanged. In either case, size() is unchanged. //! //! <b>Throws</b>: If memory allocation allocation throws or T's copy/move constructor throws. - BOOST_CONTAINER_FORCEINLINE void reserve(size_type new_cap) + inline void reserve(size_type new_cap) { if (this->capacity() < new_cap){ this->priv_move_to_new_buffer(new_cap, alloc_version()); @@ -1641,7 +1641,7 @@ private: //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws. //! //! <b>Complexity</b>: Linear to size(). - BOOST_CONTAINER_FORCEINLINE void shrink_to_fit() + inline void shrink_to_fit() { this->priv_shrink_to_fit(alloc_version()); } ////////////////////////////////////////////// @@ -1658,7 +1658,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference front() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference front() BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!this->empty()); return *this->m_holder.start(); @@ -1672,7 +1672,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!this->empty()); return *this->m_holder.start(); @@ -1686,7 +1686,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference back() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference back() BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!this->empty()); return this->m_holder.start()[difference_type(this->m_holder.m_size - 1u)]; @@ -1700,7 +1700,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!this->empty()); return this->m_holder.start()[this->m_holder.m_size - 1]; @@ -1714,7 +1714,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(this->m_holder.m_size > n); return this->m_holder.start()[difference_type(n)]; @@ -1728,7 +1728,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(this->m_holder.m_size > n); @@ -1746,7 +1746,7 @@ private: //! <b>Complexity</b>: Constant. //! //! <b>Note</b>: Non-standard extension - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(this->m_holder.m_size >= n); @@ -1764,7 +1764,7 @@ private: //! <b>Complexity</b>: Constant. //! //! <b>Note</b>: Non-standard extension - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(this->m_holder.m_size >= n); @@ -1781,7 +1781,7 @@ private: //! <b>Complexity</b>: Constant. //! //! <b>Note</b>: Non-standard extension - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW { //Range check assert done in priv_index_of @@ -1798,7 +1798,7 @@ private: //! <b>Complexity</b>: Constant. //! //! <b>Note</b>: Non-standard extension - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW { //Range check assert done in priv_index_of @@ -1813,7 +1813,7 @@ private: //! <b>Throws</b>: range_error if n >= size() //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference at(size_type n) + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference at(size_type n) { this->priv_throw_if_out_of_range(n); return this->m_holder.start()[difference_type(n)]; @@ -1827,7 +1827,7 @@ private: //! <b>Throws</b>: range_error if n >= size() //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference at(size_type n) const + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference at(size_type n) const { this->priv_throw_if_out_of_range(n); return this->m_holder.start()[n]; @@ -1845,7 +1845,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE T* data() BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline T* data() BOOST_NOEXCEPT_OR_NOTHROW { return this->priv_raw_begin(); } //! <b>Returns</b>: A pointer such that [data(),data() + size()) is a valid range. @@ -1854,7 +1854,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const T * data() const BOOST_NOEXCEPT_OR_NOTHROW + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const T * data() const BOOST_NOEXCEPT_OR_NOTHROW { return this->priv_raw_begin(); } ////////////////////////////////////////////// @@ -1874,7 +1874,7 @@ private: //! //! <b>Complexity</b>: Amortized constant time. template<class ...Args> - BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_FWD_REF(Args)...args) + inline reference emplace_back(BOOST_FWD_REF(Args)...args) { T* const p = this->priv_raw_end(); if (BOOST_LIKELY(this->room_enough())){ @@ -1899,7 +1899,7 @@ private: //! //! <b>Note</b>: Non-standard extension. template<class ...Args> - BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_FWD_REF(Args)...args) + inline bool stable_emplace_back(BOOST_FWD_REF(Args)...args) { const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u)); if (BOOST_LIKELY(is_room_enough)){ @@ -1921,7 +1921,7 @@ private: //! <b>Complexity</b>: If position is end(), amortized constant time //! Linear time otherwise. template<class ...Args> - BOOST_CONTAINER_FORCEINLINE iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args) + inline iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args) { BOOST_ASSERT(this->priv_in_range_or_end(position)); //Just call more general insert(pos, size, value) and return iterator @@ -1934,7 +1934,7 @@ private: #define BOOST_CONTAINER_VECTOR_EMPLACE_CODE(N) \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\ + inline reference emplace_back(BOOST_MOVE_UREF##N)\ {\ T* const p = this->priv_raw_end();\ if (BOOST_LIKELY(this->room_enough())){\ @@ -1951,7 +1951,7 @@ private: }\ \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_MOVE_UREF##N)\ + inline bool stable_emplace_back(BOOST_MOVE_UREF##N)\ {\ const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));\ if (BOOST_LIKELY(is_room_enough)){\ @@ -1963,7 +1963,7 @@ private: }\ \ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \ - BOOST_CONTAINER_FORCEINLINE iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ + inline iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\ {\ BOOST_ASSERT(this->priv_in_range_or_end(pos));\ typedef dtl::insert_emplace_proxy_arg##N<allocator_type BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\ @@ -2029,7 +2029,7 @@ private: //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor throws. //! //! <b>Complexity</b>: Linear to n. - BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator p, size_type n, const T& x) + inline iterator insert(const_iterator p, size_type n, const T& x) { BOOST_ASSERT(this->priv_in_range_or_end(p)); dtl::insert_n_copies_proxy<allocator_type> proxy(x); @@ -2069,7 +2069,7 @@ private: #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) template <class FwdIt> - BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, FwdIt first, FwdIt last + inline iterator insert(const_iterator pos, FwdIt first, FwdIt last , typename dtl::disable_if_or < void , dtl::is_convertible<FwdIt, size_type> @@ -2106,7 +2106,7 @@ private: //! a non-standard extension. #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) template <class InIt> - BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, size_type num, InIt first, InIt last) + inline iterator insert(const_iterator pos, size_type num, InIt first, InIt last) { BOOST_ASSERT(this->priv_in_range_or_end(pos)); BOOST_ASSERT(dtl::is_input_iterator<InIt>::value || @@ -2125,7 +2125,7 @@ private: //! <b>Returns</b>: an iterator to the first inserted element or position if first == last. //! //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()). - BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator position, std::initializer_list<value_type> il) + inline iterator insert(const_iterator position, std::initializer_list<value_type> il) { //Assertion done in insert() return this->insert(position, il.begin(), il.end()); @@ -2137,7 +2137,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant time. - BOOST_CONTAINER_FORCEINLINE void pop_back() BOOST_NOEXCEPT_OR_NOTHROW + inline void pop_back() BOOST_NOEXCEPT_OR_NOTHROW { BOOST_ASSERT(!this->empty()); //Destroy last element @@ -2199,7 +2199,7 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_FORCEINLINE void swap(vector& x) + inline void swap(vector& x) BOOST_NOEXCEPT_IF( ((allocator_traits_type::propagate_on_container_swap::value || allocator_traits_type::is_always_equal::value) && !dtl::is_version<allocator_type, 0>::value)) @@ -2217,7 +2217,7 @@ private: //! //! <b>Note</b>: Non-standard extension to support static_vector template<class OtherA> - BOOST_CONTAINER_FORCEINLINE void swap(vector<T, OtherA, Options> & x + inline void swap(vector<T, OtherA, Options> & x , typename dtl::enable_if_and < void , dtl::is_version<typename real_allocator<T, OtherA>::type, 0> @@ -2233,19 +2233,19 @@ private: //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Linear to the number of elements in the container. - BOOST_CONTAINER_FORCEINLINE void clear() BOOST_NOEXCEPT_OR_NOTHROW + inline void clear() BOOST_NOEXCEPT_OR_NOTHROW { this->priv_destroy_all(); } //! <b>Effects</b>: Returns true if x and y are equal //! //! <b>Complexity</b>: Linear to the number of elements in the container. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator==(const vector& x, const vector& y) + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator==(const vector& x, const vector& y) { return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); } //! <b>Effects</b>: Returns true if x and y are unequal //! //! <b>Complexity</b>: Linear to the number of elements in the container. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const vector& x, const vector& y) + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator!=(const vector& x, const vector& y) { return !(x == y); } //! <b>Effects</b>: Returns true if x is less than y @@ -2257,25 +2257,25 @@ private: //! <b>Effects</b>: Returns true if x is greater than y //! //! <b>Complexity</b>: Linear to the number of elements in the container. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator>(const vector& x, const vector& y) + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>(const vector& x, const vector& y) { return y < x; } //! <b>Effects</b>: Returns true if x is equal or less than y //! //! <b>Complexity</b>: Linear to the number of elements in the container. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const vector& x, const vector& y) + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator<=(const vector& x, const vector& y) { return !(y < x); } //! <b>Effects</b>: Returns true if x is equal or greater than y //! //! <b>Complexity</b>: Linear to the number of elements in the container. - BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const vector& x, const vector& y) + BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>=(const vector& x, const vector& y) { return !(x < y); } //! <b>Effects</b>: x.swap(y) //! //! <b>Complexity</b>: Constant. - BOOST_CONTAINER_FORCEINLINE friend void swap(vector& x, vector& y) + inline friend void swap(vector& x, vector& y) BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT(x.swap(y))) { x.swap(y); } @@ -2297,18 +2297,18 @@ private: //Absolutely experimental. This function might change, disappear or simply crash! template<class BiDirPosConstIt, class BiDirValueIt> - BOOST_CONTAINER_FORCEINLINE void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it) + inline void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it) { typedef vector_insert_ordered_cursor<BiDirPosConstIt, BiDirValueIt> inserter_t; return this->priv_insert_ordered_at(element_count, inserter_t(last_position_it, last_value_it)); } template<class InputIt> - BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last) + inline void merge(InputIt first, InputIt last) { this->merge(first, last, value_less_t()); } template<class InputIt, class Compare> - BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last, Compare comp) + inline void merge(InputIt first, InputIt last, Compare comp) { size_type const s = this->size(); size_type const c = this->capacity(); @@ -2329,11 +2329,11 @@ private: } template<class InputIt> - BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last) + inline void merge_unique(InputIt first, InputIt last) { this->merge_unique(first, last, value_less_t()); } template<class InputIt, class Compare> - BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last, Compare comp) + inline void merge_unique(InputIt first, InputIt last, Compare comp) { size_type const old_size = this->size(); this->priv_set_difference_back(first, last, comp); @@ -2436,7 +2436,7 @@ private: } template<class FwdIt, class Compare> - BOOST_CONTAINER_FORCEINLINE void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0) + inline void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0) { alloc_holder_t::on_capacity_overflow(); } @@ -2498,13 +2498,13 @@ private: new_values_destroyer.release(); } - BOOST_CONTAINER_FORCEINLINE bool room_enough() const + inline bool room_enough() const { return this->m_holder.m_size != this->m_holder.capacity(); } - BOOST_CONTAINER_FORCEINLINE pointer back_ptr() const + inline pointer back_ptr() const { return this->m_holder.start() + difference_type(this->m_holder.m_size); } - BOOST_CONTAINER_FORCEINLINE size_type priv_index_of(pointer p) const + inline size_type priv_index_of(pointer p) const { BOOST_ASSERT(this->m_holder.start() <= p); BOOST_ASSERT(p <= (this->m_holder.start()+difference_type(this->size()))); @@ -2607,7 +2607,7 @@ private: } template<class Vector> //Template it to avoid it in explicit instantiations - BOOST_CONTAINER_FORCEINLINE void priv_swap(Vector &x, dtl::true_type) //version_0 + inline void priv_swap(Vector &x, dtl::true_type) //version_0 { this->m_holder.deep_swap(x.m_holder); } template<class Vector> //Template it to avoid it in explicit instantiations @@ -2653,16 +2653,16 @@ private: dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>()); } - BOOST_CONTAINER_FORCEINLINE void priv_move_to_new_buffer(size_type, version_0) + inline void priv_move_to_new_buffer(size_type, version_0) { alloc_holder_t::on_capacity_overflow(); } - BOOST_CONTAINER_FORCEINLINE dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> > priv_dummy_empty_proxy() + inline dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> > priv_dummy_empty_proxy() { return dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> > (::boost::make_move_iterator((T *)0)); } - BOOST_CONTAINER_FORCEINLINE void priv_move_to_new_buffer(size_type new_cap, version_1) + inline void priv_move_to_new_buffer(size_type new_cap, version_1) { //There is not enough memory, allocate a new buffer //Pass the hint so that allocators can take advantage of this. @@ -2735,34 +2735,34 @@ private: } template<class U> - BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) u) + inline iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) u) { return this->emplace(p, ::boost::forward<U>(u)); } template <class U> - BOOST_CONTAINER_FORCEINLINE void priv_push_back(BOOST_FWD_REF(U) u) + inline void priv_push_back(BOOST_FWD_REF(U) u) { this->emplace_back(::boost::forward<U>(u)); } //Overload to support compiler errors that instantiate too much - BOOST_CONTAINER_FORCEINLINE void priv_push_back(::boost::move_detail::nat) + inline void priv_push_back(::boost::move_detail::nat) {} - BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const_iterator, ::boost::move_detail::nat) + inline iterator priv_insert(const_iterator, ::boost::move_detail::nat) { return iterator(); } - BOOST_CONTAINER_FORCEINLINE dtl::insert_n_copies_proxy<allocator_type> priv_resize_proxy(const T &x) + inline dtl::insert_n_copies_proxy<allocator_type> priv_resize_proxy(const T &x) { return dtl::insert_n_copies_proxy<allocator_type>(x); } - BOOST_CONTAINER_FORCEINLINE dtl::insert_default_initialized_n_proxy<allocator_type> priv_resize_proxy(default_init_t) + inline dtl::insert_default_initialized_n_proxy<allocator_type> priv_resize_proxy(default_init_t) { return dtl::insert_default_initialized_n_proxy<allocator_type>(); } - BOOST_CONTAINER_FORCEINLINE dtl::insert_value_initialized_n_proxy<allocator_type> priv_resize_proxy(value_init_t) + inline dtl::insert_value_initialized_n_proxy<allocator_type> priv_resize_proxy(value_init_t) { return dtl::insert_value_initialized_n_proxy<allocator_type>(); } - BOOST_CONTAINER_FORCEINLINE void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW + inline void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW {} void priv_shrink_to_fit(version_1) @@ -2808,7 +2808,7 @@ private: } template <class InsertionProxy> - BOOST_CONTAINER_FORCEINLINE iterator priv_insert_forward_range_no_capacity + inline iterator priv_insert_forward_range_no_capacity (T * const, const size_type, const InsertionProxy , version_0) { return alloc_holder_t::on_capacity_overflow(), iterator(); @@ -2879,7 +2879,7 @@ private: } template <class InsertionProxy> - BOOST_CONTAINER_FORCEINLINE iterator priv_insert_forward_range + inline iterator priv_insert_forward_range (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy) { BOOST_ASSERT(this->m_holder.capacity() >= this->m_holder.m_size); @@ -3017,14 +3017,14 @@ private: } private: - BOOST_CONTAINER_FORCEINLINE T *priv_raw_begin() const + inline T *priv_raw_begin() const { return boost::movelib::to_raw_pointer(m_holder.start()); } - BOOST_CONTAINER_FORCEINLINE T* priv_raw_end() const + inline T* priv_raw_end() const { return this->priv_raw_begin() + this->m_holder.m_size; } template <class InsertionProxy> //inline single-element version as it is significantly smaller - BOOST_CONTAINER_FORCEINLINE void priv_insert_forward_range_expand_forward + inline void priv_insert_forward_range_expand_forward (T* const raw_pos, const size_type, InsertionProxy insert_range_proxy, dtl::true_type) { BOOST_ASSERT(this->room_enough()); @@ -3051,7 +3051,7 @@ private: } template <class InsertionProxy> - BOOST_CONTAINER_FORCEINLINE void priv_insert_forward_range_expand_forward + inline void priv_insert_forward_range_expand_forward (T* const raw_pos, const size_type n, InsertionProxy insert_range_proxy, dtl::false_type) { //There is enough memory @@ -3113,12 +3113,12 @@ private: } } - BOOST_CONTAINER_FORCEINLINE bool priv_in_range(const_iterator pos) const + inline bool priv_in_range(const_iterator pos) const { return (this->begin() <= pos) && (pos < this->end()); } - BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const + inline bool priv_in_range_or_end(const_iterator pos) const { return (this->begin() <= pos) && (pos <= this->end()); } diff --git a/contrib/restricted/boost/container/src/dlmalloc_2_8_6.c b/contrib/restricted/boost/container/src/dlmalloc_2_8_6.c index 3424f59b17..63ef0d3fb8 100644 --- a/contrib/restricted/boost/container/src/dlmalloc_2_8_6.c +++ b/contrib/restricted/boost/container/src/dlmalloc_2_8_6.c @@ -4013,6 +4013,7 @@ static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { break; } assert(nfences >= 2); + (void) nfences; //Added by iG to silence warning about unused nfences /* Insert the rest of old top into a bin as an ordinary free chunk */ if (csp != old_top) { diff --git a/contrib/restricted/boost/container/src/dlmalloc_ext_2_8_6.c b/contrib/restricted/boost/container/src/dlmalloc_ext_2_8_6.c index 2bdd3afdf7..778dd88247 100644 --- a/contrib/restricted/boost/container/src/dlmalloc_ext_2_8_6.c +++ b/contrib/restricted/boost/container/src/dlmalloc_ext_2_8_6.c @@ -1224,14 +1224,12 @@ size_t boost_cont_allocated_memory() if (is_initialized(m)) { size_t nfree = SIZE_T_ONE; /* top always free */ size_t mfree = m->topsize + TOP_FOOT_SIZE; - size_t sum = mfree; msegmentptr s = &m->seg; while (s != 0) { mchunkptr q = align_as_chunk(s->base); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { size_t sz = chunksize(q); - sum += sz; if (!is_inuse(q)) { mfree += sz; ++nfree; diff --git a/contrib/restricted/boost/container/src/pool_resource.cpp b/contrib/restricted/boost/container/src/pool_resource.cpp index 631c9d8f4c..512f414a76 100644 --- a/contrib/restricted/boost/container/src/pool_resource.cpp +++ b/contrib/restricted/boost/container/src/pool_resource.cpp @@ -20,7 +20,6 @@ #include <boost/container/detail/placement_new.hpp> #include <boost/intrusive/linear_slist_algorithms.hpp> #include <boost/intrusive/detail/math.hpp> -#include <boost/static_assert.hpp> #include <cstddef> @@ -96,10 +95,10 @@ class pool_data_t //pool_resource //Detect overflow in ceil_pow2 -BOOST_STATIC_ASSERT(pool_options_default_max_blocks_per_chunk <= (std::size_t(-1)/2u+1u)); +BOOST_CONTAINER_STATIC_ASSERT(pool_options_default_max_blocks_per_chunk <= (std::size_t(-1)/2u+1u)); //Sanity checks -BOOST_STATIC_ASSERT(bi::detail::static_is_pow2<pool_options_default_max_blocks_per_chunk>::value); -BOOST_STATIC_ASSERT(bi::detail::static_is_pow2<pool_options_minimum_largest_required_pool_block>::value); +BOOST_CONTAINER_STATIC_ASSERT(bi::detail::static_is_pow2<pool_options_default_max_blocks_per_chunk>::value); +BOOST_CONTAINER_STATIC_ASSERT(bi::detail::static_is_pow2<pool_options_minimum_largest_required_pool_block>::value); //unsynchronized_pool_resource diff --git a/contrib/restricted/boost/container/ya.make b/contrib/restricted/boost/container/ya.make index b2617bbe88..37dd4b3f04 100644 --- a/contrib/restricted/boost/container/ya.make +++ b/contrib/restricted/boost/container/ya.make @@ -9,9 +9,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/container/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/container/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/container_hash/include/boost/container_hash/is_range.hpp b/contrib/restricted/boost/container_hash/include/boost/container_hash/is_range.hpp index f0b067ff8c..e6adbce565 100644 --- a/contrib/restricted/boost/container_hash/include/boost/container_hash/is_range.hpp +++ b/contrib/restricted/boost/container_hash/include/boost/container_hash/is_range.hpp @@ -14,8 +14,12 @@ namespace boost namespace hash_detail { +template<class T> struct iterator_traits: std::iterator_traits<T> {}; +template<> struct iterator_traits< void* > {}; +template<> struct iterator_traits< void const* > {}; + template<class T, class It> - std::integral_constant< bool, !std::is_same<typename std::remove_cv<T>::type, typename std::iterator_traits<It>::value_type>::value > + std::integral_constant< bool, !std::is_same<typename std::remove_cv<T>::type, typename iterator_traits<It>::value_type>::value > is_range_check( It first, It last ); template<class T> decltype( is_range_check<T>( std::declval<T const&>().begin(), std::declval<T const&>().end() ) ) is_range_( int ); diff --git a/contrib/restricted/boost/container_hash/include/boost/container_hash/is_tuple_like.hpp b/contrib/restricted/boost/container_hash/include/boost/container_hash/is_tuple_like.hpp index 48728cd90b..bd34ee8c74 100644 --- a/contrib/restricted/boost/container_hash/include/boost/container_hash/is_tuple_like.hpp +++ b/contrib/restricted/boost/container_hash/include/boost/container_hash/is_tuple_like.hpp @@ -26,7 +26,7 @@ template<class T> struct is_tuple_like_<T, std::integral_constant<bool, std::tup namespace container_hash { -template<class T> struct is_tuple_like: hash_detail::is_tuple_like_<T> +template<class T> struct is_tuple_like: hash_detail::is_tuple_like_< typename std::remove_cv<T>::type > { }; diff --git a/contrib/restricted/boost/container_hash/ya.make b/contrib/restricted/boost/container_hash/ya.make index 94eb38f62f..5c516aa57c 100644 --- a/contrib/restricted/boost/container_hash/ya.make +++ b/contrib/restricted/boost/container_hash/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/container_hash/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/container_hash/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/context/fcontext_impl/ya.make b/contrib/restricted/boost/context/fcontext_impl/ya.make index 07d98b1b86..48eed3e403 100644 --- a/contrib/restricted/boost/context/fcontext_impl/ya.make +++ b/contrib/restricted/boost/context/fcontext_impl/ya.make @@ -4,9 +4,9 @@ LIBRARY() WITHOUT_LICENSE_TEXTS() -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/context/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/context/archive/boost-1.85.0.tar.gz) LICENSE(BSL-1.0) diff --git a/contrib/restricted/boost/context/impl_common/ya.make b/contrib/restricted/boost/context/impl_common/ya.make index 462fd5312a..4724feba1c 100644 --- a/contrib/restricted/boost/context/impl_common/ya.make +++ b/contrib/restricted/boost/context/impl_common/ya.make @@ -4,9 +4,9 @@ LIBRARY() WITHOUT_LICENSE_TEXTS() -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/context/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/context/archive/boost-1.85.0.tar.gz) LICENSE(BSL-1.0) diff --git a/contrib/restricted/boost/context/src/asm/jump_i386_sysv_elf_gas.S b/contrib/restricted/boost/context/src/asm/jump_i386_sysv_elf_gas.S new file mode 100644 index 0000000000..ed83717ce2 --- /dev/null +++ b/contrib/restricted/boost/context/src/asm/jump_i386_sysv_elf_gas.S @@ -0,0 +1,99 @@ +/* + Copyright Oliver Kowalke 2009. + 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) +*/ + +/**************************************************************************************** + * * + * ---------------------------------------------------------------------------------- * + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * + * ---------------------------------------------------------------------------------- * + * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * + * ---------------------------------------------------------------------------------- * + * | fc_mxcsr|fc_x87_cw| guard | EDI | ESI | EBX | EBP | EIP | * + * ---------------------------------------------------------------------------------- * + * ---------------------------------------------------------------------------------- * + * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * + * ---------------------------------------------------------------------------------- * + * | 0x20 | 0x24 | 0x28 | | * + * ---------------------------------------------------------------------------------- * + * | hidden | to | data | | * + * ---------------------------------------------------------------------------------- * + * * + ****************************************************************************************/ + +#ifdef __x86_64__ +#include "jump_x86_64_sysv_elf_gas.S" +#else + +.file "jump_i386_sysv_elf_gas.S" +.text +.globl jump_fcontext +.align 2 +.type jump_fcontext,@function +jump_fcontext: + leal -0x1c(%esp), %esp /* prepare stack */ + +#if !defined(BOOST_USE_TSX) + stmxcsr (%esp) /* save MMX control- and status-word */ + fnstcw 0x4(%esp) /* save x87 control-word */ +#endif + +#if defined(BOOST_CONTEXT_TLS_STACK_PROTECTOR) + movl %gs:0x14, %ecx /* read stack guard from TLS record */ + movl %ecx, 0x8(%esp) /* save stack guard */ +#endif + + movl %edi, 0xc(%esp) /* save EDI */ + movl %esi, 0x10(%esp) /* save ESI */ + movl %ebx, 0x14(%esp) /* save EBX */ + movl %ebp, 0x18(%esp) /* save EBP */ + + /* store ESP (pointing to context-data) in ECX */ + movl %esp, %ecx + + /* first arg of jump_fcontext() == fcontext to jump to */ + movl 0x24(%esp), %eax + + /* second arg of jump_fcontext() == data to be transferred */ + movl 0x28(%esp), %edx + + /* restore ESP (pointing to context-data) from EAX */ + movl %eax, %esp + + /* address of returned transport_t */ + movl 0x20(%esp), %eax + /* return parent fcontext_t */ + movl %ecx, (%eax) + /* return data */ + movl %edx, 0x4(%eax) + + movl 0x1c(%esp), %ecx /* restore EIP */ + +#if !defined(BOOST_USE_TSX) + ldmxcsr (%esp) /* restore MMX control- and status-word */ + fldcw 0x4(%esp) /* restore x87 control-word */ +#endif + +#if defined(BOOST_CONTEXT_TLS_STACK_PROTECTOR) + movl 0x8(%esp), %edx /* load stack guard */ + movl %edx, %gs:0x14 /* restore stack guard to TLS record */ +#endif + + movl 0xc(%esp), %edi /* restore EDI */ + movl 0x10(%esp), %esi /* restore ESI */ + movl 0x14(%esp), %ebx /* restore EBX */ + movl 0x18(%esp), %ebp /* restore EBP */ + + leal 0x24(%esp), %esp /* prepare stack */ + + /* jump to context */ + jmp *%ecx +.size jump_fcontext,.-jump_fcontext + +/* Mark that we don't need executable stack. */ +.section .note.GNU-stack,"",%progbits + +#endif diff --git a/contrib/restricted/boost/context/src/asm/jump_x86_64_sysv_elf_gas.S b/contrib/restricted/boost/context/src/asm/jump_x86_64_sysv_elf_gas.S index 58f0e241d7..be264bdc2e 100644 --- a/contrib/restricted/boost/context/src/asm/jump_x86_64_sysv_elf_gas.S +++ b/contrib/restricted/boost/context/src/asm/jump_x86_64_sysv_elf_gas.S @@ -31,13 +31,16 @@ * * ****************************************************************************************/ -# if defined __CET__ -# include <cet.h> -# define SHSTK_ENABLED (__CET__ & 0x2) -# define BOOST_CONTEXT_SHADOW_STACK (SHSTK_ENABLED && SHADOW_STACK_SYSCALL) +# ifdef __i386__ +# include "jump_i386_sysv_elf_gas.S" # else -# define _CET_ENDBR -# endif +# if defined __CET__ +# include <cet.h> +# define SHSTK_ENABLED (__CET__ & 0x2) +# define BOOST_CONTEXT_SHADOW_STACK (SHSTK_ENABLED && SHADOW_STACK_SYSCALL) +# else +# define _CET_ENDBR +# endif .file "jump_x86_64_sysv_elf_gas.S" .text .globl jump_fcontext @@ -72,6 +75,14 @@ jump_fcontext: movq %rcx, (%rsp) #endif +#if BOOST_CONTEXT_SHADOW_STACK + /* grow the stack to reserve space for shadow stack pointer(SSP) */ + leaq -0x8(%rsp), %rsp + /* read the current SSP and store it */ + rdsspq %rcx + movq %rcx, (%rsp) +# endif + /* store RSP (pointing to context-data) in RAX */ movq %rsp, %rax @@ -140,3 +151,4 @@ jump_fcontext: /* Mark that we don't need executable stack. */ .section .note.GNU-stack,"",%progbits +# endif diff --git a/contrib/restricted/boost/context/src/asm/make_i386_sysv_elf_gas.S b/contrib/restricted/boost/context/src/asm/make_i386_sysv_elf_gas.S new file mode 100644 index 0000000000..c6e0b36558 --- /dev/null +++ b/contrib/restricted/boost/context/src/asm/make_i386_sysv_elf_gas.S @@ -0,0 +1,119 @@ +/* + Copyright Oliver Kowalke 2009. + 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) +*/ + +/**************************************************************************************** + * * + * ---------------------------------------------------------------------------------- * + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * + * ---------------------------------------------------------------------------------- * + * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * + * ---------------------------------------------------------------------------------- * + * | fc_mxcsr|fc_x87_cw| guard | EDI | ESI | EBX | EBP | EIP | * + * ---------------------------------------------------------------------------------- * + * ---------------------------------------------------------------------------------- * + * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * + * ---------------------------------------------------------------------------------- * + * | 0x20 | 0x24 | 0x28 | | * + * ---------------------------------------------------------------------------------- * + * | hidden | to | data | | * + * ---------------------------------------------------------------------------------- * + * * + ****************************************************************************************/ + +#ifdef __x86_64__ +#include "make_x86_64_sysv_elf_gas.S" +#else + +.file "make_i386_sysv_elf_gas.S" +.text +.globl make_fcontext +.align 2 +.type make_fcontext,@function +make_fcontext: + /* first arg of make_fcontext() == top of context-stack */ + movl 0x4(%esp), %eax + + /* reserve space for first argument of context-function + eax might already point to a 16byte border */ + leal -0x8(%eax), %eax + + /* shift address in EAX to lower 16 byte boundary */ + andl $-16, %eax + + /* reserve space for context-data on context-stack, and align the stack */ + leal -0x34(%eax), %eax + + /* third arg of make_fcontext() == address of context-function */ + /* stored in EBX */ + movl 0xc(%esp), %ecx + movl %ecx, 0x14(%eax) + + /* save MMX control- and status-word */ + stmxcsr (%eax) + /* save x87 control-word */ + fnstcw 0x4(%eax) + +#if defined(BOOST_CONTEXT_TLS_STACK_PROTECTOR) + /* save stack guard */ + movl %gs:0x14, %ecx /* read stack guard from TLS record */ + movl %ecx, 0x8(%eax) /* save stack guard */ +#endif + + /* return transport_t */ + /* FCTX == EDI, DATA == ESI */ + leal 0xc(%eax), %ecx + movl %ecx, 0x20(%eax) + + /* compute abs address of label trampoline */ + call 1f + /* address of trampoline 1 */ +1: popl %ecx + /* compute abs address of label trampoline */ + addl $trampoline-1b, %ecx + /* save address of trampoline as return address */ + /* will be entered after calling jump_fcontext() first time */ + movl %ecx, 0x1c(%eax) + + /* compute abs address of label finish */ + call 2f + /* address of label 2 */ +2: popl %ecx + /* compute abs address of label finish */ + addl $finish-2b, %ecx + /* save address of finish as return-address for context-function */ + /* will be entered after context-function returns */ + movl %ecx, 0x18(%eax) + + ret /* return pointer to context-data */ + +trampoline: + /* move transport_t for entering context-function */ + movl %edi, (%esp) + movl %esi, 0x4(%esp) + pushl %ebp + /* jump to context-function */ + jmp *%ebx + +finish: + call 3f + /* address of label 3 */ +3: popl %ebx + /* compute address of GOT and store it in EBX */ + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx + + /* exit code is zero */ + xorl %eax, %eax + movl %eax, (%esp) + /* exit application */ + call _exit@PLT + hlt +.size make_fcontext,.-make_fcontext + +/* Mark that we don't need executable stack. */ +.section .note.GNU-stack,"",%progbits + +#endif diff --git a/contrib/restricted/boost/context/src/asm/make_x86_64_sysv_elf_gas.S b/contrib/restricted/boost/context/src/asm/make_x86_64_sysv_elf_gas.S index 4294398a2e..b0d0c0341e 100644 --- a/contrib/restricted/boost/context/src/asm/make_x86_64_sysv_elf_gas.S +++ b/contrib/restricted/boost/context/src/asm/make_x86_64_sysv_elf_gas.S @@ -31,13 +31,16 @@ * * ****************************************************************************************/ -# if defined __CET__ -# include <cet.h> -# define SHSTK_ENABLED (__CET__ & 0x2) -# define BOOST_CONTEXT_SHADOW_STACK (SHSTK_ENABLED && SHADOW_STACK_SYSCALL) +# ifdef __i386__ +# include "make_i386_sysv_elf_gas.S" # else -# define _CET_ENDBR -# endif +# if defined __CET__ +# include <cet.h> +# define SHSTK_ENABLED (__CET__ & 0x2) +# define BOOST_CONTEXT_SHADOW_STACK (SHSTK_ENABLED && SHADOW_STACK_SYSCALL) +# else +# define _CET_ENDBR +# endif .file "make_x86_64_sysv_elf_gas.S" .text .globl make_fcontext @@ -45,6 +48,7 @@ .align 16 make_fcontext: _CET_ENDBR + #if BOOST_CONTEXT_SHADOW_STACK /* the new shadow stack pointer (SSP) */ movq -0x8(%rdi), %r9 @@ -116,12 +120,50 @@ make_fcontext: movq %r9, (%rax) #endif +#if BOOST_CONTEXT_SHADOW_STACK + /* Populate the shadow stack */ + + /* get original SSP */ + rdsspq %r8 + /* restore new shadow stack */ + rstorssp -0x8(%r9) + /* save the restore token on the original shadow stack */ + saveprevssp + /* push the address of "jmp trampoline" to the new shadow stack */ + /* as well as the stack */ + call 1f + jmp trampoline +1: + /* save address of "jmp trampoline" as return-address */ + /* for context-function */ + pop 0x38(%rax) + /* Get the new SSP. */ + rdsspq %r9 + /* restore original shadow stack */ + rstorssp -0x8(%r8) + /* save the restore token on the new shadow stack. */ + saveprevssp + + /* now the new shadow stack looks like: + base-> +------------------------------+ + | address of "jmp trampoline" | + SSP-> +------------------------------+ + | restore token | + +------------------------------+ + */ + + /* reserve space for the new SSP */ + leaq -0x8(%rax), %rax + /* save the new SSP to this fcontext */ + movq %r9, (%rax) +#endif + ret /* return pointer to context-data */ trampoline: - _CET_ENDBR /* store return address on stack */ /* fix stack alignment */ + _CET_ENDBR #if BOOST_CONTEXT_SHADOW_STACK /* save address of "jmp *%rbp" as return-address */ /* on stack and shadow stack */ @@ -145,3 +187,4 @@ finish: /* Mark that we don't need executable stack. */ .section .note.GNU-stack,"",%progbits +# endif diff --git a/contrib/restricted/boost/conversion/ya.make b/contrib/restricted/boost/conversion/ya.make index 5346d3939d..9b695a91ba 100644 --- a/contrib/restricted/boost/conversion/ya.make +++ b/contrib/restricted/boost/conversion/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/conversion/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/conversion/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/describe/ya.make b/contrib/restricted/boost/describe/ya.make index b7a25b04a7..3c01126fd0 100644 --- a/contrib/restricted/boost/describe/ya.make +++ b/contrib/restricted/boost/describe/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/describe/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/describe/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/mp11 diff --git a/contrib/restricted/boost/detail/ya.make b/contrib/restricted/boost/detail/ya.make index fd9fd5a9bc..97d62e70f6 100644 --- a/contrib/restricted/boost/detail/ya.make +++ b/contrib/restricted/boost/detail/ya.make @@ -9,9 +9,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/detail/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/detail/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/exception/include/boost/exception/current_exception_cast.hpp b/contrib/restricted/boost/exception/include/boost/exception/current_exception_cast.hpp index 950eeff171..ddcfd27ef0 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/current_exception_cast.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/current_exception_cast.hpp @@ -7,7 +7,7 @@ #define BOOST_EXCEPTION_7E83C166200811DE885E826156D89593 #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/detail/clone_current_exception.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/clone_current_exception.hpp index 5c953c1a19..d560f1cb80 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/detail/clone_current_exception.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/clone_current_exception.hpp @@ -7,7 +7,7 @@ #define BOOST_EXCEPTION_81522C0EB56511DFAB613DB0DFD72085 #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/detail/error_info_impl.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/error_info_impl.hpp index 30ccffd148..d97c6f3518 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/detail/error_info_impl.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/error_info_impl.hpp @@ -14,7 +14,7 @@ #include <string> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/detail/exception_ptr.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/exception_ptr.hpp index cdfc3bed34..ebacd363c1 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/detail/exception_ptr.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/exception_ptr.hpp @@ -7,7 +7,7 @@ #ifndef BOOST_EXCEPTION_618474C2DE1511DEB74A388C56D89593 #define BOOST_EXCEPTION_618474C2DE1511DEB74A388C56D89593 -#include <boost/config.hpp> +#include <boost/exception/detail/requires_cxx11.hpp> #include <boost/exception/exception.hpp> #include <boost/exception/info.hpp> #include <boost/exception/diagnostic_information.hpp> @@ -26,7 +26,7 @@ #include <stdlib.h> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/detail/is_output_streamable.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/is_output_streamable.hpp index a61f986bc9..980cddc09f 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/detail/is_output_streamable.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/is_output_streamable.hpp @@ -9,7 +9,7 @@ #include <ostream> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/detail/object_hex_dump.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/object_hex_dump.hpp index c195de50d9..42d517b811 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/detail/object_hex_dump.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/object_hex_dump.hpp @@ -14,7 +14,7 @@ #include <cstdlib> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/bind/include/boost/bind/detail/requires_cxx11.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/requires_cxx11.hpp index 600f58ff19..85ab2a3765 100644 --- a/contrib/restricted/boost/bind/include/boost/bind/detail/requires_cxx11.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/requires_cxx11.hpp @@ -1,7 +1,8 @@ -#ifndef BOOST_BIND_DETAIL_REQUIRES_CXX11_HPP_INCLUDED -#define BOOST_BIND_DETAIL_REQUIRES_CXX11_HPP_INCLUDED +#ifndef BOOST_EXCEPTION_DETAIL_REQUIRES_CXX11_HPP_INCLUDED +#define BOOST_EXCEPTION_DETAIL_REQUIRES_CXX11_HPP_INCLUDED // Copyright 2023 Peter Dimov +// Copyright 2024 Emil Dotchevski // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt @@ -13,10 +14,11 @@ defined(BOOST_NO_CXX11_DECLTYPE) || \ defined(BOOST_NO_CXX11_CONSTEXPR) || \ defined(BOOST_NO_CXX11_NOEXCEPT) || \ - defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) + defined(BOOST_NO_CXX11_NULLPTR) || \ + defined(BOOST_NO_CXX11_SMART_PTR) -BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.Bind 1.82 and will be removed in Boost.Bind 1.85.") +BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.Exception 1.85 and will be removed in Boost.Exception 1.87.") #endif -#endif // #ifndef BOOST_BIND_DETAIL_REQUIRES_CXX11_HPP_INCLUDED +#endif
\ No newline at end of file diff --git a/contrib/restricted/boost/exception/include/boost/exception/detail/type_info.hpp b/contrib/restricted/boost/exception/include/boost/exception/detail/type_info.hpp index 0d46fd6e87..72716b52b1 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/detail/type_info.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/detail/type_info.hpp @@ -14,7 +14,7 @@ #include <string.h> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/diagnostic_information.hpp b/contrib/restricted/boost/exception/include/boost/exception/diagnostic_information.hpp index 145fbe5b01..b26c502db6 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/diagnostic_information.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/diagnostic_information.hpp @@ -21,7 +21,7 @@ #endif #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/get_error_info.hpp b/contrib/restricted/boost/exception/include/boost/exception/get_error_info.hpp index 09a224aa53..efe093eeda 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/get_error_info.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/get_error_info.hpp @@ -14,7 +14,7 @@ #include <boost/assert.hpp> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/info.hpp b/contrib/restricted/boost/exception/include/boost/exception/info.hpp index 3fd6681f5c..f6a350f63a 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/info.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/info.hpp @@ -14,7 +14,7 @@ #include <map> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/to_string.hpp b/contrib/restricted/boost/exception/include/boost/exception/to_string.hpp index 49f1b18d06..513c87471b 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/to_string.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/to_string.hpp @@ -11,7 +11,7 @@ #include <sstream> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/include/boost/exception/to_string_stub.hpp b/contrib/restricted/boost/exception/include/boost/exception/to_string_stub.hpp index 5fbfba7ec2..151b38e5de 100644 --- a/contrib/restricted/boost/exception/include/boost/exception/to_string_stub.hpp +++ b/contrib/restricted/boost/exception/include/boost/exception/to_string_stub.hpp @@ -11,7 +11,7 @@ #include <boost/assert.hpp> #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/exception/ya.make b/contrib/restricted/boost/exception/ya.make index 9865ec9897..86b169edef 100644 --- a/contrib/restricted/boost/exception/ya.make +++ b/contrib/restricted/boost/exception/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/exception/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/exception/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/integer/ya.make b/contrib/restricted/boost/integer/ya.make index 1365104ddb..02417ff194 100644 --- a/contrib/restricted/boost/integer/ya.make +++ b/contrib/restricted/boost/integer/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/integer/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/integer/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/interprocess/include/boost/interprocess/detail/workaround.hpp b/contrib/restricted/boost/interprocess/include/boost/interprocess/detail/workaround.hpp index 01b6c6eb05..328616e1e8 100644 --- a/contrib/restricted/boost/interprocess/include/boost/interprocess/detail/workaround.hpp +++ b/contrib/restricted/boost/interprocess/include/boost/interprocess/detail/workaround.hpp @@ -37,7 +37,7 @@ ////////////////////////////////////////////////////// //Check for XSI shared memory objects. They are available in nearly all UNIX platforms ////////////////////////////////////////////////////// - #if !defined(__QNXNTO__) && !defined(__ANDROID__) && !defined(__HAIKU__) && !(__VXWORKS__) + #if !defined(__QNXNTO__) && !defined(__ANDROID__) && !defined(__HAIKU__) && !(__VXWORKS__) && !(__EMSCRIPTEN__) #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS #endif @@ -226,8 +226,11 @@ #elif defined(BOOST_MSVC) && (_MSC_VER < 1900 || defined(_DEBUG)) //"__forceinline" and MSVC seems to have some bugs in old versions and in debug mode #define BOOST_INTERPROCESS_FORCEINLINE inline -#elif defined(BOOST_GCC) && (__GNUC__ <= 5) +#elif defined(BOOST_CLANG) || (defined(BOOST_GCC) && ((__GNUC__ <= 5) || defined(__MINGW32__))) //Older GCCs have problems with forceinline + //Clang can have code bloat issues with forceinline, see + //https://lists.boost.org/boost-users/2023/04/91445.php and + //https://github.com/llvm/llvm-project/issues/62202 #define BOOST_INTERPROCESS_FORCEINLINE inline #else #define BOOST_INTERPROCESS_FORCEINLINE BOOST_FORCEINLINE diff --git a/contrib/restricted/boost/interprocess/ya.make b/contrib/restricted/boost/interprocess/ya.make index 78346f1c86..60b2727bfa 100644 --- a/contrib/restricted/boost/interprocess/ya.make +++ b/contrib/restricted/boost/interprocess/ya.make @@ -9,9 +9,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/interprocess/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/interprocess/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/iterator/ya.make b/contrib/restricted/boost/iterator/ya.make index ae30b7ee04..67c090140c 100644 --- a/contrib/restricted/boost/iterator/ya.make +++ b/contrib/restricted/boost/iterator/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/iterator/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/iterator/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/math/README.md b/contrib/restricted/boost/math/README.md index 07c6c4604b..a20120e8ab 100644 --- a/contrib/restricted/boost/math/README.md +++ b/contrib/restricted/boost/math/README.md @@ -1,10 +1,24 @@ -Boost Math Library -[![Build Status](https://drone.cpp.al/api/badges/boostorg/math/status.svg)](https://drone.cpp.al/boostorg/math)[![Build Status](https://github.com/boostorg/math/workflows/CI/badge.svg?branch=develop)](https://github.com/boostorg/math/actions) -================== +Boost Math Library +============================ ->ANNOUNCEMENT: This library now requires a compliant C++14 compiler. +>ANNOUNCEMENT: This library requires a compliant C++14 compiler. -This library is divided into several interconnected parts: +| | Master | Develop | +|------------------|----------|-------------| +| Drone | [![Build Status](https://drone.cpp.al/api/badges/boostorg/math/status.svg?ref=refs/heads/master)](https://drone.cpp.al/boostorg/math) | [![Build Status](https://drone.cpp.al/api/badges/boostorg/math/status.svg)](https://drone.cpp.al/boostorg/math) | +| Github Actions | [![Build Status](https://github.com/boostorg/math/workflows/CI/badge.svg?branch=master)](https://github.com/boostorg/math/actions) | [![Build Status](https://github.com/boostorg/math/workflows/CI/badge.svg?branch=develop)](https://github.com/boostorg/math/actions) | +| Codecov | [![codecov](https://codecov.io/gh/boostorg/math/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/math/branch/master) | [![codecov](https://codecov.io/gh/boostorg/math/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/math/branch/develop) | + + +The Math library provides numerous advanced mathematical functions +implemented in modern C++. The library strives to deliver the utmost +in numerical and syntactical correctness while still +maintaining high-performance. + +All code is header-only, facilitating easy client setup +and use throughout the entire diverse collection of functions. + +The library is divided into several interconnected parts: ### Floating Point Utilities @@ -30,19 +44,33 @@ A comprehensive tutorial is provided, along with a series of worked examples ill ### Special Functions -Provides a small number of high quality special functions; initially these were concentrated on functions used in statistical applications along with those in the Technical Report on C++ Library Extensions. +Provides a wide range of high quality special functions; initially these were concentrated +on functions used in statistical applications along with those in the Technical Report +on C++ Library Extensions. -The function families currently implemented are the gamma, beta & error functions along with the incomplete gamma and beta functions (four variants of each) and all the possible inverses of these, plus the digamma, various factorial functions, Bessel functions, elliptic integrals, hypergeometrics, sinus cardinals (along with their hyperbolic variants), inverse hyperbolic functions, Legrendre/Laguerre/Hermite/Chebyshev polynomials and various special power and logarithmic functions. +The function families currently implemented are the gamma, beta and error functions +along with the incomplete gamma and beta functions (four variants of each) +and all the possible inverses of these, plus the digamma, various factorial +functions, Bessel functions, elliptic integrals, hypergeometrics, sinus cardinals +(along with their hyperbolic variants), inverse hyperbolic functions, +Legrendre/Laguerre/Hermite/Chebyshev polynomials +and various special power and logarithmic functions. -All the implementations are fully generic and support the use of arbitrary "real-number" types, including Boost.Multiprecision, although they are optimised for use with types with known significand (or mantissa) sizes: typically float, double or long double. +All the implementations are fully generic and support the use of arbitrary "real-number" types, +including those in [Boost.Multiprecision](https://github.com/boostorg/multiprecision). +Most functions are, however, optimized for use with types with known significand (or mantissa) sizes: +typically built-in `float`, `double` or `long double`. -These functions also provide the basis of support for the TR1 special functions. +These functions also provide the basis of support for the TR1 special functions, +many of which became standardized in [C++17](https://en.cppreference.com/w/cpp/numeric/special_functions). -### Root Finding and Function Minimisation +### Root Finding A comprehensive set of root-finding algorithms over the real line, both with derivatives and derivative free. -Also function minimisation via Brent's Method. +### Optimization + +Minimization of cost functions via Brent's method and differential evolution. ### Polynomials and Rational Functions @@ -50,11 +78,17 @@ Tools for manipulating polynomials and for efficient evaluation of rationals or ### Interpolation -Function interpolation via barycentric rational interpolation, compactly supported quadratic, cubic, and quintic B-splines, the Chebyshev transform, trigonometric polynomials, Makima, pchip, cubic Hermite splines, and bilinear interpolation. +Function interpolation via barycentric rational interpolation, +compactly supported quadratic, cubic, and quintic B-splines, +the Chebyshev transform, trigonometric polynomials, Makima, +pchip, cubic Hermite splines, and bilinear interpolation. ### Numerical Integration and Differentiation -A reasonably comprehensive set of routines for integration (trapezoidal, Gauss-Legendre, Gauss-Kronrod, Gauss-Chebyshev, double-exponential, and Monte-Carlo) and differentiation (Chebyshev transform, finite difference, the complex step derivative, and forward-mode automatic differentiation). +A reasonably comprehensive set of routines for integration +(trapezoidal, Gauss-Legendre, Gauss-Kronrod, Gauss-Chebyshev, double-exponential, and Monte-Carlo) +and differentiation (Chebyshev transform, finite difference, the complex step derivative, +and forward-mode automatic differentiation). The integration routines are usable for functions returning complex results - and hence can be used for computation of contour integrals. @@ -66,25 +100,20 @@ The full documentation is available on [boost.org](http://www.boost.org/doc/libs ### Standalone Mode -Defining BOOST_MATH_STANDALONE allows Boost.Math to be used without any Boost dependencies. Some functionality is reduced in this mode. A static_assert message will alert you if a particular feature has been disabled by standalone mode. +Defining BOOST_MATH_STANDALONE allows Boost.Math to be used without any Boost dependencies. +Some functionality is reduced in this mode. A static_assert message will alert you +if a particular feature has been disabled by standalone mode. Standalone mode is not designed to +be used with the rest of boost, and may result in compiler errors. ## Supported Compilers ## -The following compilers are tested with the CI system, and are known to work. Starting with Boost 1.76 (April 2021 Release) a compiler that is fully compliant with C++11 is required to use Boost.Math. +The following compilers are tested with the CI system, and are known to work. +Currently a compiler that is fully compliant with C++14 is required to use Boost.Math. * g++ 5 or later * clang++ 5 or later * Visual Studio 2015 (14.0) or later -## Build Status ## - -| | Master | Develop | -|------------------|----------|-------------| -| Github Actions | [![Build Status](https://github.com/boostorg/math/workflows/CI/badge.svg?branch=master)](https://github.com/boostorg/math/actions) | [![Build Status](https://github.com/boostorg/math/workflows/CI/badge.svg?branch=develop)](https://github.com/boostorg/math/actions) | -|Drone | [![Build Status](https://drone.cpp.al/api/badges/boostorg/math/status.svg?ref=refs/heads/master)](https://drone.cpp.al/boostorg/math) | [![Build Status](https://drone.cpp.al/api/badges/boostorg/math/status.svg)](https://drone.cpp.al/boostorg/math) | - - - ## Support, bugs and feature requests ## Bugs and feature requests can be reported through the [GitHub issue tracker](https://github.com/boostorg/math/issues) diff --git a/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp b/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp index 6daebaa64f..eb09682e32 100644 --- a/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp +++ b/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp @@ -35,7 +35,7 @@ namespace policies{ // // Special cases for exceptions disabled first: // -#ifdef BOOST_NO_EXCEPTIONS +#ifdef BOOST_MATH_NO_EXCEPTIONS # ifndef BOOST_MATH_DOMAIN_ERROR_POLICY # define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error # endif diff --git a/contrib/restricted/boost/math/include/boost/math/special_functions/detail/fp_traits.hpp b/contrib/restricted/boost/math/include/boost/math/special_functions/detail/fp_traits.hpp index 975052b52e..2947a32a21 100644 --- a/contrib/restricted/boost/math/include/boost/math/special_functions/detail/fp_traits.hpp +++ b/contrib/restricted/boost/math/include/boost/math/special_functions/detail/fp_traits.hpp @@ -34,16 +34,6 @@ With these techniques, the code could be simplified. #define BOOST_MATH_ENDIAN_BIG_BYTE BOOST_ENDIAN_BIG_BYTE #define BOOST_MATH_ENDIAN_LITTLE_BYTE BOOST_ENDIAN_LITTLE_BYTE -#elif (__cplusplus >= 202002L || _MSVC_LANG >= 202002L) - -#if __has_include(<bit>) -#include <bit> -#define BOOST_MATH_ENDIAN_BIG_BYTE (std::endian::native == std::endian::big) -#define BOOST_MATH_ENDIAN_LITTLE_BYTE (std::endian::native == std::endian::little) -#else -#error Missing <bit> header. Please disable standalone mode, and file an issue at https://github.com/boostorg/math -#endif - #elif defined(_WIN32) #define BOOST_MATH_ENDIAN_BIG_BYTE 0 diff --git a/contrib/restricted/boost/math/include/boost/math/special_functions/math_fwd.hpp b/contrib/restricted/boost/math/include/boost/math/special_functions/math_fwd.hpp index 7b99651402..3e5d6a7625 100644 --- a/contrib/restricted/boost/math/include/boost/math/special_functions/math_fwd.hpp +++ b/contrib/restricted/boost/math/include/boost/math/special_functions/math_fwd.hpp @@ -1087,10 +1087,10 @@ namespace boost // pow: template <int N, typename T, class Policy> - BOOST_CXX14_CONSTEXPR tools::promote_args_t<T> pow(T base, const Policy& policy); + BOOST_MATH_CXX14_CONSTEXPR tools::promote_args_t<T> pow(T base, const Policy& policy); template <int N, typename T> - BOOST_CXX14_CONSTEXPR tools::promote_args_t<T> pow(T base); + BOOST_MATH_CXX14_CONSTEXPR tools::promote_args_t<T> pow(T base); // next: template <class T, class U, class Policy> diff --git a/contrib/restricted/boost/math/include/boost/math/tools/config.hpp b/contrib/restricted/boost/math/include/boost/math/tools/config.hpp index 584cbd5485..110edc06b7 100644 --- a/contrib/restricted/boost/math/include/boost/math/tools/config.hpp +++ b/contrib/restricted/boost/math/include/boost/math/tools/config.hpp @@ -16,20 +16,73 @@ // Minimum language standard transition #ifdef _MSVC_LANG # if _MSVC_LANG < 201402L -# pragma warning("The minimum language standard to use Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)"); +# pragma message("Boost.Math requires C++14"); +# endif +# if _MSC_VER == 1900 +# pragma message("MSVC 14.0 has broken C++14 constexpr support. Support for this compiler will be removed in Boost 1.86") # endif #else # if __cplusplus < 201402L -# warning "The minimum language standard to use Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)" +# warning "Boost.Math requires C++14" # endif #endif #ifndef BOOST_MATH_STANDALONE #include <boost/config.hpp> + +// The following are all defined as standalone macros as well +// If Boost.Config is available just use those definitions because they are more fine-grained + +// Could be defined in TR1 +#ifndef BOOST_MATH_PREVENT_MACRO_SUBSTITUTION +# define BOOST_MATH_PREVENT_MACRO_SUBSTITUTION BOOST_PREVENT_MACRO_SUBSTITUTION +#endif + +#define BOOST_MATH_CXX14_CONSTEXPR BOOST_CXX14_CONSTEXPR +#ifdef BOOST_NO_CXX14_CONSTEXPR +# define BOOST_MATH_NO_CXX14_CONSTEXPR +#endif + +#define BOOST_MATH_IF_CONSTEXPR BOOST_IF_CONSTEXPR +#ifdef BOOST_NO_CXX17_IF_CONSTEXPR +# define BOOST_MATH_NO_CXX17_IF_CONSTEXPR +#endif + +#ifdef BOOST_NO_CXX17_HDR_EXECUTION +# define BOOST_MATH_NO_CXX17_HDR_EXECUTION +#endif + +#ifdef BOOST_HAS_THREADS +# define BOOST_MATH_HAS_THREADS +#endif +#ifdef BOOST_DISABLE_THREADS +# define BOOST_MATH_DISABLE_THREADS +#endif +#ifdef BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_MATH_NO_CXX11_THREAD_LOCAL +#endif + +#ifdef BOOST_NO_EXCEPTIONS +# define BOOST_MATH_NO_EXCEPTIONS +#endif + +#ifdef BOOST_NO_TYPEID +# define BOOST_MATH_NO_TYPEID +#endif +#ifdef BOOST_NO_RTTI +# define BOOST_MATH_NO_RTTI +#endif + +#define BOOST_MATH_NOINLINE BOOST_NOINLINE +#define BOOST_MATH_FORCEINLINE BOOST_FORCEINLINE + +#define BOOST_MATH_JOIN(X, Y) BOOST_JOIN(X, Y) +#define BOOST_MATH_STRINGIZE(X) BOOST_STRINGIZE(X) + #else // Things from boost/config that are required, and easy to replicate -#define BOOST_PREVENT_MACRO_SUBSTITUTION +#define BOOST_MATH_PREVENT_MACRO_SUBSTITUTION #define BOOST_MATH_NO_REAL_CONCEPT_TESTS #define BOOST_MATH_NO_DISTRIBUTION_CONCEPT_TESTS #define BOOST_MATH_NO_LEXICAL_CAST @@ -38,59 +91,56 @@ #define BOOST_MATH_NO_MP_TESTS #if (__cplusplus > 201400L || _MSVC_LANG > 201400L) -#define BOOST_CXX14_CONSTEXPR constexpr +#define BOOST_MATH_CXX14_CONSTEXPR constexpr #else -#define BOOST_CXX14_CONSTEXPR -#define BOOST_NO_CXX14_CONSTEXPR -#endif // BOOST_CXX14_CONSTEXPR +#define BOOST_MATH_CXX14_CONSTEXPR +#define BOOST_MATH_NO_CXX14_CONSTEXPR +#endif // BOOST_MATH_CXX14_CONSTEXPR #if (__cplusplus > 201700L || _MSVC_LANG > 201700L) -#define BOOST_IF_CONSTEXPR if constexpr +#define BOOST_MATH_IF_CONSTEXPR if constexpr // Clang on mac provides the execution header with none of the functionality. TODO: Check back on this // https://en.cppreference.com/w/cpp/compiler_support "Standardization of Parallelism TS" -#if !__has_include(<execution>) || (defined(__APPLE__) && defined(__clang__)) -#define BOOST_NO_CXX17_HDR_EXECUTION -#endif +# if !__has_include(<execution>) || (defined(__APPLE__) && defined(__clang__)) +# define BOOST_MATH_NO_CXX17_HDR_EXECUTION +# endif #else -#define BOOST_IF_CONSTEXPR if -#define BOOST_NO_CXX17_IF_CONSTEXPR -#define BOOST_NO_CXX17_HDR_EXECUTION +# define BOOST_MATH_IF_CONSTEXPR if +# define BOOST_MATH_NO_CXX17_IF_CONSTEXPR +# define BOOST_MATH_NO_CXX17_HDR_EXECUTION #endif #if __cpp_lib_gcd_lcm >= 201606L #define BOOST_MATH_HAS_CXX17_NUMERIC #endif -#define BOOST_JOIN(X, Y) BOOST_DO_JOIN(X, Y) -#define BOOST_DO_JOIN(X, Y) BOOST_DO_JOIN2(X,Y) -#define BOOST_DO_JOIN2(X, Y) X##Y +#define BOOST_MATH_JOIN(X, Y) BOOST_MATH_DO_JOIN(X, Y) +#define BOOST_MATH_DO_JOIN(X, Y) BOOST_MATH_DO_JOIN2(X,Y) +#define BOOST_MATH_DO_JOIN2(X, Y) X##Y -#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X) -#define BOOST_DO_STRINGIZE(X) #X +#define BOOST_MATH_STRINGIZE(X) BOOST_MATH_DO_STRINGIZE(X) +#define BOOST_MATH_DO_STRINGIZE(X) #X -#ifdef BOOST_DISABLE_THREADS // No threads, do nothing +#ifdef BOOST_MATH_DISABLE_THREADS // No threads, do nothing // Detect thread support via STL implementation #elif defined(__has_include) # if !__has_include(<thread>) || !__has_include(<mutex>) || !__has_include(<future>) || !__has_include(<atomic>) -# define BOOST_DISABLE_THREADS +# define BOOST_MATH_DISABLE_THREADS # else -# define BOOST_HAS_THREADS +# define BOOST_MATH_HAS_THREADS # endif #else -# define BOOST_HAS_THREADS // The default assumption is that the machine has threads +# define BOOST_MATH_HAS_THREADS // The default assumption is that the machine has threads #endif // Thread Support -#ifdef BOOST_DISABLE_THREADS -# define BOOST_NO_CXX11_HDR_ATOMIC -# define BOOST_NO_CXX11_HDR_FUTURE -# define BOOST_NO_CXX11_HDR_THREAD -# define BOOST_NO_CXX11_THREAD_LOCAL -#endif // BOOST_DISABLE_THREADS +#ifdef BOOST_MATH_DISABLE_THREADS +# define BOOST_MATH_NO_CXX11_THREAD_LOCAL +#endif // BOOST_MATH_DISABLE_THREADS #ifdef __GNUC__ -# if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) -# define BOOST_NO_EXCEPTIONS +# if !defined(__EXCEPTIONS) && !defined(BOOST_MATH_NO_EXCEPTIONS) +# define BOOST_MATH_NO_EXCEPTIONS # endif // // Make sure we have some std lib headers included so we can detect __GXX_RTTI: @@ -98,43 +148,43 @@ # include <algorithm> // for min and max # include <limits> # ifndef __GXX_RTTI -# ifndef BOOST_NO_TYPEID -# define BOOST_NO_TYPEID +# ifndef BOOST_MATH_NO_TYPEID +# define BOOST_MATH_NO_TYPEID # endif -# ifndef BOOST_NO_RTTI -# define BOOST_NO_RTTI +# ifndef BOOST_MATH_NO_RTTI +# define BOOST_MATH_NO_RTTI # endif # endif #endif -#if !defined(BOOST_NOINLINE) +#if !defined(BOOST_MATH_NOINLINE) # if defined(_MSC_VER) -# define BOOST_NOINLINE __declspec(noinline) +# define BOOST_MATH_NOINLINE __declspec(noinline) # elif defined(__GNUC__) && __GNUC__ > 3 // Clang also defines __GNUC__ (as 4) # if defined(__CUDACC__) // nvcc doesn't always parse __noinline__, // see: https://svn.boost.org/trac/boost/ticket/9392 -# define BOOST_NOINLINE __attribute__ ((noinline)) +# define BOOST_MATH_NOINLINE __attribute__ ((noinline)) # elif defined(__HIP__) // See https://github.com/boostorg/config/issues/392 -# define BOOST_NOINLINE __attribute__ ((noinline)) +# define BOOST_MATH_NOINLINE __attribute__ ((noinline)) # else -# define BOOST_NOINLINE __attribute__ ((__noinline__)) +# define BOOST_MATH_NOINLINE __attribute__ ((__noinline__)) # endif # else -# define BOOST_NOINLINE +# define BOOST_MATH_NOINLINE # endif #endif -#if !defined(BOOST_FORCEINLINE) +#if !defined(BOOST_MATH_FORCEINLINE) # if defined(_MSC_VER) -# define BOOST_FORCEINLINE __forceinline +# define BOOST_MATH_FORCEINLINE __forceinline # elif defined(__GNUC__) && __GNUC__ > 3 // Clang also defines __GNUC__ (as 4) -# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) +# define BOOST_MATH_FORCEINLINE inline __attribute__ ((__always_inline__)) # else -# define BOOST_FORCEINLINE inline +# define BOOST_MATH_FORCEINLINE inline # endif #endif @@ -142,7 +192,7 @@ // Support compilers with P0024R2 implemented without linking TBB // https://en.cppreference.com/w/cpp/compiler_support -#if !defined(BOOST_NO_CXX17_HDR_EXECUTION) && defined(BOOST_HAS_THREADS) +#if !defined(BOOST_MATH_NO_CXX17_HDR_EXECUTION) && defined(BOOST_MATH_HAS_THREADS) # define BOOST_MATH_EXEC_COMPATIBLE #endif @@ -461,13 +511,13 @@ namespace tools { template <class T> -inline T max BOOST_PREVENT_MACRO_SUBSTITUTION(T a, T b, T c) BOOST_MATH_NOEXCEPT(T) +inline T max BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T a, T b, T c) BOOST_MATH_NOEXCEPT(T) { return (std::max)((std::max)(a, b), c); } template <class T> -inline T max BOOST_PREVENT_MACRO_SUBSTITUTION(T a, T b, T c, T d) BOOST_MATH_NOEXCEPT(T) +inline T max BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T a, T b, T c, T d) BOOST_MATH_NOEXCEPT(T) { return (std::max)((std::max)(a, b), (std::max)(c, d)); } @@ -565,7 +615,7 @@ namespace boost{ namespace math{ // // Thread local storage: // -#ifndef BOOST_DISABLE_THREADS +#ifndef BOOST_MATH_DISABLE_THREADS # define BOOST_MATH_THREAD_LOCAL thread_local #else # define BOOST_MATH_THREAD_LOCAL @@ -583,7 +633,7 @@ namespace boost{ namespace math{ // // Can we have constexpr tables? // -#if (!defined(BOOST_NO_CXX14_CONSTEXPR)) || (defined(_MSC_VER) && _MSC_VER >= 1910) +#if (!defined(BOOST_MATH_NO_CXX14_CONSTEXPR)) || (defined(_MSC_VER) && _MSC_VER >= 1910) #define BOOST_MATH_HAVE_CONSTEXPR_TABLES #define BOOST_MATH_CONSTEXPR_TABLE_FUNCTION constexpr #else diff --git a/contrib/restricted/boost/math/include/boost/math/tools/mp.hpp b/contrib/restricted/boost/math/include/boost/math/tools/mp.hpp index 3100a0bb67..55aac1b092 100644 --- a/contrib/restricted/boost/math/include/boost/math/tools/mp.hpp +++ b/contrib/restricted/boost/math/include/boost/math/tools/mp.hpp @@ -168,11 +168,11 @@ struct mp_at_c<L<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T...>, 1 }; } -template<typename L, std::size_t I> -using mp_at_c = typename detail::mp_at_c<L, I>::type; +template<typename L, std::size_t Index> +using mp_at_c = typename detail::mp_at_c<L, Index>::type; -template<typename L, typename I> -using mp_at = typename detail::mp_at_c<L, I::value>::type; +template<typename L, typename Index> +using mp_at = typename detail::mp_at_c<L, Index::value>::type; // Back template<typename L> @@ -339,8 +339,8 @@ using mp_remove_if_q = mp_remove_if<L, Q::template fn>; // Index sequence // Use C++14 index sequence if available #if defined(__cpp_lib_integer_sequence) && (__cpp_lib_integer_sequence >= 201304) -template<std::size_t... I> -using index_sequence = std::index_sequence<I...>; +template<std::size_t... Index> +using index_sequence = std::index_sequence<Index...>; template<std::size_t N> using make_index_sequence = std::make_index_sequence<N>; @@ -350,11 +350,11 @@ using index_sequence_for = std::index_sequence_for<T...>; #else -template<typename T, T... I> +template<typename T, T... Index> struct integer_sequence {}; -template<std::size_t... I> -using index_sequence = integer_sequence<std::size_t, I...>; +template<std::size_t... Index> +using index_sequence = integer_sequence<std::size_t, Index...>; namespace detail { @@ -385,10 +385,10 @@ struct iseq_identity template<typename T1, typename T2> struct append_integer_sequence {}; -template<typename T, T... I, T... J> -struct append_integer_sequence<integer_sequence<T, I...>, integer_sequence<T, J...>> +template<typename T, T... Index, T... J> +struct append_integer_sequence<integer_sequence<T, Index...>, integer_sequence<T, J...>> { - using type = integer_sequence<T, I..., (J + sizeof...(I))...>; + using type = integer_sequence<T, Index..., (J + sizeof...(Index))...>; }; template<typename T, T N> diff --git a/contrib/restricted/boost/math/ya.make b/contrib/restricted/boost/math/ya.make index 660c3ca286..b4bef35c73 100644 --- a/contrib/restricted/boost/math/ya.make +++ b/contrib/restricted/boost/math/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/math/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/math/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/move/include/boost/move/adl_move_swap.hpp b/contrib/restricted/boost/move/include/boost/move/adl_move_swap.hpp index d9096e36c3..63ad7888e7 100644 --- a/contrib/restricted/boost/move/include/boost/move/adl_move_swap.hpp +++ b/contrib/restricted/boost/move/include/boost/move/adl_move_swap.hpp @@ -155,7 +155,7 @@ struct and_op_not {}; template<class T> -BOOST_MOVE_FORCEINLINE void swap_proxy(T& x, T& y, typename boost::move_detail::enable_if_c<!boost::move_detail::has_move_emulation_enabled_impl<T>::value>::type* = 0) +inline void swap_proxy(T& x, T& y, typename boost::move_detail::enable_if_c<!boost::move_detail::has_move_emulation_enabled_impl<T>::value>::type* = 0) { //use std::swap if argument dependent lookup fails //Use using directive ("using namespace xxx;") instead as some older compilers @@ -165,14 +165,14 @@ BOOST_MOVE_FORCEINLINE void swap_proxy(T& x, T& y, typename boost::move_detail:: } template<class T> -BOOST_MOVE_FORCEINLINE void swap_proxy(T& x, T& y +void swap_proxy(T& x, T& y , typename boost::move_detail::enable_if< and_op_not_impl<boost::move_detail::has_move_emulation_enabled_impl<T> , boost_move_member_swap::has_member_swap<T> > >::type* = 0) { T t(::boost::move(x)); x = ::boost::move(y); y = ::boost::move(t); } template<class T> -BOOST_MOVE_FORCEINLINE void swap_proxy(T& x, T& y +inline void swap_proxy(T& x, T& y , typename boost::move_detail::enable_if< and_op_impl< boost::move_detail::has_move_emulation_enabled_impl<T> , boost_move_member_swap::has_member_swap<T> > >::type* = 0) @@ -185,7 +185,7 @@ BOOST_MOVE_FORCEINLINE void swap_proxy(T& x, T& y namespace boost_move_adl_swap{ template<class T> -BOOST_MOVE_FORCEINLINE void swap_proxy(T& x, T& y) +inline void swap_proxy(T& x, T& y) { using std::swap; swap(x, y); @@ -222,7 +222,7 @@ namespace boost{ //! - Otherwise a move-based swap is called, equivalent to: //! <code>T t(::boost::move(x)); x = ::boost::move(y); y = ::boost::move(t);</code>. template<class T> -BOOST_MOVE_FORCEINLINE void adl_move_swap(T& x, T& y) +inline void adl_move_swap(T& x, T& y) { ::boost_move_adl_swap::swap_proxy(x, y); } diff --git a/contrib/restricted/boost/move/include/boost/move/algo/adaptive_merge.hpp b/contrib/restricted/boost/move/include/boost/move/algo/adaptive_merge.hpp index bba41bd2ad..5261d72963 100644 --- a/contrib/restricted/boost/move/include/boost/move/algo/adaptive_merge.hpp +++ b/contrib/restricted/boost/move/include/boost/move/algo/adaptive_merge.hpp @@ -19,6 +19,7 @@ #if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" #endif namespace boost { diff --git a/contrib/restricted/boost/move/include/boost/move/algo/detail/adaptive_sort_merge.hpp b/contrib/restricted/boost/move/include/boost/move/algo/detail/adaptive_sort_merge.hpp index 79c46996e0..2b45407d35 100644 --- a/contrib/restricted/boost/move/include/boost/move/algo/detail/adaptive_sort_merge.hpp +++ b/contrib/restricted/boost/move/include/boost/move/algo/detail/adaptive_sort_merge.hpp @@ -60,6 +60,7 @@ #if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" #endif #ifndef BOOST_MOVE_ADAPTIVE_SORT_STATS_LEVEL @@ -93,26 +94,12 @@ #define BOOST_MOVE_ADAPTIVE_SORT_INVARIANT(L) #endif -namespace boost { -namespace movelib { - #if defined(BOOST_MOVE_ADAPTIVE_SORT_INVARIANTS) +#include <boost/move/algo/detail/is_sorted.hpp> +#endif -bool is_sorted(::order_perf_type *first, ::order_perf_type *last, ::order_type_less) -{ - if (first != last) { - const order_perf_type *next = first, *cur(first); - while (++next != last) { - if (!(cur->key < next->key || (cur->key == next->key && cur->val < next->val))) - return false; - cur = next; - } - } - return true; -} - -#endif //BOOST_MOVE_ADAPTIVE_SORT_INVARIANTS - +namespace boost { +namespace movelib { namespace detail_adaptive { static const std::size_t AdaptiveSortInsertionSortThreshold = 16; @@ -1320,7 +1307,6 @@ void op_merge_blocks_with_buf //swap_and_update_key(key_next, key_range2, key_mid, first2, last2, first_min); buffer_end = buffer_and_update_key(key_next, key_range2, key_mid, first2, last2, first_min, buffer = buf_first, op); BOOST_MOVE_ADAPTIVE_SORT_PRINT_L2(" merge_blocks_w_swp: ", len); - BOOST_MOVE_ADAPTIVE_SORT_INVARIANT(boost::movelib::is_sorted(first2, last2, comp)); BOOST_MOVE_ADAPTIVE_SORT_INVARIANT(boost::movelib::is_sorted(first_min, last_min, comp)); first1 = first2; BOOST_MOVE_ADAPTIVE_SORT_INVARIANT(boost::movelib::is_sorted(first, first1, comp)); diff --git a/contrib/restricted/boost/move/include/boost/move/algo/detail/basic_op.hpp b/contrib/restricted/boost/move/include/boost/move/algo/detail/basic_op.hpp index 144280b3fc..43ae68d175 100644 --- a/contrib/restricted/boost/move/include/boost/move/algo/detail/basic_op.hpp +++ b/contrib/restricted/boost/move/include/boost/move/algo/detail/basic_op.hpp @@ -36,19 +36,19 @@ struct four_way_t{}; struct move_op { template <class SourceIt, class DestinationIt> - BOOST_MOVE_FORCEINLINE void operator()(SourceIt source, DestinationIt dest) + inline void operator()(SourceIt source, DestinationIt dest) { *dest = ::boost::move(*source); } template <class SourceIt, class DestinationIt> - BOOST_MOVE_FORCEINLINE DestinationIt operator()(forward_t, SourceIt first, SourceIt last, DestinationIt dest_begin) + inline DestinationIt operator()(forward_t, SourceIt first, SourceIt last, DestinationIt dest_begin) { return ::boost::move(first, last, dest_begin); } template <class SourceIt, class DestinationIt> - BOOST_MOVE_FORCEINLINE DestinationIt operator()(backward_t, SourceIt first, SourceIt last, DestinationIt dest_last) + inline DestinationIt operator()(backward_t, SourceIt first, SourceIt last, DestinationIt dest_last) { return ::boost::move_backward(first, last, dest_last); } template <class SourceIt, class DestinationIt1, class DestinationIt2> - BOOST_MOVE_FORCEINLINE void operator()(three_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it) + inline void operator()(three_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it) { *dest2it = boost::move(*dest1it); *dest1it = boost::move(*srcit); @@ -65,7 +65,7 @@ struct move_op } template <class SourceIt, class DestinationIt1, class DestinationIt2, class DestinationIt3> - BOOST_MOVE_FORCEINLINE void operator()(four_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it, DestinationIt3 dest3it) + inline void operator()(four_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it, DestinationIt3 dest3it) { *dest3it = boost::move(*dest2it); *dest2it = boost::move(*dest1it); @@ -76,19 +76,19 @@ struct move_op struct swap_op { template <class SourceIt, class DestinationIt> - BOOST_MOVE_FORCEINLINE void operator()(SourceIt source, DestinationIt dest) + inline void operator()(SourceIt source, DestinationIt dest) { boost::adl_move_swap(*dest, *source); } template <class SourceIt, class DestinationIt> - BOOST_MOVE_FORCEINLINE DestinationIt operator()(forward_t, SourceIt first, SourceIt last, DestinationIt dest_begin) + inline DestinationIt operator()(forward_t, SourceIt first, SourceIt last, DestinationIt dest_begin) { return boost::adl_move_swap_ranges(first, last, dest_begin); } template <class SourceIt, class DestinationIt> - BOOST_MOVE_FORCEINLINE DestinationIt operator()(backward_t, SourceIt first, SourceIt last, DestinationIt dest_begin) + inline DestinationIt operator()(backward_t, SourceIt first, SourceIt last, DestinationIt dest_begin) { return boost::adl_move_swap_ranges_backward(first, last, dest_begin); } template <class SourceIt, class DestinationIt1, class DestinationIt2> - BOOST_MOVE_FORCEINLINE void operator()(three_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it) + inline void operator()(three_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it) { typename ::boost::movelib::iterator_traits<SourceIt>::value_type tmp(boost::move(*dest2it)); *dest2it = boost::move(*dest1it); @@ -106,7 +106,7 @@ struct swap_op } template <class SourceIt, class DestinationIt1, class DestinationIt2, class DestinationIt3> - BOOST_MOVE_FORCEINLINE void operator()(four_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it, DestinationIt3 dest3it) + inline void operator()(four_way_t, SourceIt srcit, DestinationIt1 dest1it, DestinationIt2 dest2it, DestinationIt3 dest3it) { typename ::boost::movelib::iterator_traits<SourceIt>::value_type tmp(boost::move(*dest3it)); *dest3it = boost::move(*dest2it); diff --git a/contrib/restricted/boost/move/include/boost/move/algo/detail/heap_sort.hpp b/contrib/restricted/boost/move/include/boost/move/algo/detail/heap_sort.hpp index 60db353ed8..4ed5a1c7a6 100644 --- a/contrib/restricted/boost/move/include/boost/move/algo/detail/heap_sort.hpp +++ b/contrib/restricted/boost/move/include/boost/move/algo/detail/heap_sort.hpp @@ -106,7 +106,7 @@ class heap_sort_helper }; template <class RandomAccessIterator, class Compare> -BOOST_MOVE_FORCEINLINE void heap_sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp) +inline void heap_sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp) { heap_sort_helper<RandomAccessIterator, Compare>::sort(first, last, comp); } diff --git a/contrib/restricted/boost/move/include/boost/move/algo/detail/merge.hpp b/contrib/restricted/boost/move/include/boost/move/algo/detail/merge.hpp index ad260046ab..f9f12757e1 100644 --- a/contrib/restricted/boost/move/include/boost/move/algo/detail/merge.hpp +++ b/contrib/restricted/boost/move/include/boost/move/algo/detail/merge.hpp @@ -43,11 +43,11 @@ class adaptive_xbuf typedef RandRawIt iterator; typedef SizeType size_type; - BOOST_MOVE_FORCEINLINE adaptive_xbuf() + inline adaptive_xbuf() : m_ptr(), m_size(0), m_capacity(0) {} - BOOST_MOVE_FORCEINLINE adaptive_xbuf(RandRawIt raw_memory, size_type cap) + inline adaptive_xbuf(RandRawIt raw_memory, size_type cap) : m_ptr(raw_memory), m_size(0), m_capacity(cap) {} @@ -102,7 +102,7 @@ class adaptive_xbuf } } - BOOST_MOVE_FORCEINLINE void set_size(size_type sz) + inline void set_size(size_type sz) { m_size = sz; } @@ -144,12 +144,12 @@ class adaptive_xbuf private: template<class RIt> - BOOST_MOVE_FORCEINLINE static bool is_raw_ptr(RIt) + inline static bool is_raw_ptr(RIt) { return false; } - BOOST_MOVE_FORCEINLINE static bool is_raw_ptr(T*) + inline static bool is_raw_ptr(T*) { return true; } @@ -168,43 +168,43 @@ class adaptive_xbuf } template<class U> - BOOST_MOVE_FORCEINLINE U *aligned_trailing() const + inline U *aligned_trailing() const { return this->aligned_trailing<U>(this->size()); } template<class U> - BOOST_MOVE_FORCEINLINE U *aligned_trailing(size_type pos) const + inline U *aligned_trailing(size_type pos) const { uintptr_t u_addr = uintptr_t(&*(this->data()+pos)); u_addr = ((u_addr + sizeof(U)-1)/sizeof(U))*sizeof(U); return (U*)u_addr; } - BOOST_MOVE_FORCEINLINE ~adaptive_xbuf() + inline ~adaptive_xbuf() { this->clear(); } - BOOST_MOVE_FORCEINLINE size_type capacity() const + inline size_type capacity() const { return m_capacity; } - BOOST_MOVE_FORCEINLINE iterator data() const + inline iterator data() const { return m_ptr; } - BOOST_MOVE_FORCEINLINE iterator begin() const + inline iterator begin() const { return m_ptr; } - BOOST_MOVE_FORCEINLINE iterator end() const + inline iterator end() const { return m_ptr+m_size; } - BOOST_MOVE_FORCEINLINE size_type size() const + inline size_type size() const { return m_size; } - BOOST_MOVE_FORCEINLINE bool empty() const + inline bool empty() const { return !m_size; } - BOOST_MOVE_FORCEINLINE void clear() + inline void clear() { this->shrink_to_fit(0u); } diff --git a/contrib/restricted/boost/move/include/boost/move/algo/predicate.hpp b/contrib/restricted/boost/move/include/boost/move/algo/predicate.hpp index 58a4d620c3..023066a129 100644 --- a/contrib/restricted/boost/move/include/boost/move/algo/predicate.hpp +++ b/contrib/restricted/boost/move/include/boost/move/algo/predicate.hpp @@ -24,19 +24,19 @@ namespace movelib { template<class Comp> struct antistable { - BOOST_MOVE_FORCEINLINE explicit antistable(Comp &comp) + inline explicit antistable(Comp &comp) : m_comp(comp) {} - BOOST_MOVE_FORCEINLINE antistable(const antistable & other) + inline antistable(const antistable & other) : m_comp(other.m_comp) {} template<class U, class V> - BOOST_MOVE_FORCEINLINE bool operator()(const U &u, const V & v) + inline bool operator()(const U &u, const V & v) { return !m_comp(v, u); } - BOOST_MOVE_FORCEINLINE const Comp &get() const + inline const Comp &get() const { return m_comp; } private: @@ -56,15 +56,15 @@ template <class Comp> class negate { public: - BOOST_MOVE_FORCEINLINE negate() + inline negate() {} - BOOST_MOVE_FORCEINLINE explicit negate(Comp comp) + inline explicit negate(Comp comp) : m_comp(comp) {} template <class T1, class T2> - BOOST_MOVE_FORCEINLINE bool operator()(const T1& l, const T2& r) + inline bool operator()(const T1& l, const T2& r) { return !m_comp(l, r); } @@ -78,15 +78,15 @@ template <class Comp> class inverse { public: - BOOST_MOVE_FORCEINLINE inverse() + inline inverse() {} - BOOST_MOVE_FORCEINLINE explicit inverse(Comp comp) + inline explicit inverse(Comp comp) : m_comp(comp) {} template <class T1, class T2> - BOOST_MOVE_FORCEINLINE bool operator()(const T1& l, const T2& r) + inline bool operator()(const T1& l, const T2& r) { return m_comp(r, l); } diff --git a/contrib/restricted/boost/move/include/boost/move/core.hpp b/contrib/restricted/boost/move/include/boost/move/core.hpp index 68f8f2a126..79205d6526 100644 --- a/contrib/restricted/boost/move/include/boost/move/core.hpp +++ b/contrib/restricted/boost/move/include/boost/move/core.hpp @@ -262,12 +262,12 @@ #define BOOST_COPYABLE_AND_MOVABLE(TYPE)\ public:\ - BOOST_MOVE_FORCEINLINE TYPE& operator=(TYPE &t)\ + inline TYPE& operator=(TYPE &t)\ { this->operator=(const_cast<const TYPE&>(t)); return *this;}\ public:\ - BOOST_MOVE_FORCEINLINE operator ::boost::rv<TYPE>&() \ + inline operator ::boost::rv<TYPE>&() \ { return *BOOST_MOVE_TO_RV_CAST(::boost::rv<TYPE>*, this); }\ - BOOST_MOVE_FORCEINLINE operator const ::boost::rv<TYPE>&() const \ + inline operator const ::boost::rv<TYPE>&() const \ { return *BOOST_MOVE_TO_RV_CAST(const ::boost::rv<TYPE>*, this); }\ private:\ // diff --git a/contrib/restricted/boost/move/include/boost/move/detail/iterator_to_raw_pointer.hpp b/contrib/restricted/boost/move/include/boost/move/detail/iterator_to_raw_pointer.hpp index 67afd6c1ef..97ee3a6595 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/iterator_to_raw_pointer.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/iterator_to_raw_pointer.hpp @@ -27,11 +27,11 @@ namespace movelib { namespace detail { template <class T> -BOOST_MOVE_FORCEINLINE T* iterator_to_pointer(T* i) +inline T* iterator_to_pointer(T* i) { return i; } template <class Iterator> -BOOST_MOVE_FORCEINLINE typename boost::movelib::iterator_traits<Iterator>::pointer +inline typename boost::movelib::iterator_traits<Iterator>::pointer iterator_to_pointer(const Iterator &i) { return i.operator->(); } @@ -46,7 +46,7 @@ struct iterator_to_element_ptr } //namespace detail { template <class Iterator> -BOOST_MOVE_FORCEINLINE typename boost::movelib::detail::iterator_to_element_ptr<Iterator>::type +inline typename boost::movelib::detail::iterator_to_element_ptr<Iterator>::type iterator_to_raw_pointer(const Iterator &i) { return ::boost::movelib::to_raw_pointer diff --git a/contrib/restricted/boost/move/include/boost/move/detail/meta_utils.hpp b/contrib/restricted/boost/move/include/boost/move/detail/meta_utils.hpp index 7c90de287e..ad5654a395 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/meta_utils.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/meta_utils.hpp @@ -57,8 +57,8 @@ struct apply template< bool C_ > struct bool_ : integral_constant<bool, C_> { - BOOST_MOVE_FORCEINLINE operator bool() const { return C_; } - BOOST_MOVE_FORCEINLINE bool operator()() const { return C_; } + inline operator bool() const { return C_; } + inline bool operator()() const { return C_; } }; typedef bool_<true> true_; diff --git a/contrib/restricted/boost/move/include/boost/move/detail/move_helpers.hpp b/contrib/restricted/boost/move/include/boost/move/detail/move_helpers.hpp index 17138444d1..89c73a090b 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/move_helpers.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/move_helpers.hpp @@ -69,13 +69,13 @@ {}; #define BOOST_MOVE_CONVERSION_AWARE_CATCH_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\ + inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\ { return FWD_FUNCTION(static_cast<const TYPE&>(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ + inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ { return FWD_FUNCTION(::boost::move(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(TYPE &x)\ + inline RETURN_VALUE PUB_FUNCTION(TYPE &x)\ { return FWD_FUNCTION(const_cast<const TYPE &>(x)); }\ // #if defined(BOOST_MOVE_HELPERS_RETURN_SFINAE_BROKEN) @@ -83,12 +83,12 @@ BOOST_MOVE_CONVERSION_AWARE_CATCH_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\ + inline RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\ typename boost_move_conversion_aware_catch_1< ::boost::move_detail::nat, BOOST_MOVE_TEMPL_PARAM, TYPE>::type* = 0)\ { return FWD_FUNCTION(u); }\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\ + inline RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\ typename boost_move_conversion_aware_catch_2< ::boost::move_detail::nat, BOOST_MOVE_TEMPL_PARAM, TYPE>::type* = 0)\ {\ TYPE t((u));\ @@ -100,12 +100,12 @@ BOOST_MOVE_CONVERSION_AWARE_CATCH_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\ + inline typename boost_move_conversion_aware_catch_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\ PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\ { return FWD_FUNCTION(u); }\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\ + inline typename boost_move_conversion_aware_catch_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\ PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\ {\ TYPE t((u));\ @@ -116,14 +116,14 @@ #elif (defined(_MSC_VER) && (_MSC_VER == 1600)) #define BOOST_MOVE_CONVERSION_AWARE_CATCH(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\ + inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\ { return FWD_FUNCTION(static_cast<const TYPE&>(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ + inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ { return FWD_FUNCTION(::boost::move(x)); }\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c\ + inline typename ::boost::move_detail::enable_if_c\ < !::boost::move_detail::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM>::value\ , RETURN_VALUE >::type\ PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\ @@ -136,10 +136,10 @@ #else //BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_MOVE_CONVERSION_AWARE_CATCH(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\ + inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\ { return FWD_FUNCTION(x); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ + inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ { return FWD_FUNCTION(::boost::move(x)); }\ // @@ -174,13 +174,13 @@ {}; #define BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\ { return FWD_FUNCTION(arg1, static_cast<const TYPE&>(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ { return FWD_FUNCTION(arg1, ::boost::move(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, TYPE &x)\ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, TYPE &x)\ { return FWD_FUNCTION(arg1, const_cast<const TYPE &>(x)); }\ // #if defined(BOOST_MOVE_HELPERS_RETURN_SFINAE_BROKEN) @@ -188,12 +188,12 @@ BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\ typename boost_move_conversion_aware_catch_1arg_1<void, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type* = 0)\ { return FWD_FUNCTION(arg1, u); }\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\ typename boost_move_conversion_aware_catch_1arg_2<void, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type* = 0)\ {\ TYPE t((u));\ @@ -205,12 +205,12 @@ BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_1arg_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\ + inline typename boost_move_conversion_aware_catch_1arg_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\ PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u)\ { return FWD_FUNCTION(arg1, u); }\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_1arg_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\ + inline typename boost_move_conversion_aware_catch_1arg_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\ PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u)\ {\ TYPE t((u));\ @@ -222,14 +222,14 @@ #elif (defined(_MSC_VER) && (_MSC_VER == 1600)) #define BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\ { return FWD_FUNCTION(arg1, static_cast<const TYPE&>(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ { return FWD_FUNCTION(arg1, ::boost::move(x)); }\ \ template<class BOOST_MOVE_TEMPL_PARAM>\ - BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::disable_if_or\ + inline typename ::boost::move_detail::disable_if_or\ < RETURN_VALUE \ , ::boost::move_detail::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM> \ , ::boost::move_detail::is_same_or_convertible<BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO> \ @@ -244,10 +244,10 @@ #else #define BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\ { return FWD_FUNCTION(arg1, static_cast<const TYPE&>(x)); }\ \ - BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ + inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \ { return FWD_FUNCTION(arg1, ::boost::move(x)); }\ // diff --git a/contrib/restricted/boost/move/include/boost/move/detail/reverse_iterator.hpp b/contrib/restricted/boost/move/include/boost/move/detail/reverse_iterator.hpp index 7fda6edf0d..19fb2877c6 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/reverse_iterator.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/reverse_iterator.hpp @@ -29,7 +29,7 @@ namespace boost { namespace movelib { template<class I> -BOOST_MOVE_FORCEINLINE typename iterator_traits<I>::pointer iterator_arrow_result(const I &i) +inline typename iterator_traits<I>::pointer iterator_arrow_result(const I &i) { return i.operator->(); } template<class T> @@ -49,38 +49,38 @@ class reverse_iterator typedef It iterator_type; - BOOST_MOVE_FORCEINLINE reverse_iterator() + inline reverse_iterator() : m_current() //Value initialization to achieve "null iterators" (N3644) {} - BOOST_MOVE_FORCEINLINE explicit reverse_iterator(It r) + inline explicit reverse_iterator(It r) : m_current(r) {} - BOOST_MOVE_FORCEINLINE reverse_iterator(const reverse_iterator& r) + inline reverse_iterator(const reverse_iterator& r) : m_current(r.base()) {} template<class OtherIt> - BOOST_MOVE_FORCEINLINE + inline reverse_iterator( const reverse_iterator<OtherIt>& r , typename boost::move_detail::enable_if_convertible<OtherIt, It>::type* =0 ) : m_current(r.base()) {} - BOOST_MOVE_FORCEINLINE reverse_iterator & operator=( const reverse_iterator& r) + inline reverse_iterator & operator=( const reverse_iterator& r) { m_current = r.base(); return *this; } template<class OtherIt> - BOOST_MOVE_FORCEINLINE typename boost::move_detail::enable_if_convertible<OtherIt, It, reverse_iterator &>::type + inline typename boost::move_detail::enable_if_convertible<OtherIt, It, reverse_iterator &>::type operator=( const reverse_iterator<OtherIt>& r) { m_current = r.base(); return *this; } - BOOST_MOVE_FORCEINLINE It base() const + inline It base() const { return m_current; } - BOOST_MOVE_FORCEINLINE reference operator*() const + inline reference operator*() const { It temp(m_current); --temp; @@ -88,78 +88,78 @@ class reverse_iterator return r; } - BOOST_MOVE_FORCEINLINE pointer operator->() const + inline pointer operator->() const { It temp(m_current); --temp; return (iterator_arrow_result)(temp); } - BOOST_MOVE_FORCEINLINE reference operator[](difference_type off) const + inline reference operator[](difference_type off) const { return this->m_current[difference_type(-off - 1)]; } - BOOST_MOVE_FORCEINLINE reverse_iterator& operator++() + inline reverse_iterator& operator++() { --m_current; return *this; } - BOOST_MOVE_FORCEINLINE reverse_iterator operator++(int) + inline reverse_iterator operator++(int) { reverse_iterator temp((*this)); --m_current; return temp; } - BOOST_MOVE_FORCEINLINE reverse_iterator& operator--() + inline reverse_iterator& operator--() { ++m_current; return *this; } - BOOST_MOVE_FORCEINLINE reverse_iterator operator--(int) + inline reverse_iterator operator--(int) { reverse_iterator temp((*this)); ++m_current; return temp; } - BOOST_MOVE_FORCEINLINE friend bool operator==(const reverse_iterator& l, const reverse_iterator& r) + inline friend bool operator==(const reverse_iterator& l, const reverse_iterator& r) { return l.m_current == r.m_current; } - BOOST_MOVE_FORCEINLINE friend bool operator!=(const reverse_iterator& l, const reverse_iterator& r) + inline friend bool operator!=(const reverse_iterator& l, const reverse_iterator& r) { return l.m_current != r.m_current; } - BOOST_MOVE_FORCEINLINE friend bool operator<(const reverse_iterator& l, const reverse_iterator& r) + inline friend bool operator<(const reverse_iterator& l, const reverse_iterator& r) { return l.m_current > r.m_current; } - BOOST_MOVE_FORCEINLINE friend bool operator<=(const reverse_iterator& l, const reverse_iterator& r) + inline friend bool operator<=(const reverse_iterator& l, const reverse_iterator& r) { return l.m_current >= r.m_current; } - BOOST_MOVE_FORCEINLINE friend bool operator>(const reverse_iterator& l, const reverse_iterator& r) + inline friend bool operator>(const reverse_iterator& l, const reverse_iterator& r) { return l.m_current < r.m_current; } - BOOST_MOVE_FORCEINLINE friend bool operator>=(const reverse_iterator& l, const reverse_iterator& r) + inline friend bool operator>=(const reverse_iterator& l, const reverse_iterator& r) { return l.m_current <= r.m_current; } - BOOST_MOVE_FORCEINLINE reverse_iterator& operator+=(difference_type off) + inline reverse_iterator& operator+=(difference_type off) { m_current -= off; return *this; } - BOOST_MOVE_FORCEINLINE reverse_iterator& operator-=(difference_type off) + inline reverse_iterator& operator-=(difference_type off) { m_current += off; return *this; } - BOOST_MOVE_FORCEINLINE friend reverse_iterator operator+(reverse_iterator l, difference_type off) + inline friend reverse_iterator operator+(reverse_iterator l, difference_type off) { return (l += off); } - BOOST_MOVE_FORCEINLINE friend reverse_iterator operator+(difference_type off, reverse_iterator r) + inline friend reverse_iterator operator+(difference_type off, reverse_iterator r) { return (r += off); } - BOOST_MOVE_FORCEINLINE friend reverse_iterator operator-(reverse_iterator l, difference_type off) + inline friend reverse_iterator operator-(reverse_iterator l, difference_type off) { return (l-= off); } - BOOST_MOVE_FORCEINLINE friend difference_type operator-(const reverse_iterator& l, const reverse_iterator& r) + inline friend difference_type operator-(const reverse_iterator& l, const reverse_iterator& r) { return r.m_current - l.m_current; } private: @@ -167,7 +167,7 @@ class reverse_iterator }; template< class Iterator > -BOOST_MOVE_FORCEINLINE reverse_iterator<Iterator> make_reverse_iterator( Iterator i ) +inline reverse_iterator<Iterator> make_reverse_iterator( Iterator i ) { return reverse_iterator<Iterator>(i); } } //namespace movelib { diff --git a/contrib/restricted/boost/move/include/boost/move/detail/to_raw_pointer.hpp b/contrib/restricted/boost/move/include/boost/move/detail/to_raw_pointer.hpp index 7e89beb4db..06beb2d42c 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/to_raw_pointer.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/to_raw_pointer.hpp @@ -33,7 +33,7 @@ BOOST_MOVE_FORCEINLINE T* to_raw_pointer(T* p) { return p; } template <class Pointer> -BOOST_MOVE_FORCEINLINE typename boost::movelib::pointer_element<Pointer>::type* +inline typename boost::movelib::pointer_element<Pointer>::type* to_raw_pointer(const Pointer &p) { return ::boost::movelib::to_raw_pointer(p.operator->()); } diff --git a/contrib/restricted/boost/move/include/boost/move/detail/type_traits.hpp b/contrib/restricted/boost/move/include/boost/move/detail/type_traits.hpp index 5a093186cb..84dcbceb73 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/type_traits.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/type_traits.hpp @@ -582,6 +582,28 @@ struct remove_cvref }; ////////////////////////// +// is_unsigned +////////////////////////// +template<class T> struct is_unsigned_cv { static const bool value = true; }; +template <> struct is_unsigned_cv<signed char> { static const bool value = false; }; +template <> struct is_unsigned_cv<signed short> { static const bool value = false; }; +template <> struct is_unsigned_cv<signed int> { static const bool value = false; }; +template <> struct is_unsigned_cv<signed long> { static const bool value = false; }; +#ifdef BOOST_HAS_LONG_LONG +template <> struct is_unsigned_cv< ::boost::long_long_type > { static const bool value = false; }; +#endif + +#ifdef BOOST_HAS_INT128 +template <> struct is_unsigned_cv< ::boost::int128_type > { static const bool value = false; }; +#endif + +template <class T> +struct is_unsigned + : is_unsigned_cv<typename remove_cv<T>::type> +{}; + + +////////////////////////// // make_unsigned ////////////////////////// template <class T> @@ -594,6 +616,11 @@ template <> struct make_unsigned_impl<signed long> { typedef uns template <> struct make_unsigned_impl< ::boost::long_long_type > { typedef ::boost::ulong_long_type type; }; #endif +#ifdef BOOST_HAS_INT128 +template <> struct make_unsigned_impl< ::boost::int128_type > { typedef ::boost::uint128_type type; }; +#endif + + template <class T> struct make_unsigned : make_unsigned_impl<typename remove_cv<T>::type> @@ -639,6 +666,13 @@ template<> struct is_integral_cv< unsigned long>{ static const bool template<> struct is_integral_cv< ::boost:: long_long_type>{ static const bool value = true; }; template<> struct is_integral_cv< ::boost::ulong_long_type>{ static const bool value = true; }; #endif +#ifdef BOOST_HAS_INT128 +template <> struct is_integral_cv< ::boost::int128_type > { static const bool value = true; }; +template <> struct is_integral_cv< ::boost::uint128_type > { static const bool value = true; }; +#endif +#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L +template<> struct is_integral_cv<char8_t> { static const bool value = true; }; +#endif template<class T> struct is_integral @@ -661,13 +695,6 @@ struct remove_all_extents<T[N]> { typedef typename remove_all_extents<T>::type type;}; ////////////////////////// -// is_scalar -////////////////////////// -template<class T> -struct is_scalar -{ static const bool value = is_integral<T>::value || is_floating_point<T>::value; }; - -////////////////////////// // is_void ////////////////////////// template<class T> @@ -732,6 +759,11 @@ struct is_nullptr_t : is_nullptr_t_cv<typename remove_cv<T>::type> {}; +template <class T> +struct is_null_pointer + : is_nullptr_t_cv<typename remove_cv<T>::type> +{}; + ////////////////////////////////////// // is_function ////////////////////////////////////// @@ -802,6 +834,7 @@ struct is_arithmetic is_integral<T>::value; }; + ////////////////////////////////////// // is_member_function_pointer ////////////////////////////////////// @@ -829,21 +862,38 @@ struct is_member_function_pointer template <class T> struct is_enum_nonintrinsic { - static const bool value = !is_arithmetic<T>::value && - !is_reference<T>::value && - !is_class_or_union<T>::value && - !is_array<T>::value && - !is_void<T>::value && - !is_nullptr_t<T>::value && - !is_member_pointer<T>::value && - !is_pointer<T>::value && - !is_function<T>::value; + static const bool value = !is_arithmetic<T>::value && + !is_reference<T>::value && + !is_class_or_union<T>::value && + !is_array<T>::value && + !is_void<T>::value && + !is_nullptr_t<T>::value && + !is_member_pointer<T>::value && + !is_pointer<T>::value && + !is_function<T>::value; }; #endif template <class T> struct is_enum -{ static const bool value = BOOST_MOVE_IS_ENUM_IMPL(T); }; +{ + static const bool value = BOOST_MOVE_IS_ENUM_IMPL(T); +}; + + +////////////////////////// +// is_scalar +////////////////////////// +template<class T> +struct is_scalar +{ + static const bool value = is_arithmetic<T>::value || + is_enum<T>::value || + is_pointer<T>::value || + is_member_pointer<T>::value || + is_null_pointer<T>::value; +}; + ////////////////////////////////////// // is_pod diff --git a/contrib/restricted/boost/move/include/boost/move/detail/workaround.hpp b/contrib/restricted/boost/move/include/boost/move/detail/workaround.hpp index 2fcd027d8d..5edfcee1f2 100644 --- a/contrib/restricted/boost/move/include/boost/move/detail/workaround.hpp +++ b/contrib/restricted/boost/move/include/boost/move/detail/workaround.hpp @@ -61,8 +61,11 @@ #elif defined(BOOST_MSVC) && (_MSC_VER < 1900 || defined(_DEBUG)) //"__forceinline" and MSVC seems to have some bugs in old versions and in debug mode #define BOOST_MOVE_FORCEINLINE inline -#elif defined(BOOST_GCC) && (__GNUC__ <= 5) +#elif defined(BOOST_CLANG) || (defined(BOOST_GCC) && ((__GNUC__ <= 5) || defined(__MINGW32__))) //Older GCCs have problems with forceinline + //Clang can have code bloat issues with forceinline, see + //https://lists.boost.org/boost-users/2023/04/91445.php and + //https://github.com/llvm/llvm-project/issues/62202 #define BOOST_MOVE_FORCEINLINE inline #else #define BOOST_MOVE_FORCEINLINE BOOST_FORCEINLINE @@ -126,7 +129,7 @@ template<unsigned> struct static_assert_test {}; #define BOOST_MOVE_STATIC_ASSERT(B) \ typedef ::boost::move_detail::static_assert_test<\ (unsigned)sizeof(::boost::move_detail::STATIC_ASSERTION_FAILURE<bool(B)>)>\ - BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED + BOOST_JOIN(boost_move_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED #endif diff --git a/contrib/restricted/boost/move/include/boost/move/iterator.hpp b/contrib/restricted/boost/move/include/boost/move/iterator.hpp index c289c08364..7d1636e050 100644 --- a/contrib/restricted/boost/move/include/boost/move/iterator.hpp +++ b/contrib/restricted/boost/move/include/boost/move/iterator.hpp @@ -58,20 +58,20 @@ class move_iterator typedef typename boost::movelib::iterator_traits<iterator_type>::difference_type difference_type; typedef typename boost::movelib::iterator_traits<iterator_type>::iterator_category iterator_category; - BOOST_MOVE_FORCEINLINE move_iterator() + inline move_iterator() : m_it() {} - BOOST_MOVE_FORCEINLINE explicit move_iterator(const It &i) + inline explicit move_iterator(const It &i) : m_it(i) {} template <class U> - BOOST_MOVE_FORCEINLINE move_iterator(const move_iterator<U>& u) + inline move_iterator(const move_iterator<U>& u) : m_it(u.m_it) {} - BOOST_MOVE_FORCEINLINE reference operator*() const + inline reference operator*() const { #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES) return *m_it; @@ -80,34 +80,34 @@ class move_iterator #endif } - BOOST_MOVE_FORCEINLINE pointer operator->() const + inline pointer operator->() const { return m_it; } - BOOST_MOVE_FORCEINLINE move_iterator& operator++() + inline move_iterator& operator++() { ++m_it; return *this; } - BOOST_MOVE_FORCEINLINE move_iterator<iterator_type> operator++(int) + inline move_iterator<iterator_type> operator++(int) { move_iterator<iterator_type> tmp(*this); ++(*this); return tmp; } - BOOST_MOVE_FORCEINLINE move_iterator& operator--() + inline move_iterator& operator--() { --m_it; return *this; } - BOOST_MOVE_FORCEINLINE move_iterator<iterator_type> operator--(int) + inline move_iterator<iterator_type> operator--(int) { move_iterator<iterator_type> tmp(*this); --(*this); return tmp; } move_iterator<iterator_type> operator+ (difference_type n) const { return move_iterator<iterator_type>(m_it + n); } - BOOST_MOVE_FORCEINLINE move_iterator& operator+=(difference_type n) + inline move_iterator& operator+=(difference_type n) { m_it += n; return *this; } - BOOST_MOVE_FORCEINLINE move_iterator<iterator_type> operator- (difference_type n) const + inline move_iterator<iterator_type> operator- (difference_type n) const { return move_iterator<iterator_type>(m_it - n); } - BOOST_MOVE_FORCEINLINE move_iterator& operator-=(difference_type n) + inline move_iterator& operator-=(difference_type n) { m_it -= n; return *this; } - BOOST_MOVE_FORCEINLINE reference operator[](difference_type n) const + inline reference operator[](difference_type n) const { #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES) return m_it[n]; @@ -116,28 +116,28 @@ class move_iterator #endif } - BOOST_MOVE_FORCEINLINE friend bool operator==(const move_iterator& x, const move_iterator& y) + inline friend bool operator==(const move_iterator& x, const move_iterator& y) { return x.m_it == y.m_it; } - BOOST_MOVE_FORCEINLINE friend bool operator!=(const move_iterator& x, const move_iterator& y) + inline friend bool operator!=(const move_iterator& x, const move_iterator& y) { return x.m_it != y.m_it; } - BOOST_MOVE_FORCEINLINE friend bool operator< (const move_iterator& x, const move_iterator& y) + inline friend bool operator< (const move_iterator& x, const move_iterator& y) { return x.m_it < y.m_it; } - BOOST_MOVE_FORCEINLINE friend bool operator<=(const move_iterator& x, const move_iterator& y) + inline friend bool operator<=(const move_iterator& x, const move_iterator& y) { return x.m_it <= y.m_it; } - BOOST_MOVE_FORCEINLINE friend bool operator> (const move_iterator& x, const move_iterator& y) + inline friend bool operator> (const move_iterator& x, const move_iterator& y) { return x.m_it > y.m_it; } - BOOST_MOVE_FORCEINLINE friend bool operator>=(const move_iterator& x, const move_iterator& y) + inline friend bool operator>=(const move_iterator& x, const move_iterator& y) { return x.m_it >= y.m_it; } - BOOST_MOVE_FORCEINLINE friend difference_type operator-(const move_iterator& x, const move_iterator& y) + inline friend difference_type operator-(const move_iterator& x, const move_iterator& y) { return x.m_it - y.m_it; } - BOOST_MOVE_FORCEINLINE friend move_iterator operator+(difference_type n, const move_iterator& x) + inline friend move_iterator operator+(difference_type n, const move_iterator& x) { return move_iterator(x.m_it + n); } private: @@ -170,7 +170,7 @@ struct is_move_iterator< ::boost::move_iterator<I> > //! //! <b>Returns</b>: move_iterator<It>(i). template<class It> -BOOST_MOVE_FORCEINLINE move_iterator<It> make_move_iterator(const It &it) +inline move_iterator<It> make_move_iterator(const It &it) { return move_iterator<It>(it); } ////////////////////////////////////////////////////////////////////////////// diff --git a/contrib/restricted/boost/move/include/boost/move/unique_ptr.hpp b/contrib/restricted/boost/move/include/boost/move/unique_ptr.hpp index 2102872285..6a9bb67a94 100644 --- a/contrib/restricted/boost/move/include/boost/move/unique_ptr.hpp +++ b/contrib/restricted/boost/move/include/boost/move/unique_ptr.hpp @@ -92,25 +92,25 @@ struct unique_ptr_data typedef typename deleter_types<D>::del_ref del_ref; typedef typename deleter_types<D>::del_cref del_cref; - BOOST_MOVE_FORCEINLINE unique_ptr_data() BOOST_NOEXCEPT + inline unique_ptr_data() BOOST_NOEXCEPT : m_p(), d() {} - BOOST_MOVE_FORCEINLINE explicit unique_ptr_data(P p) BOOST_NOEXCEPT + inline explicit unique_ptr_data(P p) BOOST_NOEXCEPT : m_p(p), d() {} - BOOST_MOVE_FORCEINLINE unique_ptr_data(P p, deleter_arg_type1 d1) BOOST_NOEXCEPT + inline unique_ptr_data(P p, deleter_arg_type1 d1) BOOST_NOEXCEPT : m_p(p), d(d1) {} template <class U> - BOOST_MOVE_FORCEINLINE unique_ptr_data(P p, BOOST_FWD_REF(U) d1) BOOST_NOEXCEPT + inline unique_ptr_data(P p, BOOST_FWD_REF(U) d1) BOOST_NOEXCEPT : m_p(p), d(::boost::forward<U>(d1)) {} - BOOST_MOVE_FORCEINLINE del_ref deleter() { return d; } - BOOST_MOVE_FORCEINLINE del_cref deleter() const{ return d; } + inline del_ref deleter() { return d; } + inline del_cref deleter() const{ return d; } P m_p; D d; @@ -128,25 +128,25 @@ struct unique_ptr_data<P, D, false> typedef typename deleter_types<D>::del_ref del_ref; typedef typename deleter_types<D>::del_cref del_cref; - BOOST_MOVE_FORCEINLINE unique_ptr_data() BOOST_NOEXCEPT + inline unique_ptr_data() BOOST_NOEXCEPT : D(), m_p() {} - BOOST_MOVE_FORCEINLINE explicit unique_ptr_data(P p) BOOST_NOEXCEPT + inline explicit unique_ptr_data(P p) BOOST_NOEXCEPT : D(), m_p(p) {} - BOOST_MOVE_FORCEINLINE unique_ptr_data(P p, deleter_arg_type1 d1) BOOST_NOEXCEPT + inline unique_ptr_data(P p, deleter_arg_type1 d1) BOOST_NOEXCEPT : D(d1), m_p(p) {} template <class U> - BOOST_MOVE_FORCEINLINE unique_ptr_data(P p, BOOST_FWD_REF(U) d) BOOST_NOEXCEPT + inline unique_ptr_data(P p, BOOST_FWD_REF(U) d) BOOST_NOEXCEPT : D(::boost::forward<U>(d)), m_p(p) {} - BOOST_MOVE_FORCEINLINE del_ref deleter() BOOST_NOEXCEPT { return static_cast<del_ref>(*this); } - BOOST_MOVE_FORCEINLINE del_cref deleter() const BOOST_NOEXCEPT { return static_cast<del_cref>(*this); } + inline del_ref deleter() BOOST_NOEXCEPT { return static_cast<del_ref>(*this); } + inline del_cref deleter() const BOOST_NOEXCEPT { return static_cast<del_cref>(*this); } P m_p; @@ -388,7 +388,7 @@ class unique_ptr //! //! <b>Remarks</b>: If this constructor is instantiated with a pointer type or reference type //! for the template argument D, the program is ill-formed. - BOOST_MOVE_FORCEINLINE BOOST_CONSTEXPR unique_ptr() BOOST_NOEXCEPT + inline BOOST_CONSTEXPR unique_ptr() BOOST_NOEXCEPT : m_data() { //If this constructor is instantiated with a pointer type or reference type @@ -399,7 +399,7 @@ class unique_ptr //! <b>Effects</b>: Same as <tt>unique_ptr()</tt> (default constructor). //! - BOOST_MOVE_FORCEINLINE BOOST_CONSTEXPR unique_ptr(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) BOOST_NOEXCEPT + inline BOOST_CONSTEXPR unique_ptr(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) BOOST_NOEXCEPT : m_data() { //If this constructor is instantiated with a pointer type or reference type @@ -422,7 +422,7 @@ class unique_ptr //! - If T is not an array type and Pointer is implicitly convertible to pointer. //! - If T is an array type and Pointer is a more CV qualified pointer to element_type. template<class Pointer> - BOOST_MOVE_FORCEINLINE explicit unique_ptr(Pointer p + inline explicit unique_ptr(Pointer p BOOST_MOVE_DOCIGN(BOOST_MOVE_I typename bmupd::enable_up_ptr<T BOOST_MOVE_I Pointer BOOST_MOVE_I pointer>::type* =0) ) BOOST_NOEXCEPT : m_data(p) @@ -460,7 +460,7 @@ class unique_ptr //! - If T is not an array type and Pointer is implicitly convertible to pointer. //! - If T is an array type and Pointer is a more CV qualified pointer to element_type. template<class Pointer> - BOOST_MOVE_FORCEINLINE unique_ptr(Pointer p, BOOST_MOVE_SEEDOC(deleter_arg_type1) d1 + inline unique_ptr(Pointer p, BOOST_MOVE_SEEDOC(deleter_arg_type1) d1 BOOST_MOVE_DOCIGN(BOOST_MOVE_I typename bmupd::enable_up_ptr<T BOOST_MOVE_I Pointer BOOST_MOVE_I pointer>::type* =0) ) BOOST_NOEXCEPT : m_data(p, d1) @@ -473,7 +473,7 @@ class unique_ptr //! <b>Effects</b>: Same effects as <tt>template<class Pointer> unique_ptr(Pointer p, deleter_arg_type1 d1)</tt> //! and additionally <tt>get() == nullptr</tt> - BOOST_MOVE_FORCEINLINE unique_ptr(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), BOOST_MOVE_SEEDOC(deleter_arg_type1) d1) BOOST_NOEXCEPT + inline unique_ptr(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), BOOST_MOVE_SEEDOC(deleter_arg_type1) d1) BOOST_NOEXCEPT : m_data(pointer(), d1) {} @@ -498,7 +498,7 @@ class unique_ptr //! - If T is not an array type and Pointer is implicitly convertible to pointer. //! - If T is an array type and Pointer is a more CV qualified pointer to element_type. template<class Pointer> - BOOST_MOVE_FORCEINLINE unique_ptr(Pointer p, BOOST_MOVE_SEEDOC(deleter_arg_type2) d2 + inline unique_ptr(Pointer p, BOOST_MOVE_SEEDOC(deleter_arg_type2) d2 BOOST_MOVE_DOCIGN(BOOST_MOVE_I typename bmupd::enable_up_ptr<T BOOST_MOVE_I Pointer BOOST_MOVE_I pointer>::type* =0) ) BOOST_NOEXCEPT : m_data(p, ::boost::move(d2)) @@ -511,7 +511,7 @@ class unique_ptr //! <b>Effects</b>: Same effects as <tt>template<class Pointer> unique_ptr(Pointer p, deleter_arg_type2 d2)</tt> //! and additionally <tt>get() == nullptr</tt> - BOOST_MOVE_FORCEINLINE unique_ptr(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), BOOST_MOVE_SEEDOC(deleter_arg_type2) d2) BOOST_NOEXCEPT + inline unique_ptr(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), BOOST_MOVE_SEEDOC(deleter_arg_type2) d2) BOOST_NOEXCEPT : m_data(pointer(), ::boost::move(d2)) {} @@ -525,7 +525,7 @@ class unique_ptr //! <b>Postconditions</b>: <tt>get()</tt> yields the value u.get() yielded before the construction. <tt>get_deleter()</tt> //! returns a reference to the stored deleter that was constructed from u.get_deleter(). If D is a //! reference type then <tt>get_deleter()</tt> and <tt>u.get_deleter()</tt> both reference the same lvalue deleter. - BOOST_MOVE_FORCEINLINE unique_ptr(BOOST_RV_REF(unique_ptr) u) BOOST_NOEXCEPT + inline unique_ptr(BOOST_RV_REF(unique_ptr) u) BOOST_NOEXCEPT : m_data(u.release(), ::boost::move_if_not_lvalue_reference<D>(u.get_deleter())) {} @@ -545,7 +545,7 @@ class unique_ptr //! <b>Postconditions</b>: <tt>get()</tt> yields the value <tt>u.get()</tt> yielded before the construction. <tt>get_deleter()</tt> //! returns a reference to the stored deleter that was constructed from <tt>u.get_deleter()</tt>. template <class U, class E> - BOOST_MOVE_FORCEINLINE unique_ptr( BOOST_RV_REF_BEG_IF_CXX11 unique_ptr<U, E> BOOST_RV_REF_END_IF_CXX11 u + inline unique_ptr( BOOST_RV_REF_BEG_IF_CXX11 unique_ptr<U, E> BOOST_RV_REF_END_IF_CXX11 u BOOST_MOVE_DOCIGN(BOOST_MOVE_I typename bmupd::enable_up_moveconv_constr<T BOOST_MOVE_I D BOOST_MOVE_I U BOOST_MOVE_I E>::type* =0) ) BOOST_NOEXCEPT : m_data(u.release(), ::boost::move_if_not_lvalue_reference<E>(u.get_deleter())) @@ -628,7 +628,7 @@ class unique_ptr //! <b>Returns</b>: <tt>get()[i]</tt>. //! //! <b>Remarks</b: If T is not an array type, the program is ill-formed. - BOOST_MOVE_FORCEINLINE BOOST_MOVE_DOC1ST(element_type&, typename bmupmu::add_lvalue_reference<element_type>::type) + inline BOOST_MOVE_DOC1ST(element_type&, typename bmupmu::add_lvalue_reference<element_type>::type) operator[](std::size_t i) const BOOST_NOEXCEPT { assert( bmupmu::extent<T>::value == 0 || i < bmupmu::extent<T>::value ); @@ -643,7 +643,7 @@ class unique_ptr //! <b>Note</b>: use typically requires that T be a complete type. //! //! <b>Remarks</b: If T is an array type, the program is ill-formed. - BOOST_MOVE_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT + inline pointer operator->() const BOOST_NOEXCEPT { BOOST_MOVE_STATIC_ASSERT((!bmupmu::is_array<T>::value)); assert(m_data.m_p); @@ -652,27 +652,27 @@ class unique_ptr //! <b>Returns</b>: The stored pointer. //! - BOOST_MOVE_FORCEINLINE pointer get() const BOOST_NOEXCEPT + inline pointer get() const BOOST_NOEXCEPT { return m_data.m_p; } //! <b>Returns</b>: A reference to the stored deleter. //! - BOOST_MOVE_FORCEINLINE BOOST_MOVE_DOC1ST(D&, typename bmupmu::add_lvalue_reference<D>::type) + inline BOOST_MOVE_DOC1ST(D&, typename bmupmu::add_lvalue_reference<D>::type) get_deleter() BOOST_NOEXCEPT { return m_data.deleter(); } //! <b>Returns</b>: A reference to the stored deleter. //! - BOOST_MOVE_FORCEINLINE BOOST_MOVE_DOC1ST(const D&, typename bmupmu::add_const_lvalue_reference<D>::type) + inline BOOST_MOVE_DOC1ST(const D&, typename bmupmu::add_const_lvalue_reference<D>::type) get_deleter() const BOOST_NOEXCEPT { return m_data.deleter(); } #ifdef BOOST_MOVE_DOXYGEN_INVOKED //! <b>Returns</b>: Returns: get() != nullptr. //! - BOOST_MOVE_FORCEINLINE explicit operator bool + inline explicit operator bool #else - BOOST_MOVE_FORCEINLINE operator bmupd::explicit_bool_arg + inline operator bmupd::explicit_bool_arg #endif ()const BOOST_NOEXCEPT { @@ -684,7 +684,7 @@ class unique_ptr //! <b>Postcondition</b>: <tt>get() == nullptr</tt>. //! //! <b>Returns</b>: The value <tt>get()</tt> had at the start of the call to release. - BOOST_MOVE_FORCEINLINE pointer release() BOOST_NOEXCEPT + inline pointer release() BOOST_NOEXCEPT { const pointer tmp = m_data.m_p; m_data.m_p = pointer(); @@ -747,19 +747,19 @@ class unique_ptr //! <b>Effects</b>: Calls <tt>x.swap(y)</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE void swap(unique_ptr<T, D> &x, unique_ptr<T, D> &y) BOOST_NOEXCEPT +inline void swap(unique_ptr<T, D> &x, unique_ptr<T, D> &y) BOOST_NOEXCEPT { x.swap(y); } //! <b>Returns</b>: <tt>x.get() == y.get()</tt>. //! template <class T1, class D1, class T2, class D2> -BOOST_MOVE_FORCEINLINE bool operator==(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) +inline bool operator==(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) { return x.get() == y.get(); } //! <b>Returns</b>: <tt>x.get() != y.get()</tt>. //! template <class T1, class D1, class T2, class D2> -BOOST_MOVE_FORCEINLINE bool operator!=(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) +inline bool operator!=(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) { return x.get() != y.get(); } //! <b>Returns</b>: x.get() < y.get(). @@ -767,99 +767,99 @@ BOOST_MOVE_FORCEINLINE bool operator!=(const unique_ptr<T1, D1> &x, const unique //! <b>Remarks</b>: This comparison shall induce a //! strict weak ordering betwen pointers. template <class T1, class D1, class T2, class D2> -BOOST_MOVE_FORCEINLINE bool operator<(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) +inline bool operator<(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) { return x.get() < y.get(); } //! <b>Returns</b>: !(y < x). //! template <class T1, class D1, class T2, class D2> -BOOST_MOVE_FORCEINLINE bool operator<=(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) +inline bool operator<=(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) { return !(y < x); } //! <b>Returns</b>: y < x. //! template <class T1, class D1, class T2, class D2> -BOOST_MOVE_FORCEINLINE bool operator>(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) +inline bool operator>(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) { return y < x; } //! <b>Returns</b>:!(x < y). //! template <class T1, class D1, class T2, class D2> -BOOST_MOVE_FORCEINLINE bool operator>=(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) +inline bool operator>=(const unique_ptr<T1, D1> &x, const unique_ptr<T2, D2> &y) { return !(x < y); } //! <b>Returns</b>:!x. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator==(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) BOOST_NOEXCEPT +inline bool operator==(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) BOOST_NOEXCEPT { return !x; } //! <b>Returns</b>:!x. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator==(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) BOOST_NOEXCEPT +inline bool operator==(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) BOOST_NOEXCEPT { return !x; } //! <b>Returns</b>: (bool)x. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator!=(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) BOOST_NOEXCEPT +inline bool operator!=(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) BOOST_NOEXCEPT { return !!x; } //! <b>Returns</b>: (bool)x. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator!=(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) BOOST_NOEXCEPT +inline bool operator!=(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) BOOST_NOEXCEPT { return !!x; } //! <b>Requires</b>: <tt>operator </tt> shall induce a strict weak ordering on unique_ptr<T, D>::pointer values. //! //! <b>Returns</b>: Returns <tt>x.get() < pointer()</tt>. template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator<(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) +inline bool operator<(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) { return x.get() < typename unique_ptr<T, D>::pointer(); } //! <b>Requires</b>: <tt>operator </tt> shall induce a strict weak ordering on unique_ptr<T, D>::pointer values. //! //! <b>Returns</b>: Returns <tt>pointer() < x.get()</tt>. template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator<(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) +inline bool operator<(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) { return typename unique_ptr<T, D>::pointer() < x.get(); } //! <b>Returns</b>: <tt>nullptr < x</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator>(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) +inline bool operator>(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) { return x.get() > typename unique_ptr<T, D>::pointer(); } //! <b>Returns</b>: <tt>x < nullptr</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator>(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) +inline bool operator>(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) { return typename unique_ptr<T, D>::pointer() > x.get(); } //! <b>Returns</b>: <tt>!(nullptr < x)</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator<=(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) +inline bool operator<=(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) { return !(bmupd::nullptr_type() < x); } //! <b>Returns</b>: <tt>!(x < nullptr)</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator<=(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) +inline bool operator<=(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) { return !(x < bmupd::nullptr_type()); } //! <b>Returns</b>: <tt>!(x < nullptr)</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator>=(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) +inline bool operator>=(const unique_ptr<T, D> &x, BOOST_MOVE_DOC0PTR(bmupd::nullptr_type)) { return !(x < bmupd::nullptr_type()); } //! <b>Returns</b>: <tt>!(nullptr < x)</tt>. //! template <class T, class D> -BOOST_MOVE_FORCEINLINE bool operator>=(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) +inline bool operator>=(BOOST_MOVE_DOC0PTR(bmupd::nullptr_type), const unique_ptr<T, D> &x) { return !(bmupd::nullptr_type() < x); } } //namespace movelib { diff --git a/contrib/restricted/boost/move/ya.make b/contrib/restricted/boost/move/ya.make index 1612adde42..a78230607b 100644 --- a/contrib/restricted/boost/move/ya.make +++ b/contrib/restricted/boost/move/ya.make @@ -9,9 +9,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/move/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/move/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/algorithm.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/algorithm.hpp index be377f5a6c..8f802440ae 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/algorithm.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/algorithm.hpp @@ -26,6 +26,11 @@ #include <type_traits> #include <utility> +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma push_macro( "I" ) +# undef I +#endif + namespace boost { namespace mp11 @@ -84,6 +89,25 @@ template<template<class...> class F, template<class...> class L1, class... T1, t #endif }; +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template<template<class...> class F, template<auto...> class L, auto... A> struct mp_transform_impl<F, L<A...>> +{ + using type = L< F< mp_value<A> >::value... >; +}; + +template<template<class...> class F, template<auto...> class L1, auto... A1, template<auto...> class L2, auto... A2> struct mp_transform_impl<F, L1<A1...>, L2<A2...>> +{ + using type = L1< F< mp_value<A1>, mp_value<A2> >::value... >; +}; + +template<template<class...> class F, template<auto...> class L1, auto... A1, template<auto...> class L2, auto... A2, template<auto...> class L3, auto... A3> struct mp_transform_impl<F, L1<A1...>, L2<A2...>, L3<A3...>> +{ + using type = L1< F< mp_value<A1>, mp_value<A2>, mp_value<A3> >::value... >; +}; + +#endif + #if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, == 1900 ) || BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 40800 ) template<class... L> using mp_same_size_1 = mp_same<mp_size<L>...>; @@ -473,6 +497,10 @@ struct mp_take_c_impl<N, L<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...>, typen template<class L, std::size_t N> using mp_take_c = mp_assign<L, typename detail::mp_take_c_impl<N, mp_rename<L, mp_list>>::type>; template<class L, class N> using mp_take = mp_take_c<L, std::size_t{ N::value }>; +// mp_slice(_c)<L, I, J> +template<class L, std::size_t I, std::size_t J> using mp_slice_c = mp_drop_c< mp_take_c<L, J>, I >; +template<class L, class I, class J> using mp_slice = mp_drop< mp_take<L, J>, I >; + // mp_back<L> template<class L> using mp_back = mp_at_c<L, mp_size<L>::value - 1>; @@ -1261,6 +1289,33 @@ template<class L, class Q> using mp_pairwise_fold_impl = mp_transform_q<Q, mp_po template<class L, class Q> using mp_pairwise_fold_q = mp_eval_if<mp_empty<L>, mp_clear<L>, detail::mp_pairwise_fold_impl, L, Q>; template<class L, template<class...> class F> using mp_pairwise_fold = mp_pairwise_fold_q<L, mp_quote<F>>; +// mp_sliding_fold<L, N, F> +namespace detail +{ + +template<class C, class L, class Q, class S> struct mp_sliding_fold_impl; + +template<class L, class N, class Q> struct mp_sliding_fold_impl<mp_true, L, N, Q> +{ + static const std::size_t M = mp_size<L>::value - N::value + 1; + + template<class I> using F = mp_slice_c<L, I::value, I::value + M>; + + using J = mp_transform<F, mp_iota<N>>; + + using type = mp_apply<mp_transform_q, mp_push_front<J, Q>>; +}; + +template<class L, class N, class Q> struct mp_sliding_fold_impl<mp_false, L, N, Q> +{ + using type = mp_clear<L>; +}; + +} // namespace detail + +template<class L, class N, class Q> using mp_sliding_fold_q = typename detail::mp_sliding_fold_impl<mp_bool<(mp_size<L>::value >= N::value)>, L, N, Q>::type; +template<class L, class N, template<class...> class F> using mp_sliding_fold = mp_sliding_fold_q<L, N, mp_quote<F>>; + // mp_intersperse<L, S> namespace detail { @@ -1324,4 +1379,8 @@ template<class L, class S> using mp_join = mp_apply<mp_append, mp_intersperse<L, } // namespace mp11 } // namespace boost +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma pop_macro( "I" ) +#endif + #endif // #ifndef BOOST_MP11_ALGORITHM_HPP_INCLUDED diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/bind.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/bind.hpp index bbdecd2208..289b073f6a 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/bind.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/bind.hpp @@ -12,6 +12,11 @@ #include <boost/mp11/utility.hpp> #include <cstddef> +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma push_macro( "I" ) +# undef I +#endif + namespace boost { namespace mp11 @@ -108,4 +113,8 @@ template<class Q, class... T> using mp_bind_q = mp_bind<Q::template fn, T...>; } // namespace mp11 } // namespace boost +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma pop_macro( "I" ) +#endif + #endif // #ifndef BOOST_MP11_BIND_HPP_INCLUDED diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/detail/mp_fold.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/detail/mp_fold.hpp index 266d9c18f0..e2c464c99d 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/detail/mp_fold.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/detail/mp_fold.hpp @@ -10,6 +10,8 @@ #include <boost/mp11/detail/config.hpp> #include <boost/mp11/detail/mp_defer.hpp> +#include <boost/mp11/detail/mp_rename.hpp> +#include <boost/mp11/detail/mp_list.hpp> namespace boost { @@ -155,7 +157,7 @@ struct mp_fold_impl<L<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...>, V, F> } // namespace detail -template<class L, class V, template<class...> class F> using mp_fold = typename detail::mp_fold_impl<L, V, F>::type; +template<class L, class V, template<class...> class F> using mp_fold = typename detail::mp_fold_impl<mp_rename<L, mp_list>, V, F>::type; template<class L, class V, class Q> using mp_fold_q = mp_fold<L, V, Q::template fn>; } // namespace mp11 diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/integer_sequence.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/integer_sequence.hpp index 83e24501ba..013991fa56 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/integer_sequence.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/integer_sequence.hpp @@ -11,6 +11,11 @@ #include <boost/mp11/version.hpp> #include <cstddef> +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma push_macro( "I" ) +# undef I +#endif + #if defined(__has_builtin) # if __has_builtin(__make_integer_seq) # define BOOST_MP11_HAS_MAKE_INTEGER_SEQ @@ -109,4 +114,8 @@ template<class... T> using index_sequence_for = make_integer_sequence<std::size_ } // namespace mp11 } // namespace boost +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma pop_macro( "I" ) +#endif + #endif // #ifndef BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/integral.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/integral.hpp index 1b4fea3e2b..4848ac80e4 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/integral.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/integral.hpp @@ -13,6 +13,11 @@ #include <type_traits> #include <cstddef> +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma push_macro( "I" ) +# undef I +#endif + namespace boost { namespace mp11 @@ -39,4 +44,8 @@ template<std::size_t N> using mp_size_t = std::integral_constant<std::size_t, N> } // namespace mp11 } // namespace boost +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma pop_macro( "I" ) +#endif + #endif // #ifndef BOOST_MP11_INTEGRAL_HPP_INCLUDED diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/list.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/list.hpp index 364676445f..46b5605360 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/list.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/list.hpp @@ -19,6 +19,11 @@ #include <boost/mp11/detail/config.hpp> #include <type_traits> +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma push_macro( "I" ) +# undef I +#endif + namespace boost { namespace mp11 @@ -469,4 +474,8 @@ template<class L, class Q> using mp_transform_third_q = mp_transform_third<L, Q: } // namespace mp11 } // namespace boost +#if defined(_MSC_VER) || defined(__GNUC__) +# pragma pop_macro( "I" ) +#endif + #endif // #ifndef BOOST_MP11_LIST_HPP_INCLUDED diff --git a/contrib/restricted/boost/mp11/include/boost/mp11/version.hpp b/contrib/restricted/boost/mp11/include/boost/mp11/version.hpp index ab5e09c390..aba1fb1ca7 100644 --- a/contrib/restricted/boost/mp11/include/boost/mp11/version.hpp +++ b/contrib/restricted/boost/mp11/include/boost/mp11/version.hpp @@ -11,6 +11,6 @@ // Same format as BOOST_VERSION: // major * 100000 + minor * 100 + patch -#define BOOST_MP11_VERSION 108400 +#define BOOST_MP11_VERSION 108500 #endif // #ifndef BOOST_MP11_VERSION_HPP_INCLUDED diff --git a/contrib/restricted/boost/mp11/ya.make b/contrib/restricted/boost/mp11/ya.make index e725d8e913..6e699be6a8 100644 --- a/contrib/restricted/boost/mp11/ya.make +++ b/contrib/restricted/boost/mp11/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/mp11/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/mp11/archive/boost-1.85.0.tar.gz) ADDINCL( GLOBAL contrib/restricted/boost/mp11/include diff --git a/contrib/restricted/boost/parameter/ya.make b/contrib/restricted/boost/parameter/ya.make index 2233cc1e16..1b6fddb441 100644 --- a/contrib/restricted/boost/parameter/ya.make +++ b/contrib/restricted/boost/parameter/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/parameter/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/parameter/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/pool/include/boost/pool/pool.hpp b/contrib/restricted/boost/pool/include/boost/pool/pool.hpp index 12728a7aea..f6d9e6c82f 100644 --- a/contrib/restricted/boost/pool/include/boost/pool/pool.hpp +++ b/contrib/restricted/boost/pool/include/boost/pool/pool.hpp @@ -360,7 +360,7 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t size_type max_chunks() const { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool. size_type POD_size = integer::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type); - return (std::numeric_limits<size_type>::max() - POD_size) / alloc_size(); + return ((std::numeric_limits<size_type>::max)() - POD_size) / alloc_size(); } static void * & nextof(void * const ptr) diff --git a/contrib/restricted/boost/pool/ya.make b/contrib/restricted/boost/pool/ya.make index eea44c0f9b..0dd8306e5d 100644 --- a/contrib/restricted/boost/pool/ya.make +++ b/contrib/restricted/boost/pool/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/pool/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/pool/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/preprocessor/include/boost/preprocessor/variadic/has_opt.hpp b/contrib/restricted/boost/preprocessor/include/boost/preprocessor/variadic/has_opt.hpp index 7054e9455e..bb40e3787f 100644 --- a/contrib/restricted/boost/preprocessor/include/boost/preprocessor/variadic/has_opt.hpp +++ b/contrib/restricted/boost/preprocessor/include/boost/preprocessor/variadic/has_opt.hpp @@ -19,6 +19,8 @@ # if defined(__cplusplus) && __cplusplus > 201703L # if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 8 && __GNUC__ < 10 # define BOOST_PP_VARIADIC_HAS_OPT() 0 +# elif defined(__clang__) && __clang_major__ < 9 +# define BOOST_PP_VARIADIC_HAS_OPT() 0 # else # include <boost/preprocessor/variadic/detail/has_opt.hpp> # define BOOST_PP_VARIADIC_HAS_OPT() \ diff --git a/contrib/restricted/boost/preprocessor/ya.make b/contrib/restricted/boost/preprocessor/ya.make index bbe986b111..b29bd03d9d 100644 --- a/contrib/restricted/boost/preprocessor/ya.make +++ b/contrib/restricted/boost/preprocessor/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/preprocessor/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/preprocessor/archive/boost-1.85.0.tar.gz) ADDINCL( GLOBAL contrib/restricted/boost/preprocessor/include diff --git a/contrib/restricted/boost/random/ya.make b/contrib/restricted/boost/random/ya.make index 4494e451ca..8cd82ab19c 100644 --- a/contrib/restricted/boost/random/ya.make +++ b/contrib/restricted/boost/random/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/random/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/random/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/array diff --git a/contrib/restricted/boost/range/ya.make b/contrib/restricted/boost/range/ya.make index 3cdd2034dc..c5a9ea8ef5 100644 --- a/contrib/restricted/boost/range/ya.make +++ b/contrib/restricted/boost/range/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/range/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/range/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/array diff --git a/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/detail/requires_cxx11.hpp b/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/detail/requires_cxx11.hpp index fd719c877c..f860bef568 100644 --- a/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/detail/requires_cxx11.hpp +++ b/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/detail/requires_cxx11.hpp @@ -16,7 +16,7 @@ defined(BOOST_NO_CXX11_NULLPTR) || \ defined(BOOST_NO_CXX11_SMART_PTR) -BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.SmartPtr 1.82 and will be removed in Boost.SmartPtr 1.85.") +BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.SmartPtr 1.82 and will be removed in Boost.SmartPtr 1.86.") #endif diff --git a/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/intrusive_ptr.hpp b/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/intrusive_ptr.hpp index 733be391fb..a0a325ea73 100644 --- a/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/intrusive_ptr.hpp +++ b/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/intrusive_ptr.hpp @@ -247,17 +247,6 @@ template<class T, class U> inline bool operator!=(T * a, intrusive_ptr<U> const return a != b.get(); } -#if defined(__GNUC__) && __GNUC__ == 2 && __GNUC_MINOR__ <= 96 - -// Resolve the ambiguity between our op!= and the one in rel_ops - -template<class T> inline bool operator!=(intrusive_ptr<T> const & a, intrusive_ptr<T> const & b) BOOST_SP_NOEXCEPT -{ - return a.get() != b.get(); -} - -#endif - #if !defined( BOOST_NO_CXX11_NULLPTR ) template<class T> inline bool operator==( intrusive_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_SP_NOEXCEPT diff --git a/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/shared_ptr.hpp b/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/shared_ptr.hpp index e5993aa7e3..efd06bc322 100644 --- a/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/shared_ptr.hpp +++ b/contrib/restricted/boost/smart_ptr/include/boost/smart_ptr/shared_ptr.hpp @@ -895,17 +895,6 @@ template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, share return a.get() != b.get(); } -#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96 - -// Resolve the ambiguity between our op!= and the one in rel_ops - -template<class T> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<T> const & b) BOOST_SP_NOEXCEPT -{ - return a.get() != b.get(); -} - -#endif - #if !defined( BOOST_NO_CXX11_NULLPTR ) template<class T> inline bool operator==( shared_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_SP_NOEXCEPT diff --git a/contrib/restricted/boost/smart_ptr/ya.make b/contrib/restricted/boost/smart_ptr/ya.make index 573b7b0316..f815f37a57 100644 --- a/contrib/restricted/boost/smart_ptr/ya.make +++ b/contrib/restricted/boost/smart_ptr/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/smart_ptr/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/smart_ptr/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/spirit/ya.make b/contrib/restricted/boost/spirit/ya.make index 364b88da08..df049b6ba7 100644 --- a/contrib/restricted/boost/spirit/ya.make +++ b/contrib/restricted/boost/spirit/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/spirit/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/spirit/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/array diff --git a/contrib/restricted/boost/system/include/boost/system/detail/config.hpp b/contrib/restricted/boost/system/include/boost/system/detail/config.hpp index 1231291414..c231f0de91 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/config.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/config.hpp @@ -8,26 +8,19 @@ // // See http://www.boost.org/libs/system for documentation. -#include <boost/system/detail/requires_cxx11.hpp> #include <boost/config.hpp> #include <boost/config/workaround.hpp> -// BOOST_SYSTEM_HAS_SYSTEM_ERROR -// // The macro BOOST_SYSTEM_DISABLE_THREADS can be defined on configurations // that provide <system_error> and <atomic>, but not <mutex>, such as the // single-threaded libstdc++. // // https://github.com/boostorg/system/issues/92 -#if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_CXX11_HDR_ATOMIC) && ( !defined(BOOST_NO_CXX11_HDR_MUTEX) || defined(BOOST_SYSTEM_DISABLE_THREADS) ) -# define BOOST_SYSTEM_HAS_SYSTEM_ERROR -#endif - // BOOST_SYSTEM_NOEXCEPT // Retained for backward compatibility -#define BOOST_SYSTEM_NOEXCEPT BOOST_NOEXCEPT +#define BOOST_SYSTEM_NOEXCEPT noexcept // BOOST_SYSTEM_HAS_CONSTEXPR diff --git a/contrib/restricted/boost/system/include/boost/system/detail/enable_if.hpp b/contrib/restricted/boost/system/include/boost/system/detail/enable_if.hpp index 7f3d70bae3..5e78c4887c 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/enable_if.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/enable_if.hpp @@ -5,28 +5,19 @@ // Distributed under the Boost Software License, Version 1.0 // http://www.boost.org/LICENSE_1_0.txt +#include <type_traits> + namespace boost { - namespace system { - namespace detail { -template<bool C, class T = void> struct enable_if -{ - typedef T type; -}; - -template<class T> struct enable_if<false, T> -{ -}; +using std::enable_if; } // namespace detail - } // namespace system - } // namespace boost #endif // #ifndef BOOST_SYSTEM_DETAIL_ENABLE_IF_HPP_INCLUDED diff --git a/contrib/restricted/boost/system/include/boost/system/detail/error_category.hpp b/contrib/restricted/boost/system/include/boost/system/detail/error_category.hpp index acc349435d..e704221399 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/error_category.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/error_category.hpp @@ -17,11 +17,8 @@ #include <string> #include <functional> #include <cstddef> - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) -# include <system_error> -# include <atomic> -#endif +#include <system_error> +#include <atomic> namespace boost { @@ -64,20 +61,11 @@ private: friend class error_code; friend class error_condition; -#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) public: error_category( error_category const & ) = delete; error_category& operator=( error_category const & ) = delete; -#else -private: - - error_category( error_category const & ); - error_category& operator=( error_category const & ); - -#endif - private: boost::ulong_long_type id_; @@ -90,75 +78,47 @@ private: void const* stdcat_align_; }; -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - mutable std::atomic< unsigned > sc_init_; -#else - - unsigned sc_init_; - -#endif - protected: -#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) - ~error_category() = default; -#else - - // We'd like to make the destructor protected, to make code that deletes - // an error_category* not compile; unfortunately, doing the below makes - // the destructor user-provided and hence breaks use after main, as the - // categories may get destroyed before code that uses them - - // ~error_category() {} - -#endif - -#if !BOOST_WORKAROUND(BOOST_GCC, < 40800) - BOOST_CONSTEXPR -#endif - error_category() BOOST_NOEXCEPT: id_( 0 ), stdcat_(), sc_init_() + constexpr error_category() noexcept: id_( 0 ), stdcat_(), sc_init_() { } - explicit -#if !BOOST_WORKAROUND(BOOST_GCC, < 40800) - BOOST_CONSTEXPR -#endif - error_category( boost::ulong_long_type id ) BOOST_NOEXCEPT: id_( id ), stdcat_(), sc_init_() + explicit constexpr error_category( boost::ulong_long_type id ) noexcept: id_( id ), stdcat_(), sc_init_() { } public: - virtual const char * name() const BOOST_NOEXCEPT = 0; + virtual const char * name() const noexcept = 0; - virtual error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT; - virtual bool equivalent( int code, const error_condition & condition ) const BOOST_NOEXCEPT; - virtual bool equivalent( const error_code & code, int condition ) const BOOST_NOEXCEPT; + virtual error_condition default_error_condition( int ev ) const noexcept; + virtual bool equivalent( int code, const error_condition & condition ) const noexcept; + virtual bool equivalent( const error_code & code, int condition ) const noexcept; virtual std::string message( int ev ) const = 0; - virtual char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT; + virtual char const * message( int ev, char * buffer, std::size_t len ) const noexcept; - virtual bool failed( int ev ) const BOOST_NOEXCEPT + virtual bool failed( int ev ) const noexcept { return ev != 0; } - friend BOOST_SYSTEM_CONSTEXPR bool operator==( error_category const & lhs, error_category const & rhs ) BOOST_NOEXCEPT + friend BOOST_SYSTEM_CONSTEXPR bool operator==( error_category const & lhs, error_category const & rhs ) noexcept { return rhs.id_ == 0? &lhs == &rhs: lhs.id_ == rhs.id_; } - friend BOOST_SYSTEM_CONSTEXPR bool operator!=( error_category const & lhs, error_category const & rhs ) BOOST_NOEXCEPT + friend BOOST_SYSTEM_CONSTEXPR bool operator!=( error_category const & lhs, error_category const & rhs ) noexcept { return !( lhs == rhs ); } - friend BOOST_SYSTEM_CONSTEXPR bool operator<( error_category const & lhs, error_category const & rhs ) BOOST_NOEXCEPT + friend BOOST_SYSTEM_CONSTEXPR bool operator<( error_category const & lhs, error_category const & rhs ) noexcept { if( lhs.id_ < rhs.id_ ) { @@ -178,8 +138,6 @@ public: return std::less<error_category const *>()( &lhs, &rhs ); } -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - void init_stdcat() const; # if defined(__SUNPRO_CC) // trailing __global is not supported @@ -187,8 +145,6 @@ public: # else operator std::error_category const & () const BOOST_SYMBOL_VISIBLE; # endif - -#endif }; #if defined(BOOST_MSVC) && BOOST_MSVC < 1900 diff --git a/contrib/restricted/boost/system/include/boost/system/detail/error_category_impl.hpp b/contrib/restricted/boost/system/include/boost/system/detail/error_category_impl.hpp index 2005397a46..7d69f71dbb 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/error_category_impl.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/error_category_impl.hpp @@ -26,22 +26,22 @@ namespace system // error_category default implementation -inline error_condition error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT +inline error_condition error_category::default_error_condition( int ev ) const noexcept { return error_condition( ev, *this ); } -inline bool error_category::equivalent( int code, const error_condition & condition ) const BOOST_NOEXCEPT +inline bool error_category::equivalent( int code, const error_condition & condition ) const noexcept { return default_error_condition( code ) == condition; } -inline bool error_category::equivalent( const error_code & code, int condition ) const BOOST_NOEXCEPT +inline bool error_category::equivalent( const error_code & code, int condition ) const noexcept { return code.equals( condition, *this ); } -inline char const * error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +inline char const * error_category::message( int ev, char * buffer, std::size_t len ) const noexcept { if( len == 0 ) { @@ -58,27 +58,7 @@ inline char const * error_category::message( int ev, char * buffer, std::size_t try #endif { - std::string m = this->message( ev ); - -# if defined( BOOST_MSVC ) -# pragma warning( push ) -# pragma warning( disable: 4996 ) -# elif defined(__clang__) && defined(__has_warning) -# pragma clang diagnostic push -# if __has_warning("-Wdeprecated-declarations") -# pragma clang diagnostic ignored "-Wdeprecated-declarations" -# endif -# endif - - std::strncpy( buffer, m.c_str(), len - 1 ); - buffer[ len-1 ] = 0; - -# if defined( BOOST_MSVC ) -# pragma warning( pop ) -# elif defined(__clang__) && defined(__has_warning) -# pragma clang diagnostic pop -# endif - + detail::snprintf( buffer, len, "%s", this->message( ev ).c_str() ); return buffer; } #if !defined(BOOST_NO_EXCEPTIONS) @@ -95,8 +75,6 @@ inline char const * error_category::message( int ev, char * buffer, std::size_t // interoperability with std::error_code, std::error_condition -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - #include <boost/system/detail/std_category_impl.hpp> #include <boost/system/detail/mutex.hpp> #include <new> @@ -185,6 +163,4 @@ inline BOOST_NOINLINE error_category::operator std::error_category const & () co } // namespace system } // namespace boost -#endif // #if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - #endif // #ifndef BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_IMPL_HPP_INCLUDED diff --git a/contrib/restricted/boost/system/include/boost/system/detail/error_code.hpp b/contrib/restricted/boost/system/include/boost/system/detail/error_code.hpp index 2b387fb60a..a395c8181d 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/error_code.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/error_code.hpp @@ -21,11 +21,7 @@ #include <boost/system/detail/append_int.hpp> #include <boost/system/detail/snprintf.hpp> #include <boost/system/detail/config.hpp> - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) -# include <boost/system/detail/std_category.hpp> -#endif - +#include <boost/system/detail/std_category.hpp> #include <boost/assert/source_location.hpp> #include <boost/cstdint.hpp> #include <boost/config.hpp> @@ -33,10 +29,7 @@ #include <ostream> #include <new> #include <cstdio> - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) -# include <system_error> -#endif +#include <system_error> #if defined(BOOST_GCC) && BOOST_GCC >= 40600 && BOOST_GCC < 70000 # pragma GCC diagnostic push @@ -58,14 +51,14 @@ namespace system // and error_code containing a pointer to an object of a type derived // from error_category. -bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT; +bool operator==( const error_code & code, const error_condition & condition ) noexcept; std::size_t hash_value( error_code const & ec ); class error_code { private: - friend bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT; + friend bool operator==( const error_code & code, const error_condition & condition ) noexcept; friend std::size_t hash_value( error_code const & ec ); private: @@ -79,9 +72,7 @@ private: union { data d1_; -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) unsigned char d2_[ sizeof(std::error_code) ]; -#endif }; // 0: default constructed, d1_ value initialized @@ -93,7 +84,7 @@ private: private: - char const* category_name() const BOOST_NOEXCEPT + char const* category_name() const noexcept { // return category().name(); @@ -117,22 +108,19 @@ public: // constructors: -#if !BOOST_WORKAROUND(BOOST_GCC, < 40800) - BOOST_CONSTEXPR -#endif - error_code() BOOST_NOEXCEPT: + constexpr error_code() noexcept: d1_(), lc_flags_( 0 ) { } - BOOST_SYSTEM_CONSTEXPR error_code( int val, const error_category & cat ) BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR error_code( int val, const error_category & cat ) noexcept: d1_(), lc_flags_( 2 + detail::failed_impl( val, cat ) ) { d1_.val_ = val; d1_.cat_ = &cat; } - error_code( int val, const error_category & cat, source_location const * loc ) BOOST_NOEXCEPT: + error_code( int val, const error_category & cat, source_location const * loc ) noexcept: d1_(), lc_flags_( ( loc? reinterpret_cast<boost::uintptr_t>( loc ): 2 ) | +detail::failed_impl( val, cat ) ) { d1_.val_ = val; @@ -142,15 +130,13 @@ public: template<class ErrorCodeEnum> BOOST_SYSTEM_CONSTEXPR error_code( ErrorCodeEnum e, typename detail::enable_if< is_error_code_enum<ErrorCodeEnum>::value -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) || std::is_error_code_enum<ErrorCodeEnum>::value -#endif - >::type* = 0 ) BOOST_NOEXCEPT: d1_(), lc_flags_( 0 ) + >::type* = 0 ) noexcept: d1_(), lc_flags_( 0 ) { *this = make_error_code( e ); } - error_code( error_code const& ec, source_location const * loc ) BOOST_NOEXCEPT: + error_code( error_code const& ec, source_location const * loc ) noexcept: d1_(), lc_flags_( 0 ) { *this = ec; @@ -161,9 +147,7 @@ public: } } -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - - error_code( std::error_code const& ec ) BOOST_NOEXCEPT: + error_code( std::error_code const& ec ) noexcept: d1_(), lc_flags_( 0 ) { #ifndef BOOST_NO_RTTI @@ -181,41 +165,39 @@ public: } } -#endif - // modifiers: - BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) noexcept { *this = error_code( val, cat ); } - void assign( int val, const error_category & cat, source_location const * loc ) BOOST_NOEXCEPT + void assign( int val, const error_category & cat, source_location const * loc ) noexcept { *this = error_code( val, cat, loc ); } - void assign( error_code const& ec, source_location const * loc ) BOOST_NOEXCEPT + void assign( error_code const& ec, source_location const * loc ) noexcept { *this = error_code( ec, loc ); } template<typename ErrorCodeEnum> BOOST_SYSTEM_CONSTEXPR typename detail::enable_if<is_error_code_enum<ErrorCodeEnum>::value, error_code>::type & - operator=( ErrorCodeEnum val ) BOOST_NOEXCEPT + operator=( ErrorCodeEnum val ) noexcept { *this = make_error_code( val ); return *this; } - BOOST_SYSTEM_CONSTEXPR void clear() BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR void clear() noexcept { *this = error_code(); } // observers: - BOOST_SYSTEM_CONSTEXPR int value() const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR int value() const noexcept { if( lc_flags_ != 1 ) { @@ -223,22 +205,16 @@ public: } else { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - std::error_code const& ec = *reinterpret_cast<std::error_code const*>( d2_ ); unsigned cv = static_cast<unsigned>( ec.value() ); unsigned ch = static_cast<unsigned>( reinterpret_cast<boost::uintptr_t>( &ec.category() ) % 2097143 ); // 2^21-9, prime return static_cast<int>( cv + 1000 * ch ); -#else - - return -1; -#endif } } - BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR const error_category & category() const noexcept { if( lc_flags_ == 0 ) { @@ -255,24 +231,19 @@ public: } // deprecated? - error_condition default_error_condition() const BOOST_NOEXCEPT + error_condition default_error_condition() const noexcept { return category().default_error_condition( value() ); } std::string message() const { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - if( lc_flags_ == 1 ) { std::error_code const& ec = *reinterpret_cast<std::error_code const*>( d2_ ); return ec.message(); } - -#endif - - if( lc_flags_ == 0 ) + else if( lc_flags_ == 0 ) { return detail::system_error_category_message( value() ); } @@ -282,9 +253,8 @@ public: } } - char const * message( char * buffer, std::size_t len ) const BOOST_NOEXCEPT + char const * message( char * buffer, std::size_t len ) const noexcept { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) if( lc_flags_ == 1 ) { std::error_code const& ec = *reinterpret_cast<std::error_code const*>( d2_ ); @@ -304,9 +274,7 @@ public: } #endif } -#endif - - if( lc_flags_ == 0 ) + else if( lc_flags_ == 0 ) { return detail::system_error_category_message( value(), buffer, len ); } @@ -316,17 +284,16 @@ public: } } - BOOST_SYSTEM_CONSTEXPR bool failed() const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR bool failed() const noexcept { if( lc_flags_ & 1 ) { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) if( lc_flags_ == 1 ) { std::error_code const& ec = *reinterpret_cast<std::error_code const*>( d2_ ); return ec.value() != 0; } -#endif + return true; } else @@ -335,36 +302,17 @@ public: } } -#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) - - BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_NOEXCEPT // true if error + BOOST_SYSTEM_CONSTEXPR explicit operator bool() const noexcept // true if error { return failed(); } -#else - - typedef void (*unspecified_bool_type)(); - static void unspecified_bool_true() {} - - BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_NOEXCEPT // true if error - { - return failed()? unspecified_bool_true: 0; - } - - BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_NOEXCEPT // true if no error - { - return !failed(); - } - -#endif - - bool has_location() const BOOST_NOEXCEPT + bool has_location() const noexcept { return lc_flags_ >= 4; } - source_location const & location() const BOOST_NOEXCEPT + source_location const & location() const noexcept { BOOST_STATIC_CONSTEXPR source_location loc; return lc_flags_ >= 4? *reinterpret_cast<source_location const*>( lc_flags_ &~ static_cast<boost::uintptr_t>( 1 ) ): loc; @@ -378,7 +326,7 @@ private: friend class error_category; - BOOST_SYSTEM_CONSTEXPR bool equals( int val, error_category const& cat ) const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR bool equals( int val, error_category const& cat ) const noexcept { if( lc_flags_ == 0 ) { @@ -399,10 +347,8 @@ public: // the more symmetrical non-member syntax allows enum // conversions work for both rhs and lhs. - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_code & lhs, const error_code & rhs ) noexcept { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - bool s1 = lhs.lc_flags_ == 1; bool s2 = rhs.lc_flags_ == 1; @@ -416,16 +362,13 @@ public: return e1 == e2; } else -#endif { return lhs.value() == rhs.value() && lhs.category() == rhs.category(); } } - BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_code & lhs, const error_code & rhs ) noexcept { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - bool s1 = lhs.lc_flags_ == 1; bool s2 = rhs.lc_flags_ == 1; @@ -440,35 +383,32 @@ public: return e1 < e2; } else -#endif { return lhs.category() < rhs.category() || (lhs.category() == rhs.category() && lhs.value() < rhs.value()); } } - BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( const error_code & lhs, const error_code & rhs ) noexcept { return !( lhs == rhs ); } -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - - inline friend bool operator==( std::error_code const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( std::error_code const & lhs, error_code const & rhs ) noexcept { return lhs == static_cast< std::error_code >( rhs ); } - inline friend bool operator==( error_code const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( error_code const & lhs, std::error_code const & rhs ) noexcept { return static_cast< std::error_code >( lhs ) == rhs; } - inline friend bool operator!=( std::error_code const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( std::error_code const & lhs, error_code const & rhs ) noexcept { return !( lhs == rhs ); } - inline friend bool operator!=( error_code const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( error_code const & lhs, std::error_code const & rhs ) noexcept { return !( lhs == rhs ); } @@ -476,25 +416,25 @@ public: // template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - inline friend bool operator==( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + inline friend bool operator==( error_code const & lhs, E rhs ) noexcept { return lhs == make_error_condition( rhs ); } template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - inline friend bool operator==( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( E lhs, error_code const & rhs ) noexcept { return make_error_condition( lhs ) == rhs; } template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - inline friend bool operator!=( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( error_code const & lhs, E rhs ) noexcept { return !( lhs == rhs ); } template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - inline friend bool operator!=( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( E lhs, error_code const & rhs ) noexcept { return !( lhs == rhs ); } @@ -502,47 +442,47 @@ public: // template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( error_code const & lhs, E rhs ) noexcept { return lhs == make_error_code( rhs ); } template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( E lhs, error_code const & rhs ) noexcept { return make_error_code( lhs ) == rhs; } template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( error_code const & lhs, E rhs ) noexcept { return !( lhs == rhs ); } template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( E lhs, error_code const & rhs ) noexcept { return !( lhs == rhs ); } #if defined(BOOST_SYSTEM_CLANG_6) - inline friend bool operator==( error_code const & lhs, std::error_condition const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( error_code const & lhs, std::error_condition const & rhs ) noexcept { return static_cast< std::error_code >( lhs ) == rhs; } - inline friend bool operator==( std::error_condition const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( std::error_condition const & lhs, error_code const & rhs ) noexcept { return lhs == static_cast< std::error_code >( rhs ); } - inline friend bool operator!=( error_code const & lhs, std::error_condition const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( error_code const & lhs, std::error_condition const & rhs ) noexcept { return !( lhs == rhs ); } - inline friend bool operator!=( std::error_condition const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( std::error_condition const & lhs, error_code const & rhs ) noexcept { return !( lhs == rhs ); } @@ -603,12 +543,8 @@ public: #endif -#endif - std::string to_string() const { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - if( lc_flags_ == 1 ) { std::error_code const& e2 = *reinterpret_cast<std::error_code const*>( d2_ ); @@ -620,7 +556,6 @@ public: return r; } else -#endif { std::string r = category_name(); detail::append_int( r, value() ); @@ -653,49 +588,41 @@ public: } }; -inline bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT +inline bool operator==( const error_code & code, const error_condition & condition ) noexcept { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - if( code.lc_flags_ == 1 ) { return static_cast<std::error_code>( code ) == static_cast<std::error_condition>( condition ); } else - -#endif { return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() ); } } -inline bool operator==( const error_condition & condition, const error_code & code ) BOOST_NOEXCEPT +inline bool operator==( const error_condition & condition, const error_code & code ) noexcept { return code == condition; } -inline bool operator!=( const error_code & lhs, const error_condition & rhs ) BOOST_NOEXCEPT +inline bool operator!=( const error_code & lhs, const error_condition & rhs ) noexcept { return !( lhs == rhs ); } -inline bool operator!=( const error_condition & lhs, const error_code & rhs ) BOOST_NOEXCEPT +inline bool operator!=( const error_condition & lhs, const error_code & rhs ) noexcept { return !( lhs == rhs ); } inline std::size_t hash_value( error_code const & ec ) { -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - if( ec.lc_flags_ == 1 ) { std::error_code const& e2 = *reinterpret_cast<std::error_code const*>( ec.d2_ ); return std::hash<std::error_code>()( e2 ); } -#endif - error_category const & cat = ec.category(); boost::ulong_long_type id_ = cat.id_; diff --git a/contrib/restricted/boost/system/include/boost/system/detail/error_condition.hpp b/contrib/restricted/boost/system/include/boost/system/detail/error_condition.hpp index b2da2811bf..6aeb9506a6 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/error_condition.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/error_condition.hpp @@ -50,7 +50,7 @@ private: private: - boost::ulong_long_type cat_id() const BOOST_NOEXCEPT + boost::ulong_long_type cat_id() const noexcept { return cat_? cat_->id_: detail::generic_category_id; } @@ -59,17 +59,17 @@ public: // constructors: - BOOST_SYSTEM_CONSTEXPR error_condition() BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR error_condition() noexcept: val_( 0 ), cat_( 0 ) { } - BOOST_SYSTEM_CONSTEXPR error_condition( int val, const error_category & cat ) BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR error_condition( int val, const error_category & cat ) noexcept: val_( val ), cat_( &cat ) { } - BOOST_SYSTEM_CONSTEXPR explicit error_condition( boost::system::detail::generic_value_tag vt ) BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR explicit error_condition( boost::system::detail::generic_value_tag vt ) noexcept: val_( vt.value ), cat_( 0 ) { } @@ -77,20 +77,20 @@ public: template<class ErrorConditionEnum> BOOST_SYSTEM_CONSTEXPR error_condition( ErrorConditionEnum e, typename detail::enable_if< is_error_condition_enum<ErrorConditionEnum>::value && !boost::system::detail::is_same<ErrorConditionEnum, errc::errc_t>::value - >::type* = 0) BOOST_NOEXCEPT + >::type* = 0) noexcept { *this = make_error_condition( e ); } template<class ErrorConditionEnum> BOOST_SYSTEM_CONSTEXPR error_condition( ErrorConditionEnum e, - typename detail::enable_if<boost::system::detail::is_same<ErrorConditionEnum, errc::errc_t>::value>::type* = 0) BOOST_NOEXCEPT: + typename detail::enable_if<boost::system::detail::is_same<ErrorConditionEnum, errc::errc_t>::value>::type* = 0) noexcept: val_( e ), cat_( 0 ) { } // modifiers: - BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) noexcept { val_ = val; cat_ = &cat; @@ -98,13 +98,13 @@ public: template<typename ErrorConditionEnum> BOOST_SYSTEM_CONSTEXPR typename detail::enable_if<is_error_condition_enum<ErrorConditionEnum>::value, error_condition>::type & - operator=( ErrorConditionEnum val ) BOOST_NOEXCEPT + operator=( ErrorConditionEnum val ) noexcept { *this = error_condition( val ); return *this; } - BOOST_SYSTEM_CONSTEXPR void clear() BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR void clear() noexcept { val_ = 0; cat_ = 0; @@ -112,12 +112,12 @@ public: // observers: - BOOST_SYSTEM_CONSTEXPR int value() const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR int value() const noexcept { return val_; } - BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR const error_category & category() const noexcept { return cat_? *cat_: generic_category(); } @@ -134,7 +134,7 @@ public: } } - char const * message( char * buffer, std::size_t len ) const BOOST_NOEXCEPT + char const * message( char * buffer, std::size_t len ) const noexcept { if( cat_ ) { @@ -146,7 +146,7 @@ public: } } - BOOST_SYSTEM_CONSTEXPR bool failed() const BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR bool failed() const noexcept { if( cat_ ) { @@ -158,35 +158,16 @@ public: } } -#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) - - BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_NOEXCEPT // true if error + BOOST_SYSTEM_CONSTEXPR explicit operator bool() const noexcept // true if error { return failed(); } -#else - - typedef void (*unspecified_bool_type)(); - static void unspecified_bool_true() {} - - BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_NOEXCEPT // true if error - { - return failed()? unspecified_bool_true: 0; - } - - BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_NOEXCEPT // true if no error - { - return !failed(); - } - -#endif - // relationals: // the more symmetrical non-member syntax allows enum // conversions work for both rhs and lhs. - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_condition & lhs, const error_condition & rhs ) noexcept { if( lhs.val_ != rhs.val_ ) { @@ -206,20 +187,18 @@ public: } } - BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_condition & lhs, const error_condition & rhs ) noexcept { error_category const& lcat = lhs.category(); error_category const& rcat = rhs.category(); return lcat < rcat || ( lcat == rcat && lhs.val_ < rhs.val_ ); } - BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( const error_condition & lhs, const error_condition & rhs ) noexcept { return !( lhs == rhs ); } -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - operator std::error_condition () const { // This condition must be the same as the one in error_category_impl.hpp @@ -241,22 +220,22 @@ public: #endif } - inline friend bool operator==( std::error_code const & lhs, error_condition const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( std::error_code const & lhs, error_condition const & rhs ) noexcept { return lhs == static_cast< std::error_condition >( rhs ); } - inline friend bool operator==( error_condition const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( error_condition const & lhs, std::error_code const & rhs ) noexcept { return static_cast< std::error_condition >( lhs ) == rhs; } - inline friend bool operator!=( std::error_code const & lhs, error_condition const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( std::error_code const & lhs, error_condition const & rhs ) noexcept { return !( lhs == rhs ); } - inline friend bool operator!=( error_condition const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( error_condition const & lhs, std::error_code const & rhs ) noexcept { return !( lhs == rhs ); } @@ -264,25 +243,25 @@ public: // template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( error_condition const & lhs, E rhs ) noexcept { return lhs == make_error_condition( rhs ); } template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( E lhs, error_condition const & rhs ) noexcept { return make_error_condition( lhs ) == rhs; } template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( error_condition const & lhs, E rhs ) noexcept { return !( lhs == rhs ); } template<class E, class N = typename detail::enable_if<std::is_error_condition_enum<E>::value>::type> - BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( E lhs, error_condition const & rhs ) noexcept { return !( lhs == rhs ); } @@ -290,31 +269,29 @@ public: // template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - inline friend bool operator==( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + inline friend bool operator==( error_condition const & lhs, E rhs ) noexcept { return lhs == make_error_code( rhs ); } template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - inline friend bool operator==( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + inline friend bool operator==( E lhs, error_condition const & rhs ) noexcept { return make_error_code( lhs ) == rhs; } template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - inline friend bool operator!=( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( error_condition const & lhs, E rhs ) noexcept { return !( lhs == rhs ); } template<class E, class N1 = void, class N2 = typename detail::enable_if<std::is_error_code_enum<E>::value>::type> - inline friend bool operator!=( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + inline friend bool operator!=( E lhs, error_condition const & rhs ) noexcept { return !( lhs == rhs ); } -#endif - std::string to_string() const { std::string r( "cond:" ); diff --git a/contrib/restricted/boost/system/include/boost/system/detail/generic_category.hpp b/contrib/restricted/boost/system/include/boost/system/detail/generic_category.hpp index 0a41b67773..6a1a058169 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/generic_category.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/generic_category.hpp @@ -35,18 +35,18 @@ class BOOST_SYMBOL_VISIBLE generic_error_category: public error_category { public: - BOOST_SYSTEM_CONSTEXPR generic_error_category() BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR generic_error_category() noexcept: error_category( detail::generic_category_id ) { } - const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + const char * name() const noexcept BOOST_OVERRIDE { return "generic"; } std::string message( int ev ) const BOOST_OVERRIDE; - char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + char const * message( int ev, char * buffer, std::size_t len ) const noexcept BOOST_OVERRIDE; }; #if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) @@ -55,7 +55,7 @@ public: // generic_error_category::message -inline char const * generic_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +inline char const * generic_error_category::message( int ev, char * buffer, std::size_t len ) const noexcept { return generic_error_category_message( ev, buffer, len ); } @@ -86,7 +86,7 @@ template<class T> constexpr generic_error_category generic_cat_holder<T>::instan } // namespace detail -constexpr error_category const & generic_category() BOOST_NOEXCEPT +constexpr error_category const & generic_category() noexcept { return detail::generic_cat_holder<void>::instance; } @@ -94,10 +94,10 @@ constexpr error_category const & generic_category() BOOST_NOEXCEPT #else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) #if !defined(__SUNPRO_CC) // trailing __global is not supported -inline error_category const & generic_category() BOOST_NOEXCEPT BOOST_SYMBOL_VISIBLE; +inline error_category const & generic_category() noexcept BOOST_SYMBOL_VISIBLE; #endif -inline error_category const & generic_category() BOOST_NOEXCEPT +inline error_category const & generic_category() noexcept { static const detail::generic_error_category instance; return instance; diff --git a/contrib/restricted/boost/system/include/boost/system/detail/generic_category_message.hpp b/contrib/restricted/boost/system/include/boost/system/detail/generic_category_message.hpp index fbdb41a3c3..ded2db6331 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/generic_category_message.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/generic_category_message.hpp @@ -27,17 +27,17 @@ namespace detail // glibc has two incompatible strerror_r definitions -inline char const * strerror_r_helper( char const * r, char const * ) BOOST_NOEXCEPT +inline char const * strerror_r_helper( char const * r, char const * ) noexcept { return r; } -inline char const * strerror_r_helper( int r, char const * buffer ) BOOST_NOEXCEPT +inline char const * strerror_r_helper( int r, char const * buffer ) noexcept { return r == 0? buffer: "Unknown error"; } -inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) noexcept { return strerror_r_helper( strerror_r( ev, buffer, len ), buffer ); } @@ -68,7 +68,7 @@ inline std::string generic_error_category_message( int ev ) return m? m: "Unknown error"; } -inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) noexcept { if( len == 0 ) { diff --git a/contrib/restricted/boost/system/include/boost/system/detail/interop_category.hpp b/contrib/restricted/boost/system/include/boost/system/detail/interop_category.hpp index 9755ad5a59..418c69183d 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/interop_category.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/interop_category.hpp @@ -35,25 +35,25 @@ class BOOST_SYMBOL_VISIBLE interop_error_category: public error_category { public: - BOOST_SYSTEM_CONSTEXPR interop_error_category() BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR interop_error_category() noexcept: error_category( detail::interop_category_id ) { } - const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + const char * name() const noexcept BOOST_OVERRIDE { return "std:unknown"; } std::string message( int ev ) const BOOST_OVERRIDE; - char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + char const * message( int ev, char * buffer, std::size_t len ) const noexcept BOOST_OVERRIDE; }; #if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) #pragma GCC diagnostic pop #endif -inline char const * interop_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +inline char const * interop_error_category::message( int ev, char * buffer, std::size_t len ) const noexcept { detail::snprintf( buffer, len, "Unknown interop error %d", ev ); return buffer; @@ -79,7 +79,7 @@ template<class T> struct BOOST_SYMBOL_VISIBLE interop_cat_holder template<class T> constexpr interop_error_category interop_cat_holder<T>::instance; #endif -constexpr error_category const & interop_category() BOOST_NOEXCEPT +constexpr error_category const & interop_category() noexcept { return interop_cat_holder<void>::instance; } @@ -87,10 +87,10 @@ constexpr error_category const & interop_category() BOOST_NOEXCEPT #else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) #if !defined(__SUNPRO_CC) // trailing __global is not supported -inline error_category const & interop_category() BOOST_NOEXCEPT BOOST_SYMBOL_VISIBLE; +inline error_category const & interop_category() noexcept BOOST_SYMBOL_VISIBLE; #endif -inline error_category const & interop_category() BOOST_NOEXCEPT +inline error_category const & interop_category() noexcept { static const detail::interop_error_category instance; return instance; diff --git a/contrib/restricted/boost/system/include/boost/system/detail/is_same.hpp b/contrib/restricted/boost/system/include/boost/system/detail/is_same.hpp index dc466f8ee3..12c1e585a4 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/is_same.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/is_same.hpp @@ -5,29 +5,19 @@ // Distributed under the Boost Software License, Version 1.0 // http://www.boost.org/LICENSE_1_0.txt +#include <type_traits> + namespace boost { - namespace system { - namespace detail { -template<class T1, class T2> struct is_same -{ - enum _vt { value = 0 }; -}; - -template<class T> struct is_same<T, T> -{ - enum _vt { value = 1 }; -}; +using std::is_same; } // namespace detail - } // namespace system - } // namespace boost #endif // #ifndef BOOST_SYSTEM_DETAIL_IS_SAME_HPP_INCLUDED diff --git a/contrib/restricted/boost/system/include/boost/system/detail/requires_cxx11.hpp b/contrib/restricted/boost/system/include/boost/system/detail/requires_cxx11.hpp deleted file mode 100644 index 016791c086..0000000000 --- a/contrib/restricted/boost/system/include/boost/system/detail/requires_cxx11.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef BOOST_SYSTEM_DETAIL_REQUIRES_CXX11_HPP_INCLUDED -#define BOOST_SYSTEM_DETAIL_REQUIRES_CXX11_HPP_INCLUDED - -// Copyright 2023 Peter Dimov -// Distributed under the Boost Software License, Version 1.0. -// https://www.boost.org/LICENSE_1_0.txt - -#include <boost/config.hpp> -#include <boost/config/pragma_message.hpp> - -#if defined(BOOST_NO_CXX11_CONSTEXPR) || \ - defined(BOOST_NO_CXX11_NOEXCEPT) || \ - defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) || \ - defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \ - defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) - -BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.System 1.82 and will be removed in Boost.System 1.85.") - -#endif - -#endif // #ifndef BOOST_SYSTEM_DETAIL_REQUIRES_CXX11_HPP_INCLUDED diff --git a/contrib/restricted/boost/system/include/boost/system/detail/snprintf.hpp b/contrib/restricted/boost/system/include/boost/system/detail/snprintf.hpp index f54a3514ff..b999dd9c99 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/snprintf.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/snprintf.hpp @@ -8,66 +8,21 @@ // // See library home page at http://www.boost.org/libs/system -#include <boost/config.hpp> #include <cstdio> -#include <cstdarg> // namespace boost { - namespace system { - namespace detail { -#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) - -inline void snprintf( char * buffer, std::size_t len, char const * format, ... ) -{ -# if defined( BOOST_MSVC ) -# pragma warning( push ) -# pragma warning( disable: 4996 ) -# endif - - if( len == 0 ) return; - - va_list args; - va_start( args, format ); - - _vsnprintf( buffer, len - 1, format, args ); - buffer[ len - 1 ] = 0; - - va_end( args ); - -# if defined( BOOST_MSVC ) -# pragma warning( pop ) -# endif -} - -#else - -#if defined(__GNUC__) && __GNUC__ >= 3 -__attribute__((__format__ (__printf__, 3, 4))) -#endif -inline void snprintf( char * buffer, std::size_t len, char const * format, ... ) -{ - va_list args; - va_start( args, format ); - - std::vsnprintf( buffer, len, format, args ); - - va_end( args ); -} - -#endif +using std::snprintf; } // namespace detail - } // namespace system - } // namespace boost #endif // #ifndef BOOST_SYSTEM_DETAIL_SNPRINTF_HPP_INCLUDED diff --git a/contrib/restricted/boost/system/include/boost/system/detail/std_category.hpp b/contrib/restricted/boost/system/include/boost/system/detail/std_category.hpp index 68073c1b92..6aabc28149 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/std_category.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/std_category.hpp @@ -35,7 +35,7 @@ private: public: - boost::system::error_category const & original_category() const BOOST_NOEXCEPT + boost::system::error_category const & original_category() const noexcept { return *pc_; } @@ -51,16 +51,12 @@ public: // here when Id != 0, but this should never happen now because this code // path is no longer used -#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) - static_assert( Id == 0, "This constructor should only be called with Id == 0 under MS STL 14.0+" ); #endif - -#endif } - const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + const char * name() const noexcept BOOST_OVERRIDE { return pc_->name(); } @@ -70,13 +66,13 @@ public: return pc_->message( ev ); } - std::error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT BOOST_OVERRIDE + std::error_condition default_error_condition( int ev ) const noexcept BOOST_OVERRIDE { return pc_->default_error_condition( ev ); } - inline bool equivalent( int code, const std::error_condition & condition ) const BOOST_NOEXCEPT BOOST_OVERRIDE; - inline bool equivalent( const std::error_code & code, int condition ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + inline bool equivalent( int code, const std::error_condition & condition ) const noexcept BOOST_OVERRIDE; + inline bool equivalent( const std::error_code & code, int condition ) const noexcept BOOST_OVERRIDE; }; } // namespace detail diff --git a/contrib/restricted/boost/system/include/boost/system/detail/std_category_impl.hpp b/contrib/restricted/boost/system/include/boost/system/detail/std_category_impl.hpp index 9dee5e7980..3843bd343c 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/std_category_impl.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/std_category_impl.hpp @@ -26,7 +26,7 @@ namespace system namespace detail { -inline bool std_category::equivalent( int code, const std::error_condition & condition ) const BOOST_NOEXCEPT +inline bool std_category::equivalent( int code, const std::error_condition & condition ) const noexcept { if( condition.category() == *this ) { @@ -55,7 +55,7 @@ inline bool std_category::equivalent( int code, const std::error_condition & con } } -inline bool std_category::equivalent( const std::error_code & code, int condition ) const BOOST_NOEXCEPT +inline bool std_category::equivalent( const std::error_code & code, int condition ) const noexcept { if( code.category() == *this ) { diff --git a/contrib/restricted/boost/system/include/boost/system/detail/system_category.hpp b/contrib/restricted/boost/system/include/boost/system/detail/system_category.hpp index ae8c9530e0..260894d4f3 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/system_category.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/system_category.hpp @@ -34,20 +34,20 @@ class BOOST_SYMBOL_VISIBLE system_error_category: public error_category { public: - BOOST_SYSTEM_CONSTEXPR system_error_category() BOOST_NOEXCEPT: + BOOST_SYSTEM_CONSTEXPR system_error_category() noexcept: error_category( detail::system_category_id ) { } - const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + const char * name() const noexcept BOOST_OVERRIDE { return "system"; } - error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + error_condition default_error_condition( int ev ) const noexcept BOOST_OVERRIDE; std::string message( int ev ) const BOOST_OVERRIDE; - char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + char const * message( int ev, char * buffer, std::size_t len ) const noexcept BOOST_OVERRIDE; }; #if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) @@ -75,7 +75,7 @@ template<class T> constexpr system_error_category system_cat_holder<T>::instance } // namespace detail -constexpr error_category const & system_category() BOOST_NOEXCEPT +constexpr error_category const & system_category() noexcept { return detail::system_cat_holder<void>::instance; } @@ -83,10 +83,10 @@ constexpr error_category const & system_category() BOOST_NOEXCEPT #else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) #if !defined(__SUNPRO_CC) // trailing __global is not supported -inline error_category const & system_category() BOOST_NOEXCEPT BOOST_SYMBOL_VISIBLE; +inline error_category const & system_category() noexcept BOOST_SYMBOL_VISIBLE; #endif -inline error_category const & system_category() BOOST_NOEXCEPT +inline error_category const & system_category() noexcept { static const detail::system_error_category instance; return instance; diff --git a/contrib/restricted/boost/system/include/boost/system/detail/system_category_condition_win32.hpp b/contrib/restricted/boost/system/include/boost/system/detail/system_category_condition_win32.hpp index 446a351942..a43d676662 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/system_category_condition_win32.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/system_category_condition_win32.hpp @@ -25,7 +25,7 @@ namespace system namespace detail { -inline int system_category_condition_win32( int ev ) BOOST_NOEXCEPT +inline int system_category_condition_win32( int ev ) noexcept { // When using the Windows Runtime, most system errors are reported as HRESULTs. // We want to map the common Win32 errors to their equivalent error condition, diff --git a/contrib/restricted/boost/system/include/boost/system/detail/system_category_impl.hpp b/contrib/restricted/boost/system/include/boost/system/detail/system_category_impl.hpp index fc3933e2fd..5da83f0b20 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/system_category_impl.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/system_category_impl.hpp @@ -25,7 +25,7 @@ #include <boost/system/detail/system_category_condition_win32.hpp> -inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT +inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const noexcept { int e2 = system_category_condition_win32( ev ); @@ -41,7 +41,7 @@ inline boost::system::error_condition boost::system::detail::system_error_catego #else // #if defined(BOOST_WINDOWS_API) -inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT +inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const noexcept { return error_condition( boost::system::detail::generic_value_tag( ev ) ); } @@ -53,7 +53,7 @@ inline std::string boost::system::detail::system_error_category::message( int ev return system_error_category_message( ev ); } -inline char const * boost::system::detail::system_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +inline char const * boost::system::detail::system_error_category::message( int ev, char * buffer, std::size_t len ) const noexcept { return system_error_category_message( ev, buffer, len ); } diff --git a/contrib/restricted/boost/system/include/boost/system/detail/system_category_message.hpp b/contrib/restricted/boost/system/include/boost/system/detail/system_category_message.hpp index 203e75aa9e..cd1437b004 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/system_category_message.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/system_category_message.hpp @@ -32,7 +32,7 @@ inline std::string system_error_category_message( int ev ) return system_category_message_win32( ev ); } -inline char const * system_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +inline char const * system_error_category_message( int ev, char * buffer, std::size_t len ) noexcept { return system_category_message_win32( ev, buffer, len ); } @@ -57,7 +57,7 @@ inline std::string system_error_category_message( int ev ) return generic_error_category_message( ev ); } -inline char const * system_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +inline char const * system_error_category_message( int ev, char * buffer, std::size_t len ) noexcept { return generic_error_category_message( ev, buffer, len ); } diff --git a/contrib/restricted/boost/system/include/boost/system/detail/system_category_message_win32.hpp b/contrib/restricted/boost/system/include/boost/system/detail/system_category_message_win32.hpp index e5f544ccd9..73ff8947bc 100644 --- a/contrib/restricted/boost/system/include/boost/system/detail/system_category_message_win32.hpp +++ b/contrib/restricted/boost/system/include/boost/system/detail/system_category_message_win32.hpp @@ -47,7 +47,7 @@ inline boost::winapi::UINT_ message_cp_win32() #endif } -inline char const * system_category_message_win32( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +inline char const * system_category_message_win32( int ev, char * buffer, std::size_t len ) noexcept { if( len == 0 ) { diff --git a/contrib/restricted/boost/system/include/boost/system/errc.hpp b/contrib/restricted/boost/system/include/boost/system/errc.hpp index 2b642cd764..3e7cfc8d4b 100644 --- a/contrib/restricted/boost/system/include/boost/system/errc.hpp +++ b/contrib/restricted/boost/system/include/boost/system/errc.hpp @@ -31,19 +31,19 @@ namespace errc { // explicit conversion: -BOOST_SYSTEM_CONSTEXPR inline error_code make_error_code( errc_t e ) BOOST_NOEXCEPT +BOOST_SYSTEM_CONSTEXPR inline error_code make_error_code( errc_t e ) noexcept { return error_code( e, generic_category() ); } // explicit conversion: -inline error_code make_error_code( errc_t e, boost::source_location const * loc ) BOOST_NOEXCEPT +inline error_code make_error_code( errc_t e, boost::source_location const * loc ) noexcept { return error_code( e, generic_category(), loc ); } // implicit conversion: -BOOST_SYSTEM_CONSTEXPR inline error_condition make_error_condition( errc_t e ) BOOST_NOEXCEPT +BOOST_SYSTEM_CONSTEXPR inline error_condition make_error_condition( errc_t e ) noexcept { return error_condition( e, generic_category() ); } diff --git a/contrib/restricted/boost/system/include/boost/system/system_error.hpp b/contrib/restricted/boost/system/include/boost/system/system_error.hpp index 09d65e2ac6..7d6d8b60b7 100644 --- a/contrib/restricted/boost/system/include/boost/system/system_error.hpp +++ b/contrib/restricted/boost/system/include/boost/system/system_error.hpp @@ -43,7 +43,7 @@ public: system_error( int ev, error_category const & ecat, char const * prefix ): std::runtime_error( std::string( prefix ) + ": " + error_code( ev, ecat ).what() ), code_( ev, ecat ) {} - error_code code() const BOOST_NOEXCEPT + error_code code() const noexcept { return code_; } diff --git a/contrib/restricted/boost/system/ya.make b/contrib/restricted/boost/system/ya.make index 483476895f..9582ac8e7d 100644 --- a/contrib/restricted/boost/system/ya.make +++ b/contrib/restricted/boost/system/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/system/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/system/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/throw_exception/include/boost/exception/exception.hpp b/contrib/restricted/boost/throw_exception/include/boost/exception/exception.hpp index ca8d83359a..4ec18d7d39 100644 --- a/contrib/restricted/boost/throw_exception/include/boost/exception/exception.hpp +++ b/contrib/restricted/boost/throw_exception/include/boost/exception/exception.hpp @@ -19,7 +19,7 @@ namespace boost { namespace exception_detail { using boost::shared_ptr; } } #endif #if !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -#if __GNUC__*100+__GNUC_MINOR__>301 +#if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif #ifdef __clang__ diff --git a/contrib/restricted/boost/throw_exception/ya.make b/contrib/restricted/boost/throw_exception/ya.make index 97e7af4761..19a60acdb0 100644 --- a/contrib/restricted/boost/throw_exception/ya.make +++ b/contrib/restricted/boost/throw_exception/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/throw_exception/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/throw_exception/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/type_index/include/boost/type_index.hpp b/contrib/restricted/boost/type_index/include/boost/type_index.hpp index a37d0e16ee..593f33c056 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index.hpp @@ -1,5 +1,5 @@ // -// Copyright 2012-2023 Antony Polukhin. +// Copyright 2012-2024 Antony Polukhin. // // 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) diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp index d6717f3b8c..f54a4faf90 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp @@ -1,5 +1,5 @@ // -// Copyright 2013-2023 Antony Polukhin. +// Copyright 2013-2024 Antony Polukhin. // // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp index 9d6129a8d0..236c4ab79b 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp @@ -1,5 +1,5 @@ // -// Copyright 2012-2023 Antony Polukhin. +// Copyright 2012-2024 Antony Polukhin. // // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp index 9c69d49c6a..57e55d9c64 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp @@ -1,5 +1,5 @@ // -// Copyright 2013-2023 Antony Polukhin. +// Copyright 2013-2024 Antony Polukhin. // // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp index 20eb818af9..ee4a64f064 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp @@ -1,5 +1,5 @@ // -// Copyright 2013-2023 Antony Polukhin. +// Copyright 2013-2024 Antony Polukhin. // // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp index 66d66e238e..3e86e04a27 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp @@ -1,5 +1,5 @@ // -// Copyright 2013-2023 Antony Polukhin. +// Copyright 2013-2024 Antony Polukhin. // // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp index e4691af80b..421e06b1cb 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp @@ -1,5 +1,5 @@ // -// Copyright 2013-2023 Antony Polukhin. +// Copyright 2013-2024 Antony Polukhin. // // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/contrib/restricted/boost/type_index/ya.make b/contrib/restricted/boost/type_index/ya.make index ca4428511a..aec020ea0c 100644 --- a/contrib/restricted/boost/type_index/ya.make +++ b/contrib/restricted/boost/type_index/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/type_index/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/type_index/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/utility/ya.make b/contrib/restricted/boost/utility/ya.make index c4ef4db25c..94da4d7347 100644 --- a/contrib/restricted/boost/utility/ya.make +++ b/contrib/restricted/boost/utility/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/utility/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/utility/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/config diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_binary.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_binary.hpp index 32c128bf42..1b1016c684 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_binary.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_binary.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2002-2003 Eric Friedman -// Copyright (c) 2014-2023 Antony Polukhin +// Copyright (c) 2014-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_unary.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_unary.hpp index c34c0e9b36..dc73f90af2 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_unary.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/apply_visitor_unary.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2002-2003 Eric Friedman -// Copyright (c) 2014-2023 Antony Polukhin +// Copyright (c) 2014-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/config.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/config.hpp index da76fe2a65..236cc982f2 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/config.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/config.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2003 Eric Friedman -// Copyright (c) 2016-2023 Antony Polukhin +// Copyright (c) 2016-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/element_index.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/element_index.hpp index 06cf06d773..8b529cb702 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/element_index.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/element_index.hpp @@ -3,7 +3,7 @@ // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // -// Copyright (c) 2014-2023 Antony Polukhin +// Copyright (c) 2014-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/forced_return.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/forced_return.hpp index 6d8911b109..75904f8458 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/forced_return.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/forced_return.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2003 Eric Friedman -// Copyright (c) 2015-2023 Antony Polukhin +// Copyright (c) 2015-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/has_result_type.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/has_result_type.hpp index e1ca5b4023..973b36d2f2 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/has_result_type.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/has_result_type.hpp @@ -3,7 +3,7 @@ // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // -// Copyright (c) 2014-2023 Antony Polukhin +// Copyright (c) 2014-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/hash_variant.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/hash_variant.hpp index 4eb8377213..469bc81b02 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/hash_variant.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/hash_variant.hpp @@ -3,7 +3,7 @@ // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // -// Copyright (c) 2011-2023 Antony Polukhin +// Copyright (c) 2011-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/initializer.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/initializer.hpp index 4a54c273c2..331f375b7c 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/initializer.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/initializer.hpp @@ -22,7 +22,6 @@ #include <boost/variant/recursive_wrapper_fwd.hpp> #include <boost/variant/detail/move.hpp> -#if !defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) # include <boost/mpl/aux_/value_wknd.hpp> # include <boost/mpl/int.hpp> # include <boost/mpl/iter_fold.hpp> @@ -30,12 +29,7 @@ # include <boost/mpl/deref.hpp> # include <boost/mpl/pair.hpp> # include <boost/mpl/protect.hpp> -#else -# include <boost/variant/variant_fwd.hpp> -# include <boost/preprocessor/cat.hpp> -# include <boost/preprocessor/enum.hpp> -# include <boost/preprocessor/repeat.hpp> -#endif + namespace boost { namespace detail { namespace variant { @@ -53,8 +47,6 @@ namespace detail { namespace variant { // size of the variant's psuedo-variadic template parameter list. // -#if !defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) - // (detail) quoted metafunction make_initializer_node // // Exposes a pair whose first type is a node in the initializer hierarchy. @@ -81,7 +73,6 @@ struct make_initializer_node typedef typename unwrap_recursive<recursive_enabled_T>::type public_T; -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES typedef boost::is_reference<public_T> is_reference_content_t; @@ -92,10 +83,6 @@ struct make_initializer_node typedef typename boost::mpl::if_<is_reference_content_t, disable_overload<public_T>, public_T&& >::type param2_T; -#else - typedef typename call_traits<public_T>::param_type - param_T; -#endif public: // static functions @@ -111,7 +98,6 @@ struct make_initializer_node return BOOST_MPL_AUX_VALUE_WKND(index)::value; // which } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES static int initialize(void* dest, param2_T operand) { // This assert must newer trigger, because all the reference contents are @@ -122,7 +108,6 @@ struct make_initializer_node new(dest) value_T( boost::detail::variant::move(operand) ); return BOOST_MPL_AUX_VALUE_WKND(index)::value; // which } -#endif }; friend class initializer_node; @@ -150,61 +135,6 @@ public: // static functions }; -#else // defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) - - // Obsolete. Remove. - #define BOOST_VARIANT_AUX_PP_INITIALIZER_TEMPLATE_PARAMS \ - BOOST_VARIANT_ENUM_PARAMS(typename recursive_enabled_T) \ - /**/ - - // Obsolete. Remove. - #define BOOST_VARIANT_AUX_PP_INITIALIZER_DEFINE_PARAM_T(N) \ - typedef typename unwrap_recursive< \ - BOOST_PP_CAT(recursive_enabled_T,N) \ - >::type BOOST_PP_CAT(public_T,N); \ - typedef typename call_traits< \ - BOOST_PP_CAT(public_T,N) \ - >::param_type BOOST_PP_CAT(param_T,N); \ - /**/ - -template < BOOST_VARIANT_ENUM_PARAMS(typename recursive_enabled_T) > -struct preprocessor_list_initializer -{ -public: // static functions - - #define BOOST_VARIANT_AUX_PP_INITIALIZE_FUNCTION(z,N,_) \ - typedef typename unwrap_recursive< \ - BOOST_PP_CAT(recursive_enabled_T,N) \ - >::type BOOST_PP_CAT(public_T,N); \ - typedef typename call_traits< \ - BOOST_PP_CAT(public_T,N) \ - >::param_type BOOST_PP_CAT(param_T,N); \ - static int initialize( \ - void* dest \ - , BOOST_PP_CAT(param_T,N) operand \ - ) \ - { \ - typedef typename boost::detail::make_reference_content< \ - BOOST_PP_CAT(recursive_enabled_T,N) \ - >::type internal_T; \ - \ - new(dest) internal_T(operand); \ - return (N); /*which*/ \ - } \ - /**/ - - BOOST_PP_REPEAT( - BOOST_VARIANT_LIMIT_TYPES - , BOOST_VARIANT_AUX_PP_INITIALIZE_FUNCTION - , _ - ) - - #undef BOOST_VARIANT_AUX_PP_INITIALIZE_FUNCTION - -}; - -#endif // BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE workaround - }} // namespace detail::variant } // namespace boost @@ -216,8 +146,6 @@ public: // static functions // most appropriate to the current compiler. // -#if !defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) - #define BOOST_VARIANT_AUX_INITIALIZER_T( mpl_seq, typename_base ) \ ::boost::mpl::iter_fold< \ mpl_seq \ @@ -231,19 +159,4 @@ public: // static functions >::type::first \ /**/ -#else // defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) - - // Obsolete. Remove. - #define BOOST_VARIANT_AUX_PP_INITIALIZER_TEMPLATE_ARGS(typename_base) \ - BOOST_VARIANT_ENUM_PARAMS(typename_base) \ - /**/ - -#define BOOST_VARIANT_AUX_INITIALIZER_T( mpl_seq, typename_base ) \ - ::boost::detail::variant::preprocessor_list_initializer< \ - BOOST_VARIANT_ENUM_PARAMS(typename_base) \ - > \ - /**/ - -#endif // BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE workaround - #endif // BOOST_VARIANT_DETAIL_INITIALIZER_HPP diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/make_variant_list.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/make_variant_list.hpp index d6ad8e99a8..eafe1cb787 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/make_variant_list.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/make_variant_list.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2002-2003 Eric Friedman, Itay Maman -// Copyright (c) 2013-2023 Antony Polukhin +// Copyright (c) 2013-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/move.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/move.hpp index b8eafd64cd..9788e1331e 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/move.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/move.hpp @@ -5,7 +5,7 @@ // // Copyright (c) 2002-2003 Eric Friedman // Copyright (c) 2002 by Andrei Alexandrescu -// Copyright (c) 2013-2023 Antony Polukhin +// Copyright (c) 2013-2024 Antony Polukhin // // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/std_hash.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/std_hash.hpp index 3e05c5c900..7335902e71 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/std_hash.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/std_hash.hpp @@ -3,7 +3,7 @@ // See http://www.boost.org for updates, documentation, and revision history. //----------------------------------------------------------------------------- // -// Copyright (c) 2018-2023 Antony Polukhin +// Copyright (c) 2018-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/substitute.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/substitute.hpp index f8c05b8a27..213259d72a 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/substitute.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/substitute.hpp @@ -22,10 +22,7 @@ #include <boost/mpl/aux_/preprocessor/repeat.hpp> #include <boost/mpl/int_fwd.hpp> #include <boost/mpl/limits/arity.hpp> -#include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/empty.hpp> -#include <boost/preprocessor/arithmetic/inc.hpp> -#include <boost/preprocessor/iterate.hpp> namespace boost { namespace detail { namespace variant { diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/variant_io.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/variant_io.hpp index 63df74f24b..9e560f4e51 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/variant_io.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/variant_io.hpp @@ -16,8 +16,6 @@ #include <iosfwd> // for std::basic_ostream forward declare #include <boost/variant/variant_fwd.hpp> - -#include <boost/detail/templated_streams.hpp> #include <boost/variant/static_visitor.hpp> namespace boost { @@ -29,14 +27,9 @@ namespace boost { // // forward declare (allows output of embedded variant< variant< ... >, ... >) -template < - BOOST_TEMPLATED_STREAM_ARGS(E,T) - BOOST_TEMPLATED_STREAM_COMMA - BOOST_VARIANT_ENUM_PARAMS(typename U) - > -inline BOOST_TEMPLATED_STREAM(ostream, E,T)& operator<<( - BOOST_TEMPLATED_STREAM(ostream, E,T)& out - , const variant< BOOST_VARIANT_ENUM_PARAMS(U) >& rhs +template <class CharT, class Trait, typename... U> +inline std::basic_ostream<CharT, Trait>& operator<<( + std::basic_ostream<CharT, Trait>& out, const variant<U...>& rhs ); namespace detail { namespace variant { @@ -71,18 +64,13 @@ private: }} // namespace detail::variant -template < - BOOST_TEMPLATED_STREAM_ARGS(E,T) - BOOST_TEMPLATED_STREAM_COMMA - BOOST_VARIANT_ENUM_PARAMS(typename U) - > -inline BOOST_TEMPLATED_STREAM(ostream, E,T)& operator<<( - BOOST_TEMPLATED_STREAM(ostream, E,T)& out - , const variant< BOOST_VARIANT_ENUM_PARAMS(U) >& rhs +template <class CharT, class Trait, typename... U> +inline std::basic_ostream<CharT, Trait>& operator<<( + std::basic_ostream<CharT, Trait>& out, const variant<U...>& rhs ) { detail::variant::printer< - BOOST_TEMPLATED_STREAM(ostream, E,T) + std::basic_ostream<CharT, Trait> > visitor(out); rhs.apply_visitor(visitor); diff --git a/contrib/restricted/boost/variant/include/boost/variant/detail/visitation_impl.hpp b/contrib/restricted/boost/variant/include/boost/variant/detail/visitation_impl.hpp index 862d839800..13fa9214d3 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/detail/visitation_impl.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/detail/visitation_impl.hpp @@ -53,13 +53,6 @@ #endif -// Define a compiler generic null pointer value -#if defined(BOOST_NO_CXX11_NULLPTR) -#define BOOST_VARIANT_NULL 0 -#else -#define BOOST_VARIANT_NULL nullptr -#endif - namespace boost { namespace detail { namespace variant { @@ -179,7 +172,7 @@ inline typename Visitor::result_type visitation_impl( int, int, Visitor&, VPCV , mpl::true_ // is_apply_visitor_unrolled - , NBF, W* = BOOST_VARIANT_NULL, S* = BOOST_VARIANT_NULL + , NBF, W* = nullptr, S* = nullptr ) { // should never be here at runtime! @@ -198,7 +191,7 @@ visitation_impl( , Visitor& visitor, VoidPtrCV storage , mpl::false_ // is_apply_visitor_unrolled , NoBackupFlag no_backup_flag - , Which* = BOOST_VARIANT_NULL, step0* = BOOST_VARIANT_NULL + , Which* = nullptr, step0* = nullptr ) { // Typedef apply_visitor_unrolled steps and associated types... diff --git a/contrib/restricted/boost/variant/include/boost/variant/get.hpp b/contrib/restricted/boost/variant/include/boost/variant/get.hpp index 62fca60c9e..085c6f23d5 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/get.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/get.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2003 Eric Friedman, Itay Maman -// Copyright (c) 2014-2023 Antony Polukhin +// Copyright (c) 2014-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/recursive_variant.hpp b/contrib/restricted/boost/variant/include/boost/variant/recursive_variant.hpp index 96ae087460..d68e202da4 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/recursive_variant.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/recursive_variant.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2003 Eric Friedman -// Copyright (c) 2013-2023 Antony Polukhin +// Copyright (c) 2013-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/contrib/restricted/boost/variant/include/boost/variant/recursive_wrapper_fwd.hpp b/contrib/restricted/boost/variant/include/boost/variant/recursive_wrapper_fwd.hpp index b5d7e71952..b8b59ee600 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/recursive_wrapper_fwd.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/recursive_wrapper_fwd.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2002 Eric Friedman, Itay Maman -// Copyright (c) 2016-2023 Antony Polukhin +// Copyright (c) 2016-2024 Antony Polukhin // // Portions Copyright (C) 2002 David Abrahams // diff --git a/contrib/restricted/boost/variant/include/boost/variant/variant.hpp b/contrib/restricted/boost/variant/include/boost/variant/variant.hpp index 44657f0e5f..f28a012049 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/variant.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/variant.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2002-2003 Eric Friedman, Itay Maman -// Copyright (c) 2012-2023 Antony Polukhin +// Copyright (c) 2012-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -40,8 +40,6 @@ #include <boost/blank.hpp> #include <boost/integer/common_factor_ct.hpp> #include <boost/static_assert.hpp> -#include <boost/preprocessor/cat.hpp> -#include <boost/preprocessor/repeat.hpp> #include <boost/type_traits/aligned_storage.hpp> #include <boost/type_traits/alignment_of.hpp> #include <boost/type_traits/add_const.hpp> @@ -1096,8 +1094,6 @@ private: // helpers, for typedefs (below) { }; -#if !defined(BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT) - private: // helpers, for typedefs (below) typedef typename mpl::eval_if< @@ -1141,82 +1137,6 @@ private: // internal typedefs internal_types >::type internal_T0; -#else // defined(BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT) - -private: // helpers, for typedefs (below) - - typedef unwrapped_T0_ T0; - - #define BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS(z,N,_) \ - typedef typename mpl::eval_if< \ - is_recursive_ \ - , detail::variant::enable_recursive< \ - BOOST_PP_CAT(T,N) \ - , wknd_self_t \ - > \ - , mpl::identity< BOOST_PP_CAT(T,N) > \ - >::type BOOST_PP_CAT(recursive_enabled_T,N); \ - /**/ - - BOOST_PP_REPEAT( - BOOST_VARIANT_LIMIT_TYPES - , BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS - , _ - ) - - #undef BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS - - #define BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS(z,N,_) \ - typedef typename unwrap_recursive< \ - BOOST_PP_CAT(recursive_enabled_T,N) \ - >::type BOOST_PP_CAT(public_T,N); \ - /**/ - - BOOST_PP_REPEAT( - BOOST_VARIANT_LIMIT_TYPES - , BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS - , _ - ) - - #undef BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS - -public: // public typedefs - - typedef typename detail::variant::make_variant_list< - BOOST_VARIANT_ENUM_PARAMS(public_T) - >::type types; - -private: // helpers, for internal typedefs (below) - - #define BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS(z,N,_) \ - typedef detail::make_reference_content< \ - BOOST_PP_CAT(recursive_enabled_T,N) \ - >::type BOOST_PP_CAT(internal_T,N); \ - /**/ - - BOOST_PP_REPEAT( - BOOST_VARIANT_LIMIT_TYPES - , BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS - , _ - ) - - #undef BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS - -private: // internal typedefs - - typedef typename detail::variant::make_variant_list< - BOOST_VARIANT_ENUM_PARAMS(internal_T) - >::type internal_types; - -private: // static precondition assertions - - // NOTE TO USER : - // variant< type-sequence > syntax is not supported on this compiler! - // - BOOST_MPL_ASSERT_NOT(( is_sequence_based_ )); - -#endif // BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT workaround - private: // helpers, for representation (below) typedef typename detail::variant::find_fallback_type< diff --git a/contrib/restricted/boost/variant/include/boost/variant/variant_fwd.hpp b/contrib/restricted/boost/variant/include/boost/variant/variant_fwd.hpp index 1484f204d9..c5f8002431 100644 --- a/contrib/restricted/boost/variant/include/boost/variant/variant_fwd.hpp +++ b/contrib/restricted/boost/variant/include/boost/variant/variant_fwd.hpp @@ -4,7 +4,7 @@ //----------------------------------------------------------------------------- // // Copyright (c) 2003 Eric Friedman, Itay Maman -// Copyright (c) 2013-2023 Antony Polukhin +// Copyright (c) 2013-2024 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -26,15 +26,6 @@ #include <boost/preprocessor/repeat.hpp> /////////////////////////////////////////////////////////////////////////////// -// macro BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT -// -// Defined if variant does not support make_variant_over (see below). -// -#if defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) -# define BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT -#endif - -/////////////////////////////////////////////////////////////////////////////// // macro BOOST_VARIANT_NO_FULL_RECURSIVE_VARIANT_SUPPORT // // Defined if make_recursive_variant cannot be supported as documented. @@ -118,40 +109,6 @@ struct convert_void< void_ > typedef mpl::na type; }; -/////////////////////////////////////////////////////////////////////////////// -// (workaround) BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -// -// Needed to work around compilers that don't support using-declaration -// overloads. (See the variant::initializer workarounds below.) -// - -#if defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) -// (detail) tags voidNN -- NN defined on [0, BOOST_VARIANT_LIMIT_TYPES) -// -// Defines void types that are each unique and specializations of -// convert_void that yields mpl::na for each voidNN type. -// - -#define BOOST_VARIANT_DETAIL_DEFINE_VOID_N(z,N,_) \ - struct BOOST_PP_CAT(void,N); \ - \ - template <> \ - struct convert_void< BOOST_PP_CAT(void,N) > \ - { \ - typedef mpl::na type; \ - }; \ - /**/ - -BOOST_PP_REPEAT( - BOOST_VARIANT_LIMIT_TYPES - , BOOST_VARIANT_DETAIL_DEFINE_VOID_N - , _ - ) - -#undef BOOST_VARIANT_DETAIL_DEFINE_VOID_N - -#endif // BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE workaround - }} // namespace detail::variant #define BOOST_VARIANT_AUX_DECLARE_PARAMS BOOST_VARIANT_ENUM_PARAMS(typename T) diff --git a/contrib/restricted/boost/variant/ya.make b/contrib/restricted/boost/variant/ya.make index 3560dc18f1..3bb083267a 100644 --- a/contrib/restricted/boost/variant/ya.make +++ b/contrib/restricted/boost/variant/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/variant/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/variant/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/variant2/ya.make b/contrib/restricted/boost/variant2/ya.make index 76920a5d60..c1a34411e5 100644 --- a/contrib/restricted/boost/variant2/ya.make +++ b/contrib/restricted/boost/variant2/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.84.0) +VERSION(1.85.0) -ORIGINAL_SOURCE(https://github.com/boostorg/variant2/archive/boost-1.84.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/variant2/archive/boost-1.85.0.tar.gz) PEERDIR( contrib/restricted/boost/assert |