std::min

Header: <algorithm>

Returns the smaller of the given values.

# Declarations

template< class T >
const T& min( const T& a, const T& b );

(constexpr since C++14)

template< class T, class Compare >
const T& min( const T& a, const T& b, Compare comp );

(constexpr since C++14)

template< class T >
T min( std::initializer_list<T> ilist );

(since C++11) (constexpr since C++14)

template< class T, class Compare >
T min( std::initializer_list<T> ilist, Compare comp );

(since C++11) (constexpr since C++14)

# Parameters

# Notes

Capturing the result of std::min by reference produces a dangling reference if one of the parameters is a temporary and that parameter is returned:

# Example

#include <algorithm>
#include <iostream>
#include <string_view>
 
int main()
{
    std::cout << "smaller of 10 and 010 is " << std::min(10, 010) << '\n'
              << "smaller of 'd' and 'b' is '" << std::min('d', 'b') << "'\n"
              << "shortest of \"foo\", \"bar\", and \"hello\" is \""
              << std::min({"foo", "bar", "hello"},
                          [](const std::string_view s1, const std::string_view s2)
                          {
                              return s1.size() < s2.size();
                          }) << "\"\n";
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 281C++98T was required to be CopyConstructible for overloads (1,2)not required
LWG 2239C++98C++111. T was required to be LessThanComparable for overloads (2) (C++98) and (4) (C++11)2. the complexity requirements were missing1. not required2. added the requirements

# See also