diff options
Diffstat (limited to '3rdparty/asio/include/asio/execution/context.hpp')
-rw-r--r-- | 3rdparty/asio/include/asio/execution/context.hpp | 82 |
1 files changed, 20 insertions, 62 deletions
diff --git a/3rdparty/asio/include/asio/execution/context.hpp b/3rdparty/asio/include/asio/execution/context.hpp index f751c7a6e65..a9df9c1c4b6 100644 --- a/3rdparty/asio/include/asio/execution/context.hpp +++ b/3rdparty/asio/include/asio/execution/context.hpp @@ -2,7 +2,7 @@ // execution/context.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -18,8 +18,6 @@ #include "asio/detail/config.hpp" #include "asio/detail/type_traits.hpp" #include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" #include "asio/is_applicable_property.hpp" #include "asio/traits/query_static_constexpr_member.hpp" #include "asio/traits/static_query.hpp" @@ -40,10 +38,9 @@ namespace execution { /// with an executor. struct context_t { - /// The context_t property applies to executors, senders, and schedulers. + /// The context_t property applies to executors. template <typename T> - static constexpr bool is_applicable_property_v = - is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>; + static constexpr bool is_applicable_property_v = is_executor_v<T>; /// The context_t property cannot be required. static constexpr bool is_requirable = false; @@ -70,29 +67,17 @@ struct context_t { #if defined(ASIO_HAS_VARIABLE_TEMPLATES) template <typename T> - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = ( - is_executor<T>::value - || conditional< - is_executor<T>::value, - false_type, - is_sender<T> - >::type::value - || conditional< - is_executor<T>::value, - false_type, - is_scheduler<T> - >::type::value)); + static constexpr bool is_applicable_property_v = is_executor<T>::value; #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); + static constexpr bool is_requirable = false; + static constexpr bool is_preferable = false; #if defined(ASIO_HAS_STD_ANY) typedef std::any polymorphic_query_result_type; #endif // defined(ASIO_HAS_STD_ANY) - ASIO_CONSTEXPR context_t() + constexpr context_t() { } @@ -103,17 +88,17 @@ struct context_t struct type { template <typename P> - static constexpr auto query(ASIO_MOVE_ARG(P) p) + static constexpr auto query(P&& p) noexcept( noexcept( - conditional<true, T, P>::type::query(ASIO_MOVE_CAST(P)(p)) + conditional_t<true, T, P>::query(static_cast<P&&>(p)) ) ) -> decltype( - conditional<true, T, P>::type::query(ASIO_MOVE_CAST(P)(p)) + conditional_t<true, T, P>::query(static_cast<P&&>(p)) ) { - return T::query(ASIO_MOVE_CAST(P)(p)); + return T::query(static_cast<P&&>(p)); } }; #else // defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) @@ -129,24 +114,17 @@ struct context_t #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template <typename T> - static ASIO_CONSTEXPR - typename query_static_constexpr_member<T>::result_type + static constexpr typename query_static_constexpr_member<T>::result_type static_query() - ASIO_NOEXCEPT_IF(( - query_static_constexpr_member<T>::is_noexcept)) + noexcept(query_static_constexpr_member<T>::is_noexcept) { return query_static_constexpr_member<T>::value(); } template <typename E, typename T = decltype(context_t::static_query<E>())> - static ASIO_CONSTEXPR const T static_query_v - = context_t::static_query<E>(); + static constexpr const T static_query_v = context_t::static_query<E>(); #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) - static const context_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) }; #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ @@ -156,20 +134,11 @@ const T context_t<I>::static_query_v; #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -#if !defined(ASIO_HAS_CONSTEXPR) -template <int I> -const context_t<I> context_t<I>::instance; -#endif - } // namespace detail typedef detail::context_t<> context_t; -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) constexpr context_t context; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const context_t& context = context_t::instance; } -#endif } // namespace execution @@ -177,18 +146,7 @@ namespace { static const context_t& context = context_t::instance; } template <typename T> struct is_applicable_property<T, execution::context_t> - : integral_constant<bool, - execution::is_executor<T>::value - || conditional< - execution::is_executor<T>::value, - false_type, - execution::is_sender<T> - >::type::value - || conditional< - execution::is_executor<T>::value, - false_type, - execution::is_scheduler<T> - >::type::value> + : integral_constant<bool, execution::is_executor<T>::value> { }; @@ -201,18 +159,18 @@ namespace traits { template <typename T> struct static_query<T, execution::context_t, - typename enable_if< + enable_if_t< execution::detail::context_t<0>:: query_static_constexpr_member<T>::is_valid - >::type> + >> { - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); + static constexpr bool is_valid = true; + static constexpr bool is_noexcept = true; typedef typename execution::detail::context_t<0>:: query_static_constexpr_member<T>::result_type result_type; - static ASIO_CONSTEXPR result_type value() + static constexpr result_type value() { return execution::detail::context_t<0>:: query_static_constexpr_member<T>::value(); |