Blame view

3rdparty/boost_1_81_0/boost/asio/execution/scheduler.hpp 2.4 KB
63e88f80   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  //
  // execution/scheduler.hpp
  // ~~~~~~~~~~~~~~~~~~~~~~~
  //
  // Copyright (c) 2003-2022 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)
  //
  
  #ifndef BOOST_ASIO_EXECUTION_SCHEDULER_HPP
  #define BOOST_ASIO_EXECUTION_SCHEDULER_HPP
  
  #if defined(_MSC_VER) && (_MSC_VER >= 1200)
  # pragma once
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
  
  #include <boost/asio/detail/config.hpp>
  
  #if !defined(BOOST_ASIO_NO_DEPRECATED)
  
  #include <boost/asio/detail/type_traits.hpp>
  #include <boost/asio/execution/schedule.hpp>
  #include <boost/asio/traits/equality_comparable.hpp>
  
  #include <boost/asio/detail/push_options.hpp>
  
  namespace boost {
  namespace asio {
  namespace execution {
  namespace detail {
  
  template <typename T>
  struct is_scheduler_base :
    integral_constant<bool,
      is_copy_constructible<typename remove_cvref<T>::type>::value
        && traits::equality_comparable<typename remove_cvref<T>::type>::is_valid
    >
  {
  };
  
  } // namespace detail
  
  /// The is_scheduler trait detects whether a type T satisfies the
  /// execution::scheduler concept.
  /**
   * Class template @c is_scheduler is a type trait that is derived from @c
   * true_type if the type @c T meets the concept definition for a scheduler for
   * error type @c E, otherwise @c false_type.
   */
  template <typename T>
  struct is_scheduler :
  #if defined(GENERATING_DOCUMENTATION)
    integral_constant<bool, automatically_determined>
  #else // defined(GENERATING_DOCUMENTATION)
    conditional<
      can_schedule<T>::value,
      detail::is_scheduler_base<T>,
      false_type
    >::type
  #endif // defined(GENERATING_DOCUMENTATION)
  {
  };
  
  #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
  
  template <typename T>
  BOOST_ASIO_CONSTEXPR const bool is_scheduler_v = is_scheduler<T>::value;
  
  #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
  
  #if defined(BOOST_ASIO_HAS_CONCEPTS)
  
  template <typename T>
  BOOST_ASIO_CONCEPT scheduler = is_scheduler<T>::value;
  
  #define BOOST_ASIO_EXECUTION_SCHEDULER ::boost::asio::execution::scheduler
  
  #else // defined(BOOST_ASIO_HAS_CONCEPTS)
  
  #define BOOST_ASIO_EXECUTION_SCHEDULER typename
  
  #endif // defined(BOOST_ASIO_HAS_CONCEPTS)
  
  } // namespace execution
  } // namespace asio
  } // namespace boost
  
  #include <boost/asio/detail/pop_options.hpp>
  
  #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
  
  #endif // BOOST_ASIO_EXECUTION_SCHEDULER_HPP