std::max (3) - Linux Manuals
std::max: std::max
NAME
Synopsis
Defined in header <algorithm>
template< class T > (until C++14)
const T& max( const T& a, const T& b );
template< class T > (since C++14)
constexpr const T& max( const T& a, const T& b );
template< class T, class Compare > (until C++14)
const T& max( const T& a, const T& b, Compare comp );
template< class T, class Compare > (since C++14)
constexpr const T& max( const T& a, const T& b, Compare comp ); (1)
template< class T > (since C++11)
T max( std::initializer_list<T> ilist ); (2) (until C++14)
template< class T > (since C++14)
constexpr T max( std::initializer_list<T> ilist ); (3)
template< class T, class Compare > (since C++11)
T max( std::initializer_list<T> ilist, Compare comp ); (4) (until C++14)
template< class T, class Compare > (since C++14)
constexpr T max( std::initializer_list<T> ilist, Compare comp );
Returns the greater of the given values.
1-2) Returns the greater of a and b.
3-4) Returns the greatest of the values in initializer list ilist.
The (1,3) versions use operator< to compare the values, the (2,4) versions use the given comparison function comp.
Parameters
a, b - the values to compare
ilist - initializer list with the values to compare
comp - While the signature does not need to have const &, the function must not modify the objects passed to it and must be able to accept all values of type (possibly const) Type1 and Type2 regardless of value_category (thus, Type1 & is not allowed
Type requirements
-
T must meet the requirements of LessThanComparable in order to use overloads (1,3).
-
T must meet the requirements of CopyConstructible in order to use overloads (3,4).
Return value
1-2) The greater of a and b. If they are equivalent, returns a.
3-4) The greatest value in ilist. If several values are equivalent to the greatest, returns the leftmost one.
Complexity
1-2) Exactly one comparison
3-4) Exactly ilist.size() - 1 comparisons
Possible implementation
First version
Second version
Third version
Fourth version
Notes
Capturing the result of std::max by reference if one of the parameters is rvalue produces a dangling reference if that parameter is returned:
Example
// Run this code
Output:
See also