11 struct MinMaxFunction {
12 template<
typename T,
typename Proj = function::Identity,
13 concepts::IndirectStrictWeakOrder<meta::Projected<T const*, Proj>> Comp = function::Compare>
14 constexpr auto operator()(T
const& a, T
const& b, Comp comp = {}, Proj
proj = {})
const
15 -> MinMaxResult<T const&> {
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
27 return { *result.min, *result.max };
30 template<concepts::InputContainer Con,
typename Proj = function::Identity,
31 concepts::IndirectStrictWeakOrder<meta::Projected<meta::ContainerIterator<Con>, Proj>> Comp =
34 constexpr auto operator()(Con&& container, Comp comp = {}, Proj
proj = {})
const
37 return { util::move(*result.min), util::move(*result.max) };
42constexpr inline auto minmax = detail::MinMaxFunction {};
constexpr auto minmax
Definition minmax.h:42
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