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
28template <int>
29struct NoCompare {};
30
31#if TEST_STD_VER >= 14 && TEST_STD_VER <= 17
32// expected-error@*:* 3 {{no matching function for call to object of type 'std::__less<void, void>'}}
33#endif
34
35int main(int, char**) {
36 {
37 typedef NoCompare<0> T;
38 typedef std::array<T, 3> C;
39 C c1 = {._M_elems: {}};
40 // expected-error@*:* 2 {{invalid operands to binary expression}}
41 TEST_IGNORE_NODISCARD(c1 == c1);
42 TEST_IGNORE_NODISCARD(c1 < c1);
43 }
44 {
45 typedef NoCompare<1> T;
46 typedef std::array<T, 3> C;
47 C c1 = {._M_elems: {}};
48 // expected-error@*:* 2 {{invalid operands to binary expression}}
49 TEST_IGNORE_NODISCARD(c1 != c1);
50 TEST_IGNORE_NODISCARD(c1 > c1);
51 }
52 {
53 typedef NoCompare<2> T;
54 typedef std::array<T, 0> C;
55 C c1 = {._M_elems: {}};
56 // expected-error@*:* 2 {{invalid operands to binary expression}}
57 TEST_IGNORE_NODISCARD(c1 == c1);
58 TEST_IGNORE_NODISCARD(c1 < c1);
59 }
60
61 return 0;
62}
63

source code of libcxx/test/std/containers/sequences/array/compare.verify.cpp