12 struct RotateFunction {
13 template<concepts::Permutable Iter, concepts::SentinelFor<Iter> Sent>
14 constexpr auto operator()(Iter first, Iter pivot, Sent last_sentinel)
const ->
View<Iter> {
22 if (pivot == last_sentinel) {
23 return { util::move(first), util::move(pivot) };
28 if constexpr (concepts::BidirectionalIterator<Iter>) {
34 if constexpr (concepts::RandomAccessIterator<Iter>) {
45 }
while (first != pivot && tail != pivot);
51 return { tail,
last };
67 }
while (
next != last_sentinel);
69 auto first_save =
first;
70 while (pivot != last_sentinel) {
79 }
while (
next != last_sentinel);
81 return { first_save, pivot };
85 template<concepts::ForwardContainer Con>
86 requires(concepts::Permutable<meta::ContainerIterator<Con>>)
94constexpr inline auto rotate = detail::RotateFunction {};
constexpr auto last(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_last.h:13
constexpr auto first(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_first.h:13
constexpr auto next
Definition next.h:35
constexpr auto reverse
Definition reverse.h:28
View(Iter, Sent) -> View< Iter, Sent >
constexpr auto iterator_swap
Definition iterator_swap.h:49
constexpr auto end
Definition end.h:55
constexpr auto rotate
Definition rotate.h:94
constexpr auto begin
Definition begin.h:52
Definition any_storable.h:9