12 struct NextPermutationFunction {
13 template<concepts::B
idirectionalIterator It, concepts::SentinelFor<It> Sent,
typename Comp = function::Compare,
14 typename Proj = function::Identity>
15 requires(concepts::Sortable<It, Comp, Proj>)
16 constexpr auto operator()(It
first, Sent
last, Comp comp = {}, Proj
proj = {})
const -> InFoundResult<It> {
19 return { util::move(first),
false };
24 return { util::move(last_it),
false };
38 auto insertion_point = last_it;
49 return { util::move(last_it),
true };
56 return { util::move(last_it),
false };
61 template<concepts::BidirectionalContainer Con,
typename Comp = function::Compare,
62 typename Proj = function::Identity>
63 requires(concepts::Sortable<meta::ContainerIterator<Con>, Comp, Proj>)
64 constexpr auto operator()(Con&& container, Comp comp = {}, Proj
proj = {})
const
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 prev
Definition prev.h:28
constexpr auto next
Definition next.h:35
constexpr auto reverse
Definition reverse.h:28
constexpr auto next_permutation
Definition next_permutation.h:71
constexpr auto iterator_swap
Definition iterator_swap.h:49
constexpr auto end
Definition end.h:55
constexpr auto begin
Definition begin.h:52
constexpr auto invoke
Definition invoke.h:100
constexpr auto ref
Definition reference_wrapper.h:98
Definition any_storable.h:9
constexpr auto proj
Definition proj.h:59