]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / array / comparison_operators / constexpr.cc
1 // { dg-do compile { target c++20 } }
2 // { dg-add-options no_pch }
3
4 // Copyright (C) 2019-2024 Free Software Foundation, Inc.
5 //
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 3, or (at your option)
10 // any later version.
11 //
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
20
21 #include <array>
22
23 #ifndef __cpp_lib_array_constexpr
24 # error "Feature test macro for array constexpr is missing in <array>"
25 #elif __cpp_lib_array_constexpr < 201806L
26 # error "Feature test macro for array constexpr has wrong value in <array>"
27 #endif
28
29 constexpr std::array<int, 3> a1{{1, 2, 3}};
30 constexpr std::array<int, 3> a2{{4, 5, 6}};
31 constexpr std::array<int, 3> a3{{1, 2, 4}};
32 constexpr std::array<int, 3> a4{{1, 3, 3}};
33
34 static_assert(a1 == a1);
35 static_assert(a1 != a2);
36 static_assert(a1 < a3);
37 static_assert(a4 > a1);
38 static_assert(a1 <= a3);
39 static_assert(a4 >= a1);
40 static_assert(std::is_eq(a1 <=> a1));
41 static_assert(std::is_neq(a1 <=> a2));
42 static_assert(std::is_lt(a1 <=> a3));
43 static_assert(std::is_gt(a4 <=> a1));
44
45 constexpr std::array<unsigned char, 3> a5{{1, 2, 3}};
46 constexpr std::array<unsigned char, 3> a6{{4, 5, 6}};
47 constexpr std::array<unsigned char, 3> a7{{1, 2, 4}};
48 constexpr std::array<unsigned char, 3> a8{{1, 3, 3}};
49
50 static_assert(a5 == a5);
51 static_assert(a5 != a6);
52 static_assert(a5 < a7);
53 static_assert(a8 > a5);
54 static_assert(a5 <= a7);
55 static_assert(a8 >= a5);
56 static_assert(std::is_eq(a5 <=> a5));
57 static_assert(std::is_neq(a5 <=> a6));
58 static_assert(std::is_lt(a5 <=> a7));
59 static_assert(std::is_gt(a8 <=> a5));