std::experimental::ranges::Swappable, std::experimental::ranges::SwappableWith
Min standard notice:
Header: <experimental/ranges/concepts>
The concept Swappable
# Declarations
template< class T >
concept bool Swappable =
requires(T& a, T& b) {
ranges::swap(a, b);
};
(ranges TS)
template< class T, class U >
concept bool SwappableWith =
CommonReference<
const std::remove_reference_t<T>&,
const std::remove_reference_t<U>&> &&
requires(T&& t, U&& u) {
ranges::swap(std::forward<T>(t), std::forward<T>(t));
ranges::swap(std::forward<U>(u), std::forward<U>(u));
ranges::swap(std::forward<T>(t), std::forward<U>(u));
ranges::swap(std::forward<U>(u), std::forward<T>(t));
};
(ranges TS)