diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2024-08-18 13:59:37 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2024-08-18 14:10:13 +0300 |
commit | 3cb9c68b3254fa3760085593a0106aa48e53b285 (patch) | |
tree | 5590b15b46040b675621dfd6a513a9c6b48cbbab /contrib | |
parent | 9a2844bdf2084909bd91510c28fe2371782fdb2c (diff) | |
download | ydb-3cb9c68b3254fa3760085593a0106aa48e53b285.tar.gz |
Update contrib/restricted/boost/function to 1.86.0
e0d044456b92ee6ee3b811944fececd47648f2a8
Diffstat (limited to 'contrib')
4 files changed, 165 insertions, 103 deletions
diff --git a/contrib/restricted/boost/function/include/boost/function/function_base.hpp b/contrib/restricted/boost/function/include/boost/function/function_base.hpp index 7f78e36eca..ca15b7b7bb 100644 --- a/contrib/restricted/boost/function/include/boost/function/function_base.hpp +++ b/contrib/restricted/boost/function/include/boost/function/function_base.hpp @@ -15,17 +15,6 @@ #include <boost/function_equal.hpp> #include <boost/core/typeinfo.hpp> #include <boost/core/ref.hpp> -#include <boost/type_traits/has_trivial_copy.hpp> -#include <boost/type_traits/has_trivial_destructor.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/type_traits/is_integral.hpp> -#include <boost/type_traits/is_volatile.hpp> -#include <boost/type_traits/composite_traits.hpp> -#include <boost/type_traits/conditional.hpp> -#include <boost/type_traits/alignment_of.hpp> -#include <boost/type_traits/enable_if.hpp> -#include <boost/type_traits/integral_constant.hpp> -#include <boost/type_traits/is_function.hpp> #include <boost/assert.hpp> #include <boost/config.hpp> #include <boost/config/workaround.hpp> @@ -33,6 +22,7 @@ #include <string> #include <memory> #include <new> +#include <type_traits> #if defined(BOOST_MSVC) # pragma warning( push ) @@ -43,10 +33,8 @@ // retained because used in a test #define BOOST_FUNCTION_TARGET_FIX(x) -# define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \ - typename ::boost::enable_if_< \ - !(::boost::is_integral<Functor>::value), \ - Type>::type +#define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \ + typename std::enable_if< !std::is_integral<Functor>::value, Type>::type namespace boost { namespace detail { @@ -131,15 +119,15 @@ namespace boost { template<typename F> class get_function_tag { - typedef typename conditional<(is_pointer<F>::value), + typedef typename std::conditional<std::is_pointer<F>::value, function_ptr_tag, function_obj_tag>::type ptr_or_obj_tag; - typedef typename conditional<(is_member_pointer<F>::value), + typedef typename std::conditional<std::is_member_pointer<F>::value, member_ptr_tag, ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag; - typedef typename conditional<(is_reference_wrapper<F>::value), + typedef typename std::conditional<is_reference_wrapper<F>::value, function_obj_ref_tag, ptr_or_obj_or_mem_tag>::type or_ref_tag; @@ -204,8 +192,8 @@ namespace boost { BOOST_STATIC_CONSTANT (bool, value = ((sizeof(F) <= sizeof(function_buffer) && - (alignment_of<function_buffer>::value - % alignment_of<F>::value == 0)))); + (std::alignment_of<function_buffer>::value + % std::alignment_of<F>::value == 0)))); }; template <typename F,typename A> @@ -306,7 +294,7 @@ namespace boost { // Function objects that fit in the small-object buffer. static inline void manager(const function_buffer& in_buffer, function_buffer& out_buffer, - functor_manager_operation_type op, true_type) + functor_manager_operation_type op, std::true_type) { functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op); } @@ -314,7 +302,7 @@ namespace boost { // Function objects that require heap allocation static inline void manager(const function_buffer& in_buffer, function_buffer& out_buffer, - functor_manager_operation_type op, false_type) + functor_manager_operation_type op, std::false_type) { if (op == clone_functor_tag) { // Clone the functor @@ -355,7 +343,7 @@ namespace boost { functor_manager_operation_type op, function_obj_tag) { manager(in_buffer, out_buffer, op, - integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>()); + std::integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>()); } // For member pointers, we use the small-object optimization buffer. @@ -363,7 +351,7 @@ namespace boost { manager(const function_buffer& in_buffer, function_buffer& out_buffer, functor_manager_operation_type op, member_ptr_tag) { - manager(in_buffer, out_buffer, op, true_type()); + manager(in_buffer, out_buffer, op, std::true_type()); } public: @@ -401,7 +389,7 @@ namespace boost { // Function objects that fit in the small-object buffer. static inline void manager(const function_buffer& in_buffer, function_buffer& out_buffer, - functor_manager_operation_type op, true_type) + functor_manager_operation_type op, std::true_type) { functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op); } @@ -409,7 +397,7 @@ namespace boost { // Function objects that require heap allocation static inline void manager(const function_buffer& in_buffer, function_buffer& out_buffer, - functor_manager_operation_type op, false_type) + functor_manager_operation_type op, std::false_type) { typedef functor_wrapper<Functor,Allocator> functor_wrapper_type; @@ -460,7 +448,7 @@ namespace boost { functor_manager_operation_type op, function_obj_tag) { manager(in_buffer, out_buffer, op, - integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>()); + std::integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>()); } public: @@ -529,8 +517,8 @@ public: detail::function::function_buffer type_result; type_result.members.type.type = &BOOST_CORE_TYPEID(Functor); - type_result.members.type.const_qualified = is_const<Functor>::value; - type_result.members.type.volatile_qualified = is_volatile<Functor>::value; + type_result.members.type.const_qualified = std::is_const<Functor>::value; + type_result.members.type.volatile_qualified = std::is_volatile<Functor>::value; get_vtable()->manager(functor, type_result, detail::function::check_functor_type_tag); return static_cast<Functor*>(type_result.members.obj_ptr); @@ -544,7 +532,7 @@ public: detail::function::function_buffer type_result; type_result.members.type.type = &BOOST_CORE_TYPEID(Functor); type_result.members.type.const_qualified = true; - type_result.members.type.volatile_qualified = is_volatile<Functor>::value; + type_result.members.type.volatile_qualified = std::is_volatile<Functor>::value; get_vtable()->manager(functor, type_result, detail::function::check_functor_type_tag); // GCC 2.95.3 gets the CV qualifiers wrong here, so we @@ -553,8 +541,8 @@ public: } template<typename F> - typename boost::enable_if_< !boost::is_function<F>::value, bool >::type - contains(const F& f) const + typename std::enable_if< !std::is_function<F>::value, bool >::type + contains(const F& f) const { if (const F* fp = this->template target<F>()) { @@ -565,8 +553,8 @@ public: } template<typename Fn> - typename boost::enable_if_< boost::is_function<Fn>::value, bool >::type - contains(Fn& f) const + typename std::enable_if< std::is_function<Fn>::value, bool >::type + contains(Fn& f) const { typedef Fn* F; if (const F* fp = this->template target<F>()) diff --git a/contrib/restricted/boost/function/include/boost/function/function_template.hpp b/contrib/restricted/boost/function/include/boost/function/function_template.hpp index ee3fc7ab4d..f21a395beb 100644 --- a/contrib/restricted/boost/function/include/boost/function/function_template.hpp +++ b/contrib/restricted/boost/function/include/boost/function/function_template.hpp @@ -15,11 +15,10 @@ #include <boost/core/no_exceptions_support.hpp> #include <boost/mem_fn.hpp> #include <boost/throw_exception.hpp> -#include <boost/type_traits/is_integral.hpp> -#include <boost/type_traits/is_void.hpp> #include <boost/config.hpp> #include <algorithm> #include <cassert> +#include <type_traits> #if defined(BOOST_MSVC) # pragma warning( push ) @@ -180,7 +179,7 @@ namespace boost { > struct get_function_invoker { - typedef typename conditional<(is_void<R>::value), + typedef typename std::conditional<std::is_void<R>::value, void_function_invoker< FunctionPtr, R, @@ -201,7 +200,7 @@ namespace boost { > struct get_function_obj_invoker { - typedef typename conditional<(is_void<R>::value), + typedef typename std::conditional<std::is_void<R>::value, void_function_obj_invoker< FunctionObj, R, @@ -222,7 +221,7 @@ namespace boost { > struct get_function_ref_invoker { - typedef typename conditional<(is_void<R>::value), + typedef typename std::conditional<std::is_void<R>::value, void_function_ref_invoker< FunctionObj, R, @@ -244,7 +243,7 @@ namespace boost { > struct get_member_invoker { - typedef typename conditional<(is_void<R>::value), + typedef typename std::conditional<std::is_void<R>::value, void_member_invoker< MemberPtr, R, @@ -499,27 +498,27 @@ namespace boost { // Assign to a function object using the small object optimization template<typename FunctionObj> void - assign_functor(FunctionObj f, function_buffer& functor, true_type) const + assign_functor(FunctionObj f, function_buffer& functor, std::true_type) const { new (reinterpret_cast<void*>(functor.data)) FunctionObj(std::move(f)); } template<typename FunctionObj,typename Allocator> void - assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const + assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, std::true_type) const { - assign_functor(std::move(f),functor,true_type()); + assign_functor(std::move(f),functor,std::true_type()); } // Assign to a function object allocated on the heap. template<typename FunctionObj> void - assign_functor(FunctionObj f, function_buffer& functor, false_type) const + assign_functor(FunctionObj f, function_buffer& functor, std::false_type) const { functor.members.obj_ptr = new FunctionObj(std::move(f)); } template<typename FunctionObj,typename Allocator> void - assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const + assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, std::false_type) const { typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type; @@ -540,7 +539,7 @@ namespace boost { { if (!boost::detail::function::has_empty_target(boost::addressof(f))) { assign_functor(std::move(f), functor, - integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>()); + std::integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>()); return true; } else { return false; @@ -552,7 +551,7 @@ namespace boost { { if (!boost::detail::function::has_empty_target(boost::addressof(f))) { assign_functor_a(std::move(f), functor, a, - integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>()); + std::integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>()); return true; } else { return false; @@ -566,8 +565,8 @@ namespace boost { function_buffer& functor, function_obj_ref_tag) const { functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer()); - functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value; - functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value; + functor.members.obj_ref.is_const_qualified = std::is_const<FunctionObj>::value; + functor.members.obj_ref.is_volatile_qualified = std::is_volatile<FunctionObj>::value; return true; } template<typename FunctionObj,typename Allocator> @@ -587,19 +586,125 @@ namespace boost { struct variadic_function_base {}; - template <typename T> - struct variadic_function_base<T> + template <typename T1> + struct variadic_function_base<T1> { - typedef T argument_type; + typedef T1 argument_type; + typedef T1 arg1_type; }; - template <typename T0, typename T1> - struct variadic_function_base<T0, T1> + template <typename T1, typename T2> + struct variadic_function_base<T1, T2> { - typedef T0 first_argument_type; - typedef T1 second_argument_type; + typedef T1 first_argument_type; + typedef T2 second_argument_type; + typedef T1 arg1_type; + typedef T2 arg2_type; }; + template <typename T1, typename T2, typename T3> + struct variadic_function_base<T1, T2, T3> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + }; + + template <typename T1, typename T2, typename T3, typename T4> + struct variadic_function_base<T1, T2, T3, T4> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + }; + + template <typename T1, typename T2, typename T3, typename T4, typename T5> + struct variadic_function_base<T1, T2, T3, T4, T5> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + typedef T5 arg5_type; + }; + + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> + struct variadic_function_base<T1, T2, T3, T4, T5, T6> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + typedef T5 arg5_type; + typedef T6 arg6_type; + }; + + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> + struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + typedef T5 arg5_type; + typedef T6 arg6_type; + typedef T7 arg7_type; + }; + + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> + struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7, T8> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + typedef T5 arg5_type; + typedef T6 arg6_type; + typedef T7 arg7_type; + typedef T8 arg8_type; + }; + + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> + struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7, T8, T9> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + typedef T5 arg5_type; + typedef T6 arg6_type; + typedef T7 arg7_type; + typedef T8 arg8_type; + typedef T9 arg9_type; + }; + + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> + struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> + { + typedef T1 arg1_type; + typedef T2 arg2_type; + typedef T3 arg3_type; + typedef T4 arg4_type; + typedef T5 arg5_type; + typedef T6 arg6_type; + typedef T7 arg7_type; + typedef T8 arg8_type; + typedef T9 arg9_type; + typedef T10 arg10_type; + }; + +#if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000 + + template<class T> struct is_trivially_copyable: std::integral_constant<bool, + __has_trivial_copy(T) && __has_trivial_assign(T) && __has_trivial_destructor(T)> {}; + +#else + + using std::is_trivially_copyable; + +#endif + } // end namespace function } // end namespace detail @@ -643,8 +748,8 @@ namespace boost { // one with a default parameter. template<typename Functor> function_n(Functor f - ,typename boost::enable_if_< - !(is_integral<Functor>::value), + ,typename std::enable_if< + !std::is_integral<Functor>::value, int>::type = 0 ) : function_base() @@ -653,8 +758,8 @@ namespace boost { } template<typename Functor,typename Allocator> function_n(Functor f, Allocator a - ,typename boost::enable_if_< - !(is_integral<Functor>::value), + ,typename std::enable_if< + !std::is_integral<Functor>::value, int>::type = 0 ) : function_base() @@ -691,8 +796,8 @@ namespace boost { // handle function_n as the type of the temporary to // construct. template<typename Functor> - typename boost::enable_if_< - !(is_integral<Functor>::value), + typename std::enable_if< + !std::is_integral<Functor>::value, function_n&>::type operator=(Functor f) { @@ -835,8 +940,7 @@ namespace boost { if (stored_vtable.assign_to(std::move(f), functor)) { std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base); // coverity[pointless_expression]: suppress coverity warnings on apparant if(const). - if (boost::has_trivial_copy_constructor<Functor>::value && - boost::has_trivial_destructor<Functor>::value && + if (boost::detail::function::is_trivially_copyable<Functor>::value && boost::detail::function::function_allows_small_object_optimization<Functor>::value) value |= static_cast<std::size_t>(0x01); vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value); @@ -869,8 +973,7 @@ namespace boost { if (stored_vtable.assign_to_a(std::move(f), functor, a)) { std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base); // coverity[pointless_expression]: suppress coverity warnings on apparant if(const). - if (boost::has_trivial_copy_constructor<Functor>::value && - boost::has_trivial_destructor<Functor>::value && + if (boost::detail::function::is_trivially_copyable<Functor>::value && boost::detail::function::function_allows_small_object_optimization<Functor>::value) value |= static_cast<std::size_t>(0x01); vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value); @@ -974,8 +1077,8 @@ public: template<typename Functor> function(Functor f - ,typename boost::enable_if_< - !(is_integral<Functor>::value), + ,typename std::enable_if< + !std::is_integral<Functor>::value, int>::type = 0 ) : base_type(std::move(f)) @@ -983,8 +1086,8 @@ public: } template<typename Functor,typename Allocator> function(Functor f, Allocator a - ,typename boost::enable_if_< - !(is_integral<Functor>::value), + ,typename std::enable_if< + !std::is_integral<Functor>::value, int>::type = 0 ) : base_type(std::move(f),a) @@ -1014,8 +1117,8 @@ public: } template<typename Functor> - typename boost::enable_if_< - !(is_integral<Functor>::value), + typename std::enable_if< + !std::is_integral<Functor>::value, self_type&>::type operator=(Functor f) { diff --git a/contrib/restricted/boost/function/ya.make b/contrib/restricted/boost/function/ya.make index 5a7f2bd2ad..ca3eef69e2 100644 --- a/contrib/restricted/boost/function/ya.make +++ b/contrib/restricted/boost/function/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.85.0) +VERSION(1.86.0) -ORIGINAL_SOURCE(https://github.com/boostorg/function/archive/boost-1.85.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/function/archive/boost-1.86.0.tar.gz) PEERDIR( contrib/restricted/boost/assert diff --git a/contrib/restricted/boost/type_traits/include/boost/type_traits/composite_traits.hpp b/contrib/restricted/boost/type_traits/include/boost/type_traits/composite_traits.hpp deleted file mode 100644 index 985a4c51d3..0000000000 --- a/contrib/restricted/boost/type_traits/include/boost/type_traits/composite_traits.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard -// Hinnant & John Maddock 2000. -// Use, modification and distribution are subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt). -// -// See http://www.boost.org/libs/type_traits for most recent version including documentation. -// -// defines traits classes for composite types: -// is_array, is_pointer, is_reference, is_member_pointer, is_enum, is_union. -// - -#ifndef BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED -#define BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED - -#include <boost/type_traits/is_array.hpp> -#include <boost/type_traits/is_enum.hpp> -#include <boost/type_traits/is_member_pointer.hpp> -#include <boost/type_traits/is_member_function_pointer.hpp> -#include <boost/type_traits/is_pointer.hpp> -#include <boost/type_traits/is_reference.hpp> -#include <boost/type_traits/is_union.hpp> - -#endif // BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED - - - - - |