|  | 
| template<typename Rng , typename C  = less, typename P  = identity> requires input_range<Rng> && indirect_strict_weak_order<C, projected<iterator_t<Rng>, P>> && indirectly_copyable_storable<iterator_t<Rng>, range_value_t<Rng> *>
 | 
| constexpr range_value_t< Rng > | ranges::max (Rng &&rng, C pred=C{}, P proj=P{}) | 
|  | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. 
 | 
|  | 
| template<typename T , typename C  = less, typename P  = identity> requires copyable<T> && indirect_strict_weak_order<C, projected<T const *, P>>
 | 
| constexpr T | ranges::max (std::initializer_list< T > const &&rng, C pred=C{}, P proj=P{}) | 
|  | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. 
 | 
|  | 
| template<typename T , typename C  = less, typename P  = identity> requires indirect_strict_weak_order<C, projected<T const *, P>>
 | 
| constexpr T const & | ranges::max (T const &a, T const &b, C pred=C{}, P proj=P{}) | 
|  | function template max
 | 
|  |