10 struct MinMaxElementFunction {
11 template<concepts::ForwardIterator It, concepts::SentinelFor<It> Sent,
typename Proj = function::Identity,
12 concepts::IndirectStrictWeakOrder<meta::Projected<It, Proj>> Comp = function::Compare>
13 constexpr auto operator()(It first, Sent last, Comp comp = {}, Proj
proj = {})
const -> MinMaxResult<It> {
18 auto min_iter =
first;
19 auto max_iter =
first;
20 for (
auto it = ++first; it !=
last; ++it) {
28 auto compare_with_max =
30 if (compare_with_max >= 0) {
39 if (it_jt_result < 0) {
63 return { util::move(min_iter), util::move(max_iter) };
66 template<concepts::ForwardContainer Con,
typename Proj = function::Identity,
67 concepts::IndirectStrictWeakOrder<meta::Projected<meta::ContainerIterator<Con>, Proj>> Comp =
69 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 next
Definition next.h:35
constexpr auto end
Definition end.h:55
constexpr auto begin
Definition begin.h:52
constexpr auto minmax_element
Definition minmax_element.h:76
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