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 | |