11 #ifndef ASIO_TRAITS_SET_DONE_MEMBER_HPP 12 #define ASIO_TRAITS_SET_DONE_MEMBER_HPP 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 18 #include "asio/detail/config.hpp" 19 #include "asio/detail/type_traits.hpp" 21 #if defined(ASIO_HAS_DECLTYPE) \ 22 && defined(ASIO_HAS_NOEXCEPT) \ 23 && defined(ASIO_HAS_WORKING_EXPRESSION_SFINAE) 24 # define ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT 1 25 #endif // defined(ASIO_HAS_DECLTYPE) 29 #include "asio/detail/push_options.hpp" 34 template <
typename T,
typename =
void>
37 template <
typename T,
typename =
void>
45 ASIO_STATIC_CONSTEXPR(
bool, is_valid =
false);
46 ASIO_STATIC_CONSTEXPR(
bool, is_noexcept =
false);
49 #if defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) 51 template <
typename T,
typename =
void>
59 decltype(declval<T>().set_done())
62 ASIO_STATIC_CONSTEXPR(
bool, is_valid =
true);
64 using result_type = decltype(declval<T>().set_done());
66 ASIO_STATIC_CONSTEXPR(
bool,
67 is_noexcept = noexcept(declval<T>().set_done()));
70 #else // defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) 72 template <
typename T,
typename =
void>
75 is_same<T, typename remove_reference<T>::type>::value,
77 is_same<T, typename add_const<T>::type>::value,
79 traits::set_done_member<typename add_const<T>::type>
81 traits::set_done_member<typename remove_reference<T>::type>
86 #endif // defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) 91 template <
typename T,
typename>
92 struct set_done_member_default :
97 template <
typename T,
typename>
98 struct set_done_member :
99 set_done_member_default<T>
106 #include "asio/detail/pop_options.hpp" 108 #endif // ASIO_TRAITS_SET_DONE_MEMBER_HPP Definition: set_done_member.hpp:38
Definition: set_done_member.hpp:73
Definition: set_done_member.hpp:43
Definition: set_done_member.hpp:35
Definition: any_io_executor.hpp:28