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 | // UNSUPPORTED: c++03, c++11, c++14, c++17 |
10 | |
11 | // template<class T> |
12 | // concept totally_ordered_with; |
13 | |
14 | #include <concepts> |
15 | |
16 | #include <array> |
17 | #include <cstddef> |
18 | #include <deque> |
19 | #include <forward_list> |
20 | #include <list> |
21 | #include <map> |
22 | #include <optional> |
23 | #include <vector> |
24 | |
25 | #include "compare_types.h" |
26 | #include "test_macros.h" |
27 | |
28 | template <class T, class U> |
29 | constexpr bool check_totally_ordered_with() noexcept { |
30 | constexpr bool result = std::totally_ordered_with<T, U>; |
31 | static_assert(std::totally_ordered_with<U, T> == result); |
32 | static_assert(std::totally_ordered_with<T, U const> == result); |
33 | static_assert(std::totally_ordered_with<T const, U const> == result); |
34 | static_assert(std::totally_ordered_with<T, U const&> == result); |
35 | static_assert(std::totally_ordered_with<T const, U const&> == result); |
36 | static_assert(std::totally_ordered_with<T&, U const> == result); |
37 | static_assert(std::totally_ordered_with<T const&, U const> == result); |
38 | static_assert(std::totally_ordered_with<T&, U const&> == result); |
39 | static_assert(std::totally_ordered_with<T const&, U const&> == result); |
40 | static_assert(std::totally_ordered_with<T, U const&&> == result); |
41 | static_assert(std::totally_ordered_with<T const, U const&&> == result); |
42 | static_assert(std::totally_ordered_with<T&, U const&&> == result); |
43 | static_assert(std::totally_ordered_with<T const&, U const&&> == result); |
44 | static_assert(std::totally_ordered_with<T&&, U const> == result); |
45 | static_assert(std::totally_ordered_with<T const&&, U const> == result); |
46 | static_assert(std::totally_ordered_with<T&&, U const&> == result); |
47 | static_assert(std::totally_ordered_with<T const&&, U const&> == result); |
48 | static_assert(std::totally_ordered_with<T&&, U const&&> == result); |
49 | static_assert(std::totally_ordered_with<T const&&, U const&&> == result); |
50 | return result; |
51 | } |
52 | |
53 | namespace fundamentals { |
54 | static_assert(check_totally_ordered_with<int, int>()); |
55 | static_assert(check_totally_ordered_with<int, bool>()); |
56 | static_assert(check_totally_ordered_with<int, char>()); |
57 | static_assert(check_totally_ordered_with<int, wchar_t>()); |
58 | static_assert(check_totally_ordered_with<int, double>()); |
59 | static_assert(!check_totally_ordered_with<int, int*>()); |
60 | static_assert(!check_totally_ordered_with<int, int[5]>()); |
61 | static_assert(!check_totally_ordered_with<int, int (*)()>()); |
62 | static_assert(!check_totally_ordered_with<int, int (&)()>()); |
63 | |
64 | struct S {}; |
65 | static_assert(!check_totally_ordered_with<int, int S::*>()); |
66 | static_assert(!check_totally_ordered_with<int, int (S::*)()>()); |
67 | static_assert(!check_totally_ordered_with<int, int (S::*)() noexcept>()); |
68 | static_assert(!check_totally_ordered_with<int, int (S::*)() const>()); |
69 | static_assert(!check_totally_ordered_with<int, int (S::*)() const noexcept>()); |
70 | static_assert(!check_totally_ordered_with<int, int (S::*)() volatile>()); |
71 | static_assert(!check_totally_ordered_with<int, int (S::*)() volatile noexcept>()); |
72 | static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile>()); |
73 | static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile noexcept>()); |
74 | static_assert(!check_totally_ordered_with<int, int (S::*)() &>()); |
75 | static_assert(!check_totally_ordered_with<int, int (S::*)() & noexcept>()); |
76 | static_assert(!check_totally_ordered_with<int, int (S::*)() const&>()); |
77 | static_assert(!check_totally_ordered_with<int, int (S::*)() const & noexcept>()); |
78 | static_assert(!check_totally_ordered_with<int, int (S::*)() volatile&>()); |
79 | static_assert(!check_totally_ordered_with<int, int (S::*)() volatile & noexcept>()); |
80 | static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile&>()); |
81 | static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile & noexcept>()); |
82 | static_assert(!check_totally_ordered_with<int, int (S::*)() &&>()); |
83 | static_assert(!check_totally_ordered_with < int, int (S::*)() && noexcept > ()); |
84 | static_assert(!check_totally_ordered_with<int, int (S::*)() const&&>()); |
85 | static_assert(!check_totally_ordered_with < int, int (S::*)() const&& noexcept > ()); |
86 | static_assert(!check_totally_ordered_with<int, int (S::*)() volatile&&>()); |
87 | static_assert(!check_totally_ordered_with < int, int (S::*)() volatile&& noexcept > ()); |
88 | static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile&&>()); |
89 | static_assert(!check_totally_ordered_with < int, int (S::*)() const volatile&& noexcept > ()); |
90 | |
91 | static_assert(check_totally_ordered_with<int*, int*>()); |
92 | // Array comparisons are ill-formed in C++26, but Clang doesn't implement this yet. |
93 | #if TEST_STD_VER <= 23 || defined(TEST_COMPILER_CLANG) |
94 | static_assert(check_totally_ordered_with<int*, int[5]>()); |
95 | #else |
96 | static_assert(!check_totally_ordered_with<int*, int[5]>()); |
97 | #endif |
98 | static_assert(!check_totally_ordered_with<int*, int (*)()>()); |
99 | static_assert(!check_totally_ordered_with<int*, int (&)()>()); |
100 | static_assert(!check_totally_ordered_with<int*, int (S::*)()>()); |
101 | static_assert(!check_totally_ordered_with<int*, int (S::*)() noexcept>()); |
102 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const>()); |
103 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const noexcept>()); |
104 | static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile>()); |
105 | static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile noexcept>()); |
106 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile>()); |
107 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile noexcept>()); |
108 | static_assert(!check_totally_ordered_with<int*, int (S::*)() &>()); |
109 | static_assert(!check_totally_ordered_with<int*, int (S::*)() & noexcept>()); |
110 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const&>()); |
111 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const & noexcept>()); |
112 | static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile&>()); |
113 | static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile & noexcept>()); |
114 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile&>()); |
115 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile & noexcept>()); |
116 | static_assert(!check_totally_ordered_with<int*, int (S::*)() &&>()); |
117 | static_assert(!check_totally_ordered_with < int*, int (S::*)() && noexcept > ()); |
118 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const&&>()); |
119 | static_assert(!check_totally_ordered_with < int*, int (S::*)() const&& noexcept > ()); |
120 | static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile&&>()); |
121 | static_assert(!check_totally_ordered_with < int*, int (S::*)() volatile&& noexcept > ()); |
122 | static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile&&>()); |
123 | static_assert(!check_totally_ordered_with < int*, int (S::*)() const volatile&& noexcept > ()); |
124 | |
125 | // Array comparisons are ill-formed in C++26, but Clang doesn't implement this yet. |
126 | #if TEST_STD_VER <= 23 || defined(TEST_COMPILER_CLANG) |
127 | static_assert(check_totally_ordered_with<int[5], int[5]>()); |
128 | #else |
129 | static_assert(!check_totally_ordered_with<int[5], int[5]>()); |
130 | #endif |
131 | static_assert(!check_totally_ordered_with<int[5], int (*)()>()); |
132 | static_assert(!check_totally_ordered_with<int[5], int (&)()>()); |
133 | static_assert(!check_totally_ordered_with<int[5], int (S::*)()>()); |
134 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() noexcept>()); |
135 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const>()); |
136 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const noexcept>()); |
137 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile>()); |
138 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile noexcept>()); |
139 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const volatile>()); |
140 | static_assert(!check_totally_ordered_with< int[5], int (S::*)() const volatile noexcept>()); |
141 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() &>()); |
142 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() & noexcept>()); |
143 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const&>()); |
144 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const & noexcept>()); |
145 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile&>()); |
146 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile & noexcept>()); |
147 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const volatile&>()); |
148 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const volatile & noexcept>()); |
149 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() &&>()); |
150 | static_assert(!check_totally_ordered_with < int[5], int (S::*)() && noexcept > ()); |
151 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const&&>()); |
152 | static_assert(!check_totally_ordered_with < int[5], int (S::*)() const&& noexcept > ()); |
153 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile&&>()); |
154 | static_assert(!check_totally_ordered_with < int[5], int (S::*)() volatile&& noexcept > ()); |
155 | static_assert(!check_totally_ordered_with<int[5], int (S::*)() const volatile&&>()); |
156 | static_assert(!check_totally_ordered_with < int[5], int (S::*)() const volatile&& noexcept > ()); |
157 | |
158 | static_assert(check_totally_ordered_with<int (*)(), int (*)()>()); |
159 | static_assert(check_totally_ordered_with<int (*)(), int (&)()>()); |
160 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)()>()); |
161 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() noexcept>()); |
162 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const>()); |
163 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const noexcept>()); |
164 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile>()); |
165 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile noexcept>()); |
166 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const volatile>()); |
167 | static_assert(!check_totally_ordered_with< int (*)(), int (S::*)() const volatile noexcept>()); |
168 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() &>()); |
169 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() & noexcept>()); |
170 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const&>()); |
171 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const & noexcept>()); |
172 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile&>()); |
173 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile & noexcept>()); |
174 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const volatile&>()); |
175 | static_assert(!check_totally_ordered_with< int (*)(), int (S::*)() const volatile & noexcept>()); |
176 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() &&>()); |
177 | static_assert(!check_totally_ordered_with < int (*)(), int (S::*)() && noexcept > ()); |
178 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const&&>()); |
179 | static_assert(!check_totally_ordered_with < int (*)(), int (S::*)() const&& noexcept > ()); |
180 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile&&>()); |
181 | static_assert(!check_totally_ordered_with < int (*)(), int (S::*)() volatile&& noexcept > ()); |
182 | static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const volatile&&>()); |
183 | static_assert(!check_totally_ordered_with < int (*)(), int (S::*)() const volatile&& noexcept > ()); |
184 | |
185 | static_assert(check_totally_ordered_with<int (&)(), int (&)()>()); |
186 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)()>()); |
187 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() noexcept>()); |
188 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const>()); |
189 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const noexcept>()); |
190 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile>()); |
191 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile noexcept>()); |
192 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const volatile>()); |
193 | static_assert(!check_totally_ordered_with< int (&)(), int (S::*)() const volatile noexcept>()); |
194 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() &>()); |
195 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() & noexcept>()); |
196 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const&>()); |
197 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const & noexcept>()); |
198 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile&>()); |
199 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile & noexcept>()); |
200 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const volatile&>()); |
201 | static_assert(!check_totally_ordered_with< int (&)(), int (S::*)() const volatile & noexcept>()); |
202 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() &&>()); |
203 | static_assert(!check_totally_ordered_with < int (&)(), int (S::*)() && noexcept > ()); |
204 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const&&>()); |
205 | static_assert(!check_totally_ordered_with < int (&)(), int (S::*)() const&& noexcept > ()); |
206 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile&&>()); |
207 | static_assert(!check_totally_ordered_with < int (&)(), int (S::*)() volatile&& noexcept > ()); |
208 | static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const volatile&&>()); |
209 | static_assert(!check_totally_ordered_with < int (&)(), int (S::*)() const volatile&& noexcept > ()); |
210 | |
211 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)()>()); |
212 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() noexcept>()); |
213 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const>()); |
214 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const noexcept>()); |
215 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() volatile>()); |
216 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() volatile noexcept>()); |
217 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const volatile>()); |
218 | static_assert(!check_totally_ordered_with< int (S::*)(), int (S::*)() const volatile noexcept>()); |
219 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() &>()); |
220 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() & noexcept>()); |
221 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const&>()); |
222 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const & noexcept>()); |
223 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() volatile&>()); |
224 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() volatile & noexcept>()); |
225 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const volatile&>()); |
226 | static_assert(!check_totally_ordered_with< int (S::*)(), int (S::*)() const volatile & noexcept>()); |
227 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() &&>()); |
228 | static_assert(!check_totally_ordered_with < int(S::*)(), int (S::*)() && noexcept > ()); |
229 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const&&>()); |
230 | static_assert(!check_totally_ordered_with < int(S::*)(), int (S::*)() const&& noexcept > ()); |
231 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() volatile&&>()); |
232 | static_assert(!check_totally_ordered_with < int(S::*)(), int (S::*)() volatile&& noexcept > ()); |
233 | static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const volatile&&>()); |
234 | static_assert(!check_totally_ordered_with < int(S::*)(), int (S::*)() const volatile&& noexcept > ()); |
235 | |
236 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() noexcept>()); |
237 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const>()); |
238 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const noexcept>()); |
239 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() volatile>()); |
240 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() volatile noexcept>()); |
241 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const volatile>()); |
242 | static_assert(!check_totally_ordered_with< int (S::*)() noexcept, int (S::*)() const volatile noexcept>()); |
243 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() &>()); |
244 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() & noexcept>()); |
245 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const&>()); |
246 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const & noexcept>()); |
247 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() volatile&>()); |
248 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() volatile & noexcept>()); |
249 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const volatile&>()); |
250 | static_assert(!check_totally_ordered_with< int (S::*)() noexcept, int (S::*)() const volatile & noexcept>()); |
251 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() &&>()); |
252 | static_assert(!check_totally_ordered_with < int(S::*)() noexcept, int (S::*)() && noexcept > ()); |
253 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const&&>()); |
254 | static_assert(!check_totally_ordered_with < int(S::*)() noexcept, int (S::*)() const&& noexcept > ()); |
255 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() volatile&&>()); |
256 | static_assert(!check_totally_ordered_with < int(S::*)() noexcept, int (S::*)() volatile&& noexcept > ()); |
257 | static_assert(!check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const volatile&&>()); |
258 | static_assert(!check_totally_ordered_with < int(S::*)() noexcept, int (S::*)() const volatile&& noexcept > ()); |
259 | |
260 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const>()); |
261 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const noexcept>()); |
262 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile>()); |
263 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile noexcept>()); |
264 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const volatile>()); |
265 | static_assert(!check_totally_ordered_with< int (S::*)() const, int (S::*)() const volatile noexcept>()); |
266 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() &>()); |
267 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() & noexcept>()); |
268 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const&>()); |
269 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const & noexcept>()); |
270 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile&>()); |
271 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile & noexcept>()); |
272 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const volatile&>()); |
273 | static_assert(!check_totally_ordered_with< int (S::*)() const, int (S::*)() const volatile & noexcept>()); |
274 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() &&>()); |
275 | static_assert(!check_totally_ordered_with < int(S::*)() const, int (S::*)() && noexcept > ()); |
276 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const&&>()); |
277 | static_assert(!check_totally_ordered_with < int(S::*)() const, int (S::*)() const&& noexcept > ()); |
278 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile&&>()); |
279 | static_assert(!check_totally_ordered_with < int(S::*)() const, int (S::*)() volatile&& noexcept > ()); |
280 | static_assert(!check_totally_ordered_with<int (S::*)() const, int (S::*)() const volatile&&>()); |
281 | static_assert(!check_totally_ordered_with < int(S::*)() const, int (S::*)() const volatile&& noexcept > ()); |
282 | |
283 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const noexcept>()); |
284 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() volatile>()); |
285 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() volatile noexcept>()); |
286 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const volatile>()); |
287 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const volatile noexcept>()); |
288 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() &>()); |
289 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() & noexcept>()); |
290 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const&>()); |
291 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const & noexcept>()); |
292 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() volatile&>()); |
293 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() volatile & noexcept>()); |
294 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const volatile&>()); |
295 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const volatile & noexcept>()); |
296 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() &&>()); |
297 | static_assert(!check_totally_ordered_with < int(S::*)() const noexcept, int (S::*)() && noexcept > ()); |
298 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const&&>()); |
299 | static_assert(!check_totally_ordered_with < int(S::*)() const noexcept, int (S::*)() const&& noexcept > ()); |
300 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() volatile&&>()); |
301 | static_assert(!check_totally_ordered_with < int(S::*)() const noexcept, int (S::*)() volatile&& noexcept > ()); |
302 | static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() const volatile&&>()); |
303 | static_assert(!check_totally_ordered_with < int(S::*)() const noexcept, int (S::*)() const volatile&& noexcept > ()); |
304 | |
305 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() volatile>()); |
306 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() volatile noexcept>()); |
307 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const volatile>()); |
308 | static_assert(!check_totally_ordered_with< int (S::*)() volatile, int (S::*)() const volatile noexcept>()); |
309 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() &>()); |
310 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() & noexcept>()); |
311 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const&>()); |
312 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const & noexcept>()); |
313 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() volatile&>()); |
314 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() volatile & noexcept>()); |
315 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const volatile&>()); |
316 | static_assert(!check_totally_ordered_with< int (S::*)() volatile, int (S::*)() const volatile & noexcept>()); |
317 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() &&>()); |
318 | static_assert(!check_totally_ordered_with < int(S::*)() volatile, int (S::*)() && noexcept > ()); |
319 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const&&>()); |
320 | static_assert(!check_totally_ordered_with < int(S::*)() volatile, int (S::*)() const&& noexcept > ()); |
321 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() volatile&&>()); |
322 | static_assert(!check_totally_ordered_with < int(S::*)() volatile, int (S::*)() volatile&& noexcept > ()); |
323 | static_assert(!check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const volatile&&>()); |
324 | static_assert(!check_totally_ordered_with < int(S::*)() volatile, int (S::*)() const volatile&& noexcept > ()); |
325 | |
326 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() volatile noexcept>()); |
327 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const volatile>()); |
328 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const volatile noexcept>()); |
329 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() &>()); |
330 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() & noexcept>()); |
331 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const&>()); |
332 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const & noexcept>()); |
333 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() volatile&>()); |
334 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() volatile & noexcept>()); |
335 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const volatile&>()); |
336 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const volatile & noexcept>()); |
337 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() &&>()); |
338 | static_assert(!check_totally_ordered_with < int(S::*)() volatile noexcept, int (S::*)() && noexcept > ()); |
339 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const&&>()); |
340 | static_assert(!check_totally_ordered_with < int(S::*)() volatile noexcept, int (S::*)() const&& noexcept > ()); |
341 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() volatile&&>()); |
342 | static_assert(!check_totally_ordered_with < int(S::*)() volatile noexcept, int (S::*)() volatile&& noexcept > ()); |
343 | static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, int (S::*)() const volatile&&>()); |
344 | static_assert(!check_totally_ordered_with < int(S::*)() volatile noexcept, int (S::*)() const volatile&& noexcept > ()); |
345 | |
346 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const volatile>()); |
347 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const volatile noexcept>()); |
348 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() &>()); |
349 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() & noexcept>()); |
350 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const&>()); |
351 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const & noexcept>()); |
352 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() volatile&>()); |
353 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() volatile & noexcept>()); |
354 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const volatile&>()); |
355 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const volatile & noexcept>()); |
356 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() &&>()); |
357 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile, int (S::*)() && noexcept > ()); |
358 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const&&>()); |
359 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile, int (S::*)() const&& noexcept > ()); |
360 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() volatile&&>()); |
361 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile, int (S::*)() volatile&& noexcept > ()); |
362 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() const volatile&&>()); |
363 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile, int (S::*)() const volatile&& noexcept > ()); |
364 | |
365 | static_assert( |
366 | !check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const volatile noexcept>()); |
367 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() &>()); |
368 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() & noexcept>()); |
369 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const&>()); |
370 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const & noexcept>()); |
371 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() volatile&>()); |
372 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() volatile & noexcept>()); |
373 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const volatile&>()); |
374 | static_assert( |
375 | !check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const volatile & noexcept>()); |
376 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() &&>()); |
377 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile noexcept, int (S::*)() && noexcept > ()); |
378 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const&&>()); |
379 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile noexcept, int (S::*)() const&& noexcept > ()); |
380 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() volatile&&>()); |
381 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile noexcept, int (S::*)() volatile&& noexcept > ()); |
382 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, int (S::*)() const volatile&&>()); |
383 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile noexcept, |
384 | int (S::*)() const volatile&& noexcept > ()); |
385 | |
386 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() &>()); |
387 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() & noexcept>()); |
388 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() const&>()); |
389 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() const & noexcept>()); |
390 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() volatile&>()); |
391 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() volatile & noexcept>()); |
392 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() const volatile&>()); |
393 | static_assert(!check_totally_ordered_with< int (S::*)() &, int (S::*)() const volatile & noexcept>()); |
394 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() &&>()); |
395 | static_assert(!check_totally_ordered_with < int(S::*)() &, int (S::*)() && noexcept > ()); |
396 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() const&&>()); |
397 | static_assert(!check_totally_ordered_with < int(S::*)() &, int (S::*)() const&& noexcept > ()); |
398 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() volatile&&>()); |
399 | static_assert(!check_totally_ordered_with < int(S::*)() &, int (S::*)() volatile&& noexcept > ()); |
400 | static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() const volatile&&>()); |
401 | static_assert(!check_totally_ordered_with < int(S::*)() &, int (S::*)() const volatile&& noexcept > ()); |
402 | |
403 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() & noexcept>()); |
404 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() const&>()); |
405 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() const & noexcept>()); |
406 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() volatile&>()); |
407 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() volatile & noexcept>()); |
408 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() const volatile&>()); |
409 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() const volatile & noexcept>()); |
410 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() &&>()); |
411 | static_assert(!check_totally_ordered_with < int(S::*)() & noexcept, int (S::*)() && noexcept > ()); |
412 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() const&&>()); |
413 | static_assert(!check_totally_ordered_with < int(S::*)() & noexcept, int (S::*)() const&& noexcept > ()); |
414 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() volatile&&>()); |
415 | static_assert(!check_totally_ordered_with < int(S::*)() & noexcept, int (S::*)() volatile&& noexcept > ()); |
416 | static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() const volatile&&>()); |
417 | static_assert(!check_totally_ordered_with < int(S::*)() & noexcept, int (S::*)() const volatile&& noexcept > ()); |
418 | |
419 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() const&>()); |
420 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() const & noexcept>()); |
421 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() volatile&>()); |
422 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() volatile & noexcept>()); |
423 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() const volatile&>()); |
424 | static_assert(!check_totally_ordered_with< int (S::*)() const&, int (S::*)() const volatile & noexcept>()); |
425 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() &&>()); |
426 | static_assert(!check_totally_ordered_with < int(S::*)() const&, int (S::*)() && noexcept > ()); |
427 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() const&&>()); |
428 | static_assert(!check_totally_ordered_with < int(S::*)() const&, int (S::*)() const&& noexcept > ()); |
429 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() volatile&&>()); |
430 | static_assert(!check_totally_ordered_with < int(S::*)() const&, int (S::*)() volatile&& noexcept > ()); |
431 | static_assert(!check_totally_ordered_with<int (S::*)() const&, int (S::*)() const volatile&&>()); |
432 | static_assert(!check_totally_ordered_with < int(S::*)() const&, int (S::*)() const volatile&& noexcept > ()); |
433 | |
434 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() const & noexcept>()); |
435 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() volatile&>()); |
436 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() volatile & noexcept>()); |
437 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() const volatile&>()); |
438 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() const volatile & noexcept>()); |
439 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() &&>()); |
440 | static_assert(!check_totally_ordered_with < int(S::*)() const& noexcept, int (S::*)() && noexcept > ()); |
441 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() const&&>()); |
442 | static_assert(!check_totally_ordered_with < int(S::*)() const& noexcept, int (S::*)() const&& noexcept > ()); |
443 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() volatile&&>()); |
444 | static_assert(!check_totally_ordered_with < int(S::*)() const& noexcept, int (S::*)() volatile&& noexcept > ()); |
445 | static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, int (S::*)() const volatile&&>()); |
446 | static_assert(!check_totally_ordered_with < int(S::*)() const& noexcept, int (S::*)() const volatile&& noexcept > ()); |
447 | |
448 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() volatile&>()); |
449 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() volatile & noexcept>()); |
450 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() const volatile&>()); |
451 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() const volatile & noexcept>()); |
452 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() &&>()); |
453 | static_assert(!check_totally_ordered_with < int(S::*)() volatile&, int (S::*)() && noexcept > ()); |
454 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() const&&>()); |
455 | static_assert(!check_totally_ordered_with < int(S::*)() volatile&, int (S::*)() const&& noexcept > ()); |
456 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() volatile&&>()); |
457 | static_assert(!check_totally_ordered_with < int(S::*)() volatile&, int (S::*)() volatile&& noexcept > ()); |
458 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() const volatile&&>()); |
459 | static_assert(!check_totally_ordered_with < int(S::*)() volatile&, int (S::*)() const volatile&& noexcept > ()); |
460 | |
461 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() volatile & noexcept>()); |
462 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() const volatile&>()); |
463 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() const volatile & noexcept>()); |
464 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() &&>()); |
465 | static_assert(!check_totally_ordered_with < int(S::*)() volatile & noexcept, int (S::*)() && noexcept > ()); |
466 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() const&&>()); |
467 | static_assert(!check_totally_ordered_with < int(S::*)() volatile & noexcept, int (S::*)() const&& noexcept > ()); |
468 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() volatile&&>()); |
469 | static_assert(!check_totally_ordered_with < int(S::*)() volatile & noexcept, int (S::*)() volatile&& noexcept > ()); |
470 | static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, int (S::*)() const volatile&&>()); |
471 | static_assert(!check_totally_ordered_with < int(S::*)() volatile & noexcept, |
472 | int (S::*)() const volatile&& noexcept > ()); |
473 | |
474 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, int (S::*)() const volatile&>()); |
475 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, int (S::*)() const volatile & noexcept>()); |
476 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, int (S::*)() &&>()); |
477 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile&, int (S::*)() && noexcept > ()); |
478 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, int (S::*)() const&&>()); |
479 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile&, int (S::*)() const&& noexcept > ()); |
480 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, int (S::*)() volatile&&>()); |
481 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile&, int (S::*)() volatile&& noexcept > ()); |
482 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, int (S::*)() const volatile&&>()); |
483 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile&, int (S::*)() const volatile&& noexcept > ()); |
484 | |
485 | static_assert( |
486 | !check_totally_ordered_with<int (S::*)() const volatile & noexcept, int (S::*)() const volatile & noexcept>()); |
487 | static_assert(!check_totally_ordered_with< int (S::*)() const volatile & noexcept, int (S::*)() &&>()); |
488 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile& noexcept, int (S::*)() && noexcept > ()); |
489 | static_assert(!check_totally_ordered_with< int (S::*)() const volatile & noexcept, int (S::*)() const&&>()); |
490 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile& noexcept, int (S::*)() const&& noexcept > ()); |
491 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile & noexcept, int (S::*)() volatile&&>()); |
492 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile& noexcept, |
493 | int (S::*)() volatile&& noexcept > ()); |
494 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile & noexcept, int (S::*)() const volatile&&>()); |
495 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile& noexcept, |
496 | int (S::*)() const volatile&& noexcept > ()); |
497 | |
498 | static_assert(!check_totally_ordered_with<int (S::*)() &&, int (S::*)() &&>()); |
499 | static_assert(!check_totally_ordered_with < int(S::*)() &&, int (S::*)() && noexcept > ()); |
500 | static_assert(!check_totally_ordered_with<int (S::*)() &&, int (S::*)() const&&>()); |
501 | static_assert(!check_totally_ordered_with < int(S::*)() &&, int (S::*)() const&& noexcept > ()); |
502 | static_assert(!check_totally_ordered_with<int (S::*)() &&, int (S::*)() volatile&&>()); |
503 | static_assert(!check_totally_ordered_with < int(S::*)() &&, int (S::*)() volatile&& noexcept > ()); |
504 | static_assert(!check_totally_ordered_with<int (S::*)() &&, int (S::*)() const volatile&&>()); |
505 | static_assert(!check_totally_ordered_with < int(S::*)() &&, int (S::*)() const volatile&& noexcept > ()); |
506 | |
507 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() && noexcept > ()); |
508 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() const&& > ()); |
509 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() const&& noexcept > ()); |
510 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() volatile&& > ()); |
511 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() volatile&& noexcept > ()); |
512 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() const volatile&& > ()); |
513 | static_assert(!check_totally_ordered_with < int(S::*)() && noexcept, int (S::*)() const volatile&& noexcept > ()); |
514 | |
515 | static_assert(!check_totally_ordered_with<int (S::*)() const&&, int (S::*)() const&&>()); |
516 | static_assert(!check_totally_ordered_with < int(S::*)() const&&, int (S::*)() const&& noexcept > ()); |
517 | static_assert(!check_totally_ordered_with<int (S::*)() const&&, int (S::*)() volatile&&>()); |
518 | static_assert(!check_totally_ordered_with < int(S::*)() const&&, int (S::*)() volatile&& noexcept > ()); |
519 | static_assert(!check_totally_ordered_with<int (S::*)() const&&, int (S::*)() const volatile&&>()); |
520 | static_assert(!check_totally_ordered_with < int(S::*)() const&&, int (S::*)() const volatile&& noexcept > ()); |
521 | |
522 | static_assert(!check_totally_ordered_with < int(S::*)() const&& noexcept, int (S::*)() const&& noexcept > ()); |
523 | static_assert(!check_totally_ordered_with < int(S::*)() const&& noexcept, int (S::*)() volatile&& > ()); |
524 | static_assert(!check_totally_ordered_with < int(S::*)() const&& noexcept, int (S::*)() volatile&& noexcept > ()); |
525 | static_assert(!check_totally_ordered_with < int(S::*)() const&& noexcept, int (S::*)() const volatile&& > ()); |
526 | static_assert(!check_totally_ordered_with < int(S::*)() const&& noexcept, int (S::*)() const volatile&& noexcept > ()); |
527 | |
528 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&&, int (S::*)() volatile&&>()); |
529 | static_assert(!check_totally_ordered_with < int(S::*)() volatile&&, int (S::*)() volatile&& noexcept > ()); |
530 | static_assert(!check_totally_ordered_with<int (S::*)() volatile&&, int (S::*)() const volatile&&>()); |
531 | static_assert(!check_totally_ordered_with < int(S::*)() volatile&&, int (S::*)() const volatile&& noexcept > ()); |
532 | |
533 | static_assert(!check_totally_ordered_with < int(S::*)() volatile && noexcept, int (S::*)() volatile&& noexcept > ()); |
534 | static_assert(!check_totally_ordered_with < int(S::*)() volatile && noexcept, int (S::*)() const volatile&& > ()); |
535 | static_assert(!check_totally_ordered_with < int(S::*)() volatile && noexcept, |
536 | int (S::*)() const volatile&& noexcept > ()); |
537 | |
538 | static_assert(!check_totally_ordered_with<int (S::*)() const volatile&&, int (S::*)() const volatile&&>()); |
539 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile&&, int (S::*)() const volatile&& noexcept > ()); |
540 | static_assert(!check_totally_ordered_with < int(S::*)() const volatile&& noexcept, |
541 | int (S::*)() const volatile&& noexcept > ()); |
542 | |
543 | #if !defined(TEST_COMPILER_GCC) |
544 | static_assert(!check_totally_ordered_with<std::nullptr_t, int>()); |
545 | |
546 | static_assert(!check_totally_ordered_with<std::nullptr_t, int*>()); |
547 | static_assert(!check_totally_ordered_with<std::nullptr_t, int[]>()); |
548 | static_assert(!check_totally_ordered_with<std::nullptr_t, int[5]>()); |
549 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (*)()>()); |
550 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (&)()>()); |
551 | #endif |
552 | |
553 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)()>()); |
554 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() noexcept>()); |
555 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const>()); |
556 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const noexcept>()); |
557 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile>()); |
558 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile noexcept>()); |
559 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const volatile>()); |
560 | static_assert(!check_totally_ordered_with< std::nullptr_t, int (S::*)() const volatile noexcept>()); |
561 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() &>()); |
562 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() & noexcept>()); |
563 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const&>()); |
564 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const & noexcept>()); |
565 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile&>()); |
566 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile & noexcept>()); |
567 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const volatile&>()); |
568 | static_assert(!check_totally_ordered_with< std::nullptr_t, int (S::*)() const volatile & noexcept>()); |
569 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() &&>()); |
570 | static_assert(!check_totally_ordered_with < std::nullptr_t, int (S::*)() && noexcept > ()); |
571 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const&&>()); |
572 | static_assert(!check_totally_ordered_with < std::nullptr_t, int (S::*)() const&& noexcept > ()); |
573 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile&&>()); |
574 | static_assert(!check_totally_ordered_with < std::nullptr_t, int (S::*)() volatile&& noexcept > ()); |
575 | static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() const volatile&&>()); |
576 | static_assert(!check_totally_ordered_with < std::nullptr_t, int (S::*)() const volatile&& noexcept > ()); |
577 | |
578 | static_assert(!std::equality_comparable_with<void, int>); |
579 | static_assert(!std::equality_comparable_with<void, int*>); |
580 | static_assert(!std::equality_comparable_with<void, std::nullptr_t>); |
581 | static_assert(!std::equality_comparable_with<void, int[5]>); |
582 | static_assert(!std::equality_comparable_with<void, int (*)()>); |
583 | static_assert(!std::equality_comparable_with<void, int (&)()>); |
584 | static_assert(!std::equality_comparable_with<void, int S::*>); |
585 | static_assert(!std::equality_comparable_with<void, int (S::*)()>); |
586 | static_assert(!std::equality_comparable_with<void, int (S::*)() noexcept>); |
587 | static_assert(!std::equality_comparable_with<void, int (S::*)() const>); |
588 | static_assert(!std::equality_comparable_with<void, int (S::*)() const noexcept>); |
589 | static_assert(!std::equality_comparable_with<void, int (S::*)() volatile>); |
590 | static_assert(!std::equality_comparable_with<void, int (S::*)() volatile noexcept>); |
591 | static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile>); |
592 | static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile noexcept>); |
593 | static_assert(!std::equality_comparable_with<void, int (S::*)() &>); |
594 | static_assert(!std::equality_comparable_with<void, int (S::*)() & noexcept>); |
595 | static_assert(!std::equality_comparable_with<void, int (S::*)() const&>); |
596 | static_assert(!std::equality_comparable_with<void, int (S::*)() const & noexcept>); |
597 | static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&>); |
598 | static_assert(!std::equality_comparable_with<void, int (S::*)() volatile & noexcept>); |
599 | static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile&>); |
600 | static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile & noexcept>); |
601 | static_assert(!std::equality_comparable_with<void, int (S::*)() &&>); |
602 | static_assert(!std::equality_comparable_with < void, int (S::*)() && noexcept >); |
603 | static_assert(!std::equality_comparable_with<void, int (S::*)() const&&>); |
604 | static_assert(!std::equality_comparable_with < void, int (S::*)() const&& noexcept >); |
605 | static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&&>); |
606 | static_assert(!std::equality_comparable_with < void, int (S::*)() volatile&& noexcept >); |
607 | static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile&&>); |
608 | static_assert(!std::equality_comparable_with < void, int (S::*)() const volatile&& noexcept >); |
609 | } // namespace fundamentals |
610 | |
611 | namespace standard_types { |
612 | static_assert(check_totally_ordered_with<std::array<int, 10>, std::array<int, 10> >()); |
613 | static_assert(!check_totally_ordered_with<std::array<int, 10>, std::array<double, 10> >()); |
614 | static_assert(check_totally_ordered_with<std::deque<int>, std::deque<int> >()); |
615 | static_assert(!check_totally_ordered_with<std::deque<int>, std::vector<int> >()); |
616 | static_assert(check_totally_ordered_with<std::forward_list<int>, std::forward_list<int> >()); |
617 | static_assert(!check_totally_ordered_with<std::forward_list<int>, std::vector<int> >()); |
618 | static_assert(check_totally_ordered_with<std::list<int>, std::list<int> >()); |
619 | static_assert(!check_totally_ordered_with<std::list<int>, std::vector<int> >()); |
620 | |
621 | static_assert(check_totally_ordered_with<std::map<int, void*>, std::map<int, void*> >()); |
622 | static_assert(!check_totally_ordered_with<std::map<int, void*>, std::vector<int> >()); |
623 | static_assert(check_totally_ordered_with<std::optional<std::vector<int> >, std::optional<std::vector<int> > >()); |
624 | static_assert(check_totally_ordered_with<std::optional<std::vector<int> >, std::vector<int> >()); |
625 | static_assert(check_totally_ordered_with<std::vector<int>, std::vector<int> >()); |
626 | static_assert(!check_totally_ordered_with<std::vector<int>, int>()); |
627 | |
628 | struct A {}; |
629 | static_assert(!check_totally_ordered_with<std::optional<std::vector<A> >, std::optional<std::vector<A> > >()); |
630 | static_assert(!check_totally_ordered_with<std::optional<std::vector<A> >, std::vector<A> >()); |
631 | struct B {}; |
632 | static_assert(!check_totally_ordered_with<std::vector<A>, std::vector<B> >()); |
633 | static_assert(!check_totally_ordered_with<std::optional<A>, std::optional<B> >()); |
634 | } // namespace standard_types |
635 | |
636 | namespace types_fit_for_purpose { |
637 | static_assert(!check_totally_ordered_with<cxx20_member_eq, cxx20_member_eq>()); |
638 | static_assert(!check_totally_ordered_with<cxx20_friend_eq, cxx20_friend_eq>()); |
639 | static_assert(!check_totally_ordered_with<cxx20_member_eq, cxx20_friend_eq>()); |
640 | |
641 | static_assert(check_totally_ordered_with<member_three_way_comparable, member_three_way_comparable>()); |
642 | static_assert(check_totally_ordered_with<friend_three_way_comparable, friend_three_way_comparable>()); |
643 | static_assert(!check_totally_ordered_with<member_three_way_comparable, friend_three_way_comparable>()); |
644 | |
645 | static_assert(check_totally_ordered_with<explicit_operators, explicit_operators>()); |
646 | static_assert(!check_totally_ordered_with<equality_comparable_with_ec1, equality_comparable_with_ec1>()); |
647 | static_assert(check_totally_ordered_with<different_return_types, different_return_types>()); |
648 | static_assert(!check_totally_ordered_with<explicit_operators, equality_comparable_with_ec1>()); |
649 | static_assert(check_totally_ordered_with<explicit_operators, different_return_types>()); |
650 | |
651 | static_assert(!check_totally_ordered_with<one_way_eq, one_way_eq>()); |
652 | static_assert(std::common_reference_with<one_way_eq const&, explicit_operators const&> && |
653 | !check_totally_ordered_with<one_way_eq, explicit_operators>()); |
654 | |
655 | static_assert(!check_totally_ordered_with<one_way_ne, one_way_ne>()); |
656 | static_assert(std::common_reference_with<one_way_ne const&, explicit_operators const&> && |
657 | !check_totally_ordered_with<one_way_ne, explicit_operators>()); |
658 | |
659 | static_assert(check_totally_ordered_with<totally_ordered_with_others, partial_ordering_totally_ordered_with>()); |
660 | static_assert(check_totally_ordered_with<totally_ordered_with_others, weak_ordering_totally_ordered_with>()); |
661 | static_assert(check_totally_ordered_with<totally_ordered_with_others, strong_ordering_totally_ordered_with>()); |
662 | |
663 | static_assert(!check_totally_ordered_with<totally_ordered_with_others, eq_returns_explicit_bool>()); |
664 | static_assert(!check_totally_ordered_with<totally_ordered_with_others, ne_returns_explicit_bool>()); |
665 | static_assert(std::equality_comparable_with<totally_ordered_with_others, lt_returns_explicit_bool> && |
666 | !check_totally_ordered_with<totally_ordered_with_others, lt_returns_explicit_bool>()); |
667 | static_assert(std::equality_comparable_with<totally_ordered_with_others, gt_returns_explicit_bool> && |
668 | !check_totally_ordered_with<totally_ordered_with_others, gt_returns_explicit_bool>()); |
669 | static_assert(std::equality_comparable_with<totally_ordered_with_others, le_returns_explicit_bool> && |
670 | !check_totally_ordered_with<totally_ordered_with_others, le_returns_explicit_bool>()); |
671 | static_assert(std::equality_comparable_with<totally_ordered_with_others, ge_returns_explicit_bool> && |
672 | !check_totally_ordered_with<totally_ordered_with_others, ge_returns_explicit_bool>()); |
673 | static_assert(check_totally_ordered_with<totally_ordered_with_others, returns_true_type>()); |
674 | static_assert(check_totally_ordered_with<totally_ordered_with_others, returns_int_ptr>()); |
675 | |
676 | static_assert(std::totally_ordered<no_lt_not_totally_ordered_with> && |
677 | std::equality_comparable_with<totally_ordered_with_others, no_lt_not_totally_ordered_with> && |
678 | !check_totally_ordered_with<totally_ordered_with_others, no_lt_not_totally_ordered_with>()); |
679 | static_assert(std::totally_ordered<no_gt_not_totally_ordered_with> && |
680 | std::equality_comparable_with<totally_ordered_with_others, no_gt_not_totally_ordered_with> && |
681 | !check_totally_ordered_with<totally_ordered_with_others, no_gt_not_totally_ordered_with>()); |
682 | static_assert(std::totally_ordered<no_le_not_totally_ordered_with> && |
683 | std::equality_comparable_with<totally_ordered_with_others, no_le_not_totally_ordered_with> && |
684 | !check_totally_ordered_with<totally_ordered_with_others, no_le_not_totally_ordered_with>()); |
685 | static_assert(std::totally_ordered<no_ge_not_totally_ordered_with> && |
686 | std::equality_comparable_with<totally_ordered_with_others, no_ge_not_totally_ordered_with> && |
687 | !check_totally_ordered_with<totally_ordered_with_others, no_ge_not_totally_ordered_with>()); |
688 | } // namespace types_fit_for_purpose |
689 | |