Iros
 
Loading...
Searching...
No Matches
minmax.h
Go to the documentation of this file.
1#pragma once
2
8
9namespace di::container {
10namespace detail {
12 template<typename T, typename Proj = function::Identity,
14 constexpr auto operator()(T const& a, T const& b, Comp comp = {}, Proj proj = {}) const
17 return { a, b };
18 }
19 return { b, a };
20 }
21
22 template<concepts::Copyable T, typename Proj = function::Identity,
23 concepts::IndirectStrictWeakOrder<meta::Projected<T const*, Proj>> Comp = function::Compare>
24 constexpr auto operator()(std::initializer_list<T> list, Comp comp = {}, Proj proj = {}) const
26 auto result = container::minmax_element(list, util::ref(comp), util::ref(proj));
27 return { *result.min, *result.max };
28 }
29
30 template<concepts::InputContainer Con, typename Proj = function::Identity,
31 concepts::IndirectStrictWeakOrder<meta::Projected<meta::ContainerIterator<Con>, Proj>> Comp =
32 function::Compare>
33 requires(concepts::IndirectlyCopyableStorable<meta::ContainerIterator<Con>, meta::ContainerValue<Con>*>)
34 constexpr auto operator()(Con&& container, Comp comp = {}, Proj proj = {}) const
37 return { util::move(*result.min), util::move(*result.max) };
38 }
39 };
40}
41
42constexpr inline auto minmax = detail::MinMaxFunction {};
43}
44
45namespace di {
47}
Definition indirect_strict_weak_order.h:12
Definition sequence.h:13
Definition sequence.h:12
constexpr auto minmax
Definition minmax.h:42
constexpr auto minmax_element
Definition minmax_element.h:76
constexpr auto invoke
Definition invoke.h:100
IteratorValue< ContainerIterator< T > > ContainerValue
Definition container_value.h:8
constexpr auto ref
Definition reference_wrapper.h:98
Definition zstring_parser.h:9
constexpr auto proj
Definition proj.h:59
@ T
Definition key.h:29
Definition min_max_result.h:8
constexpr auto operator()(T const &a, T const &b, Comp comp={}, Proj proj={}) const -> MinMaxResult< T const & >
Definition minmax.h:14
constexpr auto operator()(std::initializer_list< T > list, Comp comp={}, Proj proj={}) const -> MinMaxResult< T >
Definition minmax.h:24
Definition compare.h:8
Definition identity.h:7