145
|
1 // Test for reversed candidates.
|
|
2 // { dg-do run { target c++2a } }
|
|
3
|
|
4 #include <compare>
|
|
5
|
|
6 struct D
|
|
7 {
|
|
8 int i;
|
|
9 auto operator<=>(int x) const { return i<=>x; }
|
|
10 bool operator== (int x) const { return i==x; }
|
|
11 };
|
|
12
|
|
13 #define assert(X) do { if (!(X)) __builtin_abort(); } while (0)
|
|
14
|
|
15 int main()
|
|
16 {
|
|
17 D d{42};
|
|
18 int d1 = 42;
|
|
19 int d2 = 24;
|
|
20
|
|
21 assert (is_eq (d <=> d1));
|
|
22 assert (is_eq (d1 <=> d));
|
|
23 assert (is_lteq (d <=> d1));
|
|
24 assert (is_lteq (d1 <=> d));
|
|
25 assert (is_gteq (d <=> d1));
|
|
26 assert (is_gteq (d1 <=> d));
|
|
27 assert (is_lt (d2 <=> d));
|
|
28 assert (is_lteq (d2 <=> d));
|
|
29 assert (is_gt (d <=> d2));
|
|
30 assert (is_gteq (d <=> d2));
|
|
31
|
|
32 assert (d == d1);
|
|
33 assert (d1 == d);
|
|
34 assert (!(d2 == d));
|
|
35 assert (!(d == d2));
|
|
36 assert (d != d2);
|
|
37 assert (d2 != d);
|
|
38 assert (!(d != d1));
|
|
39 assert (!(d1 != d));
|
|
40
|
|
41 assert (d2 < d);
|
|
42 assert (d2 <= d);
|
|
43 assert (d1 <= d);
|
|
44 assert (d > d2);
|
|
45 assert (d >= d2);
|
|
46 assert (d >= d1);
|
|
47 assert (d <= d1);
|
|
48 }
|