11 #ifndef ASIO_TRAITS_EQUALITY_COMPARABLE_HPP 12 #define ASIO_TRAITS_EQUALITY_COMPARABLE_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_EQUALITY_COMPARABLE_TRAIT 1 25 #endif // defined(ASIO_HAS_DECLTYPE) 32 template <
typename T,
typename =
void>
35 template <
typename T,
typename =
void>
43 ASIO_STATIC_CONSTEXPR(
bool, is_valid =
false);
44 ASIO_STATIC_CONSTEXPR(
bool, is_noexcept =
false);
47 #if defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) 49 template <
typename T,
typename =
void>
59 static_cast<bool>(declval<const T>() == declval<const T>())
62 static_cast<bool>(declval<const T>() != declval<const T>())
67 ASIO_STATIC_CONSTEXPR(
bool, is_valid =
true);
69 ASIO_STATIC_CONSTEXPR(
bool, is_noexcept =
70 noexcept(declval<const T>() == declval<const T>())
71 && noexcept(declval<const T>() != declval<const T>()));
74 #else // defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) 76 template <
typename T,
typename =
void>
79 is_same<T, typename decay<T>::type>::value,
80 no_equality_comparable,
81 traits::equality_comparable<typename decay<T>::type>
86 #endif // defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) 91 template <
typename T,
typename>
96 template <
typename T,
typename>
97 struct equality_comparable : equality_comparable_default<T>
104 #endif // ASIO_TRAITS_EQUALITY_COMPARABLE_HPP Definition: equality_comparable.hpp:41
Definition: equality_comparable.hpp:77
Definition: equality_comparable.hpp:33
Definition: any_io_executor.hpp:28
Definition: equality_comparable.hpp:36