5 #ifndef VCCC_ALGORITHM_RANGES_SWAP_RANGES_HPP
6 #define VCCC_ALGORITHM_RANGES_SWAP_RANGES_HPP
25 template<
class I1,
class I2 >
30 struct swap_ranges_niebloid {
31 template<
typename I1,
typename S1,
typename I2,
typename S2, std::enable_if_t<
conjunction<
37 for (; !(first1 == last1 || first2 == last2); ++first1, ++first2)
39 return {std::move(first1), std::move(first2)};
42 template<
typename R1,
typename R2, std::enable_if_t<
conjunction<
47 constexpr
void operator()(R1&& r1, R2&& r2)
const {
constexpr VCCC_INLINE_OR_STATIC detail::swap_ranges_niebloid swap_ranges
Definition: swap_ranges.hpp:54
constexpr VCCC_INLINE_OR_STATIC detail_iter_swap::iter_swap_niebloid iter_swap
Definition: iter_swap.hpp:90
typename ranges::iterator< T >::type iterator_t
Definition: iterator_t.hpp:32
constexpr VCCC_INLINE_OR_STATIC detail::begin_niebloid begin
returns an iterator to the beginning of a range
Definition: begin.hpp:116
constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end
returns a sentinel indicating the end of a range
Definition: end.hpp:120
#define VCCC_INLINE_OR_STATIC
Definition: inline_or_static.hpp:9
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: conjunction.hpp:22
Definition: indirectly_swappable.hpp:46
Definition: in_in_result.hpp:22
Definition: sentinel_for.hpp:24