maybe<typename std::size_t> maximum_idx_on_maybe(F f, const Container& xs) { if (is_empty(xs)) return {}; else return maximum_idx_on(f, xs); }
typename Container::value_type maximum_on(F f, const Container& xs) { return elem_at_idx(maximum_idx_on(f, xs), xs); }
typename Container::value_type maximum_on(F f, const Container& xs) { internal::trigger_static_asserts<internal::unary_function_tag, F, typename Container::value_type>(); return elem_at_idx(maximum_idx_on(f, xs), xs); }