xref: /llvm-project/libcxx/test/std/containers/sequences/array/compare.verify.cpp (revision d07fdf9779f7dead2828cfb18bafbd9a2c085920)
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 // <array>
10 
11 // template <class T, size_t N>
12 //   bool operator==(const array<T,N>& x, const array<T,N>& y);    // constexpr in C++20
13 // template <class T, size_t N>
14 //   bool operator!=(const array<T,N>& x, const array<T,N>& y);    // removed in C++20
15 // template <class T, size_t N>
16 //   bool operator<(const array<T,N>& x, const array<T,N>& y);     // removed in C++20
17 // template <class T, size_t N>
18 //   bool operator>(const array<T,N>& x, const array<T,N>& y);     // removed in C++20
19 // template <class T, size_t N>
20 //   bool operator<=(const array<T,N>& x, const array<T,N>& y);    // removed in C++20
21 // template <class T, size_t N>
22 //   bool operator>=(const array<T,N>& x, const array<T,N>& y);    // removed in C++20
23 
24 #include <array>
25 
26 #include "test_macros.h"
27 
28 template <int>
29 struct NoCompare {};
30 
31 int main(int, char**) {
32   {
33     typedef NoCompare<0> T;
34     typedef std::array<T, 3> C;
35     C c1 = {{}};
36     // expected-error@*:* 2 {{invalid operands to binary expression}}
37     TEST_IGNORE_NODISCARD(c1 == c1);
38     TEST_IGNORE_NODISCARD(c1 < c1);
39   }
40   {
41     typedef NoCompare<1> T;
42     typedef std::array<T, 3> C;
43     C c1 = {{}};
44     // expected-error@*:* 2 {{invalid operands to binary expression}}
45     TEST_IGNORE_NODISCARD(c1 != c1);
46     TEST_IGNORE_NODISCARD(c1 > c1);
47   }
48   {
49     typedef NoCompare<2> T;
50     typedef std::array<T, 0> C;
51     C c1 = {{}};
52     // expected-error@*:* 2 {{invalid operands to binary expression}}
53     TEST_IGNORE_NODISCARD(c1 == c1);
54     TEST_IGNORE_NODISCARD(c1 < c1);
55   }
56 
57   return 0;
58 }
59