5 #ifndef VCCC_CONCEPTS_SWAPPABLE_WITH_HPP_
6 #define VCCC_CONCEPTS_SWAPPABLE_WITH_HPP_
18 template<
typename T,
typename U,
typename =
void>
19 struct swap_uref_test : std::false_type {};
21 template<
typename T,
typename U>
22 struct swap_uref_test<T, U,
void_t<decltype( ranges::
swap(std::declval<T>(), std::declval<U>()) )>> : std::true_type {};
26 struct swappable_with_impl : std::false_type {};
28 template<
typename T,
typename U>
29 struct swappable_with_impl<T, U, true>
50 template<
typename T,
typename U>
constexpr std::enable_if_t< conjunction< is_swappable< T >, is_swappable< U > >::value > swap(compressed_pair< T, U > &lhs, compressed_pair< T, U > &rhs) noexcept(conjunction< is_nothrow_swappable< T >, is_nothrow_swappable< U >>::value)
Definition: compressed_pair.hpp:108
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that a type can be swapped or that two types can be swapped with each other
Definition: swappable_with.hpp:51