1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // <algorithm>
10 
11 // template<LessThanComparable T>
12 //   const T&
13 //   min(const T& a, const T& b);
14 
15 #include <algorithm>
16 #include <cassert>
17 
18 #include "test_macros.h"
19 
20 template <class T>
21 void
test(const T & a,const T & b,const T & x)22 test(const T& a, const T& b, const T& x)
23 {
24     assert(&std::min(a, b) == &x);
25 }
26 
main(int,char **)27 int main(int, char**)
28 {
29     {
30     int x = 0;
31     int y = 0;
32     test(x, y, x);
33     test(y, x, y);
34     }
35     {
36     int x = 0;
37     int y = 1;
38     test(x, y, x);
39     test(y, x, x);
40     }
41     {
42     int x = 1;
43     int y = 0;
44     test(x, y, y);
45     test(y, x, y);
46     }
47 #if TEST_STD_VER >= 14
48     {
49     constexpr int x = 1;
50     constexpr int y = 0;
51     static_assert(std::min(x, y) == y, "" );
52     static_assert(std::min(y, x) == y, "" );
53     }
54 #endif
55 
56   return 0;
57 }
58