1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <algorithm>
11
12// template<LessThanComparable T>
13//   const T&
14//   max(const T& a, const T& b);
15
16#include <algorithm>
17#include <cassert>
18
19#include "test_macros.h"
20
21template <class T>
22void
23test(const T& a, const T& b, const T& x)
24{
25    assert(&std::max(a, b) == &x);
26}
27
28int main()
29{
30    {
31    int x = 0;
32    int y = 0;
33    test(x, y, x);
34    test(y, x, y);
35    }
36    {
37    int x = 0;
38    int y = 1;
39    test(x, y, y);
40    test(y, x, y);
41    }
42    {
43    int x = 1;
44    int y = 0;
45    test(x, y, x);
46    test(y, x, x);
47    }
48#if TEST_STD_VER >= 14
49    {
50    constexpr int x = 1;
51    constexpr int y = 0;
52    static_assert(std::max(x, y) == x, "" );
53    static_assert(std::max(y, x) == x, "" );
54    }
55#endif
56}
57