1 //===----------------------------------------------------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 // UNSUPPORTED: c++03, c++11, c++14, c++17
12 // concept totally_ordered_with;
19 #include <forward_list>
25 #include "compare_types.h"
26 #include "test_macros.h"
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
);
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 (&)()>());
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
> ());
91 static_assert(check_totally_ordered_with
<int*, int*>());
92 static_assert(check_totally_ordered_with
<int*, int[5]>());
93 static_assert(!check_totally_ordered_with
<int*, int (*)()>());
94 static_assert(!check_totally_ordered_with
<int*, int (&)()>());
95 static_assert(!check_totally_ordered_with
<int*, int (S::*)()>());
96 static_assert(!check_totally_ordered_with
<int*, int (S::*)() noexcept
>());
97 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const>());
98 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const noexcept
>());
99 static_assert(!check_totally_ordered_with
<int*, int (S::*)() volatile>());
100 static_assert(!check_totally_ordered_with
<int*, int (S::*)() volatile noexcept
>());
101 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const volatile>());
102 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const volatile noexcept
>());
103 static_assert(!check_totally_ordered_with
<int*, int (S::*)() &>());
104 static_assert(!check_totally_ordered_with
<int*, int (S::*)() & noexcept
>());
105 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const&>());
106 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const & noexcept
>());
107 static_assert(!check_totally_ordered_with
<int*, int (S::*)() volatile&>());
108 static_assert(!check_totally_ordered_with
<int*, int (S::*)() volatile & noexcept
>());
109 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const volatile&>());
110 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const volatile & noexcept
>());
111 static_assert(!check_totally_ordered_with
<int*, int (S::*)() &&>());
112 static_assert(!check_totally_ordered_with
< int*, int (S::*)() && noexcept
> ());
113 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const&&>());
114 static_assert(!check_totally_ordered_with
< int*, int (S::*)() const&& noexcept
> ());
115 static_assert(!check_totally_ordered_with
<int*, int (S::*)() volatile&&>());
116 static_assert(!check_totally_ordered_with
< int*, int (S::*)() volatile&& noexcept
> ());
117 static_assert(!check_totally_ordered_with
<int*, int (S::*)() const volatile&&>());
118 static_assert(!check_totally_ordered_with
< int*, int (S::*)() const volatile&& noexcept
> ());
120 static_assert(check_totally_ordered_with
<int[5], int[5]>());
121 static_assert(!check_totally_ordered_with
<int[5], int (*)()>());
122 static_assert(!check_totally_ordered_with
<int[5], int (&)()>());
123 static_assert(!check_totally_ordered_with
<int[5], int (S::*)()>());
124 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() noexcept
>());
125 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const>());
126 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const noexcept
>());
127 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() volatile>());
128 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() volatile noexcept
>());
129 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const volatile>());
130 static_assert(!check_totally_ordered_with
< int[5], int (S::*)() const volatile noexcept
>());
131 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() &>());
132 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() & noexcept
>());
133 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const&>());
134 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const & noexcept
>());
135 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() volatile&>());
136 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() volatile & noexcept
>());
137 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const volatile&>());
138 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const volatile & noexcept
>());
139 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() &&>());
140 static_assert(!check_totally_ordered_with
< int[5], int (S::*)() && noexcept
> ());
141 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const&&>());
142 static_assert(!check_totally_ordered_with
< int[5], int (S::*)() const&& noexcept
> ());
143 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() volatile&&>());
144 static_assert(!check_totally_ordered_with
< int[5], int (S::*)() volatile&& noexcept
> ());
145 static_assert(!check_totally_ordered_with
<int[5], int (S::*)() const volatile&&>());
146 static_assert(!check_totally_ordered_with
< int[5], int (S::*)() const volatile&& noexcept
> ());
148 static_assert(check_totally_ordered_with
<int (*)(), int (*)()>());
149 static_assert(check_totally_ordered_with
<int (*)(), int (&)()>());
150 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)()>());
151 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() noexcept
>());
152 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const>());
153 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const noexcept
>());
154 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() volatile>());
155 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() volatile noexcept
>());
156 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const volatile>());
157 static_assert(!check_totally_ordered_with
< int (*)(), int (S::*)() const volatile noexcept
>());
158 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() &>());
159 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() & noexcept
>());
160 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const&>());
161 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const & noexcept
>());
162 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() volatile&>());
163 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() volatile & noexcept
>());
164 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const volatile&>());
165 static_assert(!check_totally_ordered_with
< int (*)(), int (S::*)() const volatile & noexcept
>());
166 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() &&>());
167 static_assert(!check_totally_ordered_with
< int (*)(), int (S::*)() && noexcept
> ());
168 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const&&>());
169 static_assert(!check_totally_ordered_with
< int (*)(), int (S::*)() const&& noexcept
> ());
170 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() volatile&&>());
171 static_assert(!check_totally_ordered_with
< int (*)(), int (S::*)() volatile&& noexcept
> ());
172 static_assert(!check_totally_ordered_with
<int (*)(), int (S::*)() const volatile&&>());
173 static_assert(!check_totally_ordered_with
< int (*)(), int (S::*)() const volatile&& noexcept
> ());
175 static_assert(check_totally_ordered_with
<int (&)(), int (&)()>());
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 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() &>());
185 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() & noexcept
>());
186 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() const&>());
187 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() const & noexcept
>());
188 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() volatile&>());
189 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() volatile & noexcept
>());
190 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() const volatile&>());
191 static_assert(!check_totally_ordered_with
< int (&)(), int (S::*)() const volatile & noexcept
>());
192 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() &&>());
193 static_assert(!check_totally_ordered_with
< int (&)(), int (S::*)() && noexcept
> ());
194 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() const&&>());
195 static_assert(!check_totally_ordered_with
< int (&)(), int (S::*)() const&& noexcept
> ());
196 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() volatile&&>());
197 static_assert(!check_totally_ordered_with
< int (&)(), int (S::*)() volatile&& noexcept
> ());
198 static_assert(!check_totally_ordered_with
<int (&)(), int (S::*)() const volatile&&>());
199 static_assert(!check_totally_ordered_with
< int (&)(), int (S::*)() const volatile&& noexcept
> ());
201 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)()>());
202 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() noexcept
>());
203 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const>());
204 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const noexcept
>());
205 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() volatile>());
206 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() volatile noexcept
>());
207 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const volatile>());
208 static_assert(!check_totally_ordered_with
< int (S::*)(), int (S::*)() const volatile noexcept
>());
209 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() &>());
210 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() & noexcept
>());
211 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const&>());
212 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const & noexcept
>());
213 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() volatile&>());
214 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() volatile & noexcept
>());
215 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const volatile&>());
216 static_assert(!check_totally_ordered_with
< int (S::*)(), int (S::*)() const volatile & noexcept
>());
217 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() &&>());
218 static_assert(!check_totally_ordered_with
< int(S::*)(), int (S::*)() && noexcept
> ());
219 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const&&>());
220 static_assert(!check_totally_ordered_with
< int(S::*)(), int (S::*)() const&& noexcept
> ());
221 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() volatile&&>());
222 static_assert(!check_totally_ordered_with
< int(S::*)(), int (S::*)() volatile&& noexcept
> ());
223 static_assert(!check_totally_ordered_with
<int (S::*)(), int (S::*)() const volatile&&>());
224 static_assert(!check_totally_ordered_with
< int(S::*)(), int (S::*)() const volatile&& noexcept
> ());
226 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() noexcept
>());
227 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const>());
228 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const noexcept
>());
229 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() volatile>());
230 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() volatile noexcept
>());
231 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const volatile>());
232 static_assert(!check_totally_ordered_with
< int (S::*)() noexcept
, int (S::*)() const volatile noexcept
>());
233 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() &>());
234 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() & noexcept
>());
235 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const&>());
236 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const & noexcept
>());
237 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() volatile&>());
238 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() volatile & noexcept
>());
239 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const volatile&>());
240 static_assert(!check_totally_ordered_with
< int (S::*)() noexcept
, int (S::*)() const volatile & noexcept
>());
241 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() &&>());
242 static_assert(!check_totally_ordered_with
< int(S::*)() noexcept
, int (S::*)() && noexcept
> ());
243 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const&&>());
244 static_assert(!check_totally_ordered_with
< int(S::*)() noexcept
, int (S::*)() const&& noexcept
> ());
245 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() volatile&&>());
246 static_assert(!check_totally_ordered_with
< int(S::*)() noexcept
, int (S::*)() volatile&& noexcept
> ());
247 static_assert(!check_totally_ordered_with
<int (S::*)() noexcept
, int (S::*)() const volatile&&>());
248 static_assert(!check_totally_ordered_with
< int(S::*)() noexcept
, int (S::*)() const volatile&& noexcept
> ());
250 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const>());
251 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const noexcept
>());
252 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() volatile>());
253 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() volatile noexcept
>());
254 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const volatile>());
255 static_assert(!check_totally_ordered_with
< int (S::*)() const, int (S::*)() const volatile noexcept
>());
256 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() &>());
257 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() & noexcept
>());
258 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const&>());
259 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const & noexcept
>());
260 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() volatile&>());
261 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() volatile & noexcept
>());
262 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const volatile&>());
263 static_assert(!check_totally_ordered_with
< int (S::*)() const, int (S::*)() const volatile & noexcept
>());
264 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() &&>());
265 static_assert(!check_totally_ordered_with
< int(S::*)() const, int (S::*)() && noexcept
> ());
266 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const&&>());
267 static_assert(!check_totally_ordered_with
< int(S::*)() const, int (S::*)() const&& noexcept
> ());
268 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() volatile&&>());
269 static_assert(!check_totally_ordered_with
< int(S::*)() const, int (S::*)() volatile&& noexcept
> ());
270 static_assert(!check_totally_ordered_with
<int (S::*)() const, int (S::*)() const volatile&&>());
271 static_assert(!check_totally_ordered_with
< int(S::*)() const, int (S::*)() const volatile&& noexcept
> ());
273 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const noexcept
>());
274 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() volatile>());
275 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() volatile noexcept
>());
276 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const volatile>());
277 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const volatile noexcept
>());
278 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() &>());
279 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() & noexcept
>());
280 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const&>());
281 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const & noexcept
>());
282 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() volatile&>());
283 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() volatile & noexcept
>());
284 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const volatile&>());
285 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const volatile & noexcept
>());
286 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() &&>());
287 static_assert(!check_totally_ordered_with
< int(S::*)() const noexcept
, int (S::*)() && noexcept
> ());
288 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const&&>());
289 static_assert(!check_totally_ordered_with
< int(S::*)() const noexcept
, int (S::*)() const&& noexcept
> ());
290 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() volatile&&>());
291 static_assert(!check_totally_ordered_with
< int(S::*)() const noexcept
, int (S::*)() volatile&& noexcept
> ());
292 static_assert(!check_totally_ordered_with
<int (S::*)() const noexcept
, int (S::*)() const volatile&&>());
293 static_assert(!check_totally_ordered_with
< int(S::*)() const noexcept
, int (S::*)() const volatile&& noexcept
> ());
295 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() volatile>());
296 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() volatile noexcept
>());
297 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() const volatile>());
298 static_assert(!check_totally_ordered_with
< int (S::*)() volatile, int (S::*)() const volatile noexcept
>());
299 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() &>());
300 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() & noexcept
>());
301 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() const&>());
302 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() const & noexcept
>());
303 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() volatile&>());
304 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() volatile & noexcept
>());
305 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() const volatile&>());
306 static_assert(!check_totally_ordered_with
< int (S::*)() volatile, int (S::*)() const volatile & noexcept
>());
307 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() &&>());
308 static_assert(!check_totally_ordered_with
< int(S::*)() volatile, int (S::*)() && noexcept
> ());
309 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() const&&>());
310 static_assert(!check_totally_ordered_with
< int(S::*)() volatile, int (S::*)() const&& noexcept
> ());
311 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() volatile&&>());
312 static_assert(!check_totally_ordered_with
< int(S::*)() volatile, int (S::*)() volatile&& noexcept
> ());
313 static_assert(!check_totally_ordered_with
<int (S::*)() volatile, int (S::*)() const volatile&&>());
314 static_assert(!check_totally_ordered_with
< int(S::*)() volatile, int (S::*)() const volatile&& noexcept
> ());
316 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() volatile noexcept
>());
317 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const volatile>());
318 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const volatile noexcept
>());
319 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() &>());
320 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() & noexcept
>());
321 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const&>());
322 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const & noexcept
>());
323 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() volatile&>());
324 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() volatile & noexcept
>());
325 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const volatile&>());
326 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const volatile & noexcept
>());
327 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() &&>());
328 static_assert(!check_totally_ordered_with
< int(S::*)() volatile noexcept
, int (S::*)() && noexcept
> ());
329 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const&&>());
330 static_assert(!check_totally_ordered_with
< int(S::*)() volatile noexcept
, int (S::*)() const&& noexcept
> ());
331 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() volatile&&>());
332 static_assert(!check_totally_ordered_with
< int(S::*)() volatile noexcept
, int (S::*)() volatile&& noexcept
> ());
333 static_assert(!check_totally_ordered_with
<int (S::*)() volatile noexcept
, int (S::*)() const volatile&&>());
334 static_assert(!check_totally_ordered_with
< int(S::*)() volatile noexcept
, int (S::*)() const volatile&& noexcept
> ());
336 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const volatile>());
337 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const volatile noexcept
>());
338 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() &>());
339 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() & noexcept
>());
340 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const&>());
341 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const & noexcept
>());
342 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() volatile&>());
343 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() volatile & noexcept
>());
344 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const volatile&>());
345 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const volatile & noexcept
>());
346 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() &&>());
347 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile, int (S::*)() && noexcept
> ());
348 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const&&>());
349 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile, int (S::*)() const&& noexcept
> ());
350 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() volatile&&>());
351 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile, int (S::*)() volatile&& noexcept
> ());
352 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile, int (S::*)() const volatile&&>());
353 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile, int (S::*)() const volatile&& noexcept
> ());
356 !check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const volatile noexcept
>());
357 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() &>());
358 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() & noexcept
>());
359 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const&>());
360 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const & noexcept
>());
361 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() volatile&>());
362 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() volatile & noexcept
>());
363 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const volatile&>());
365 !check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const volatile & noexcept
>());
366 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() &&>());
367 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile noexcept
, int (S::*)() && noexcept
> ());
368 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const&&>());
369 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile noexcept
, int (S::*)() const&& noexcept
> ());
370 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() volatile&&>());
371 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile noexcept
, int (S::*)() volatile&& noexcept
> ());
372 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile noexcept
, int (S::*)() const volatile&&>());
373 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile noexcept
,
374 int (S::*)() const volatile&& noexcept
> ());
376 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() &>());
377 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() & noexcept
>());
378 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() const&>());
379 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() const & noexcept
>());
380 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() volatile&>());
381 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() volatile & noexcept
>());
382 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() const volatile&>());
383 static_assert(!check_totally_ordered_with
< int (S::*)() &, int (S::*)() const volatile & noexcept
>());
384 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() &&>());
385 static_assert(!check_totally_ordered_with
< int(S::*)() &, int (S::*)() && noexcept
> ());
386 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() const&&>());
387 static_assert(!check_totally_ordered_with
< int(S::*)() &, int (S::*)() const&& noexcept
> ());
388 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() volatile&&>());
389 static_assert(!check_totally_ordered_with
< int(S::*)() &, int (S::*)() volatile&& noexcept
> ());
390 static_assert(!check_totally_ordered_with
<int (S::*)() &, int (S::*)() const volatile&&>());
391 static_assert(!check_totally_ordered_with
< int(S::*)() &, int (S::*)() const volatile&& noexcept
> ());
393 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() & noexcept
>());
394 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() const&>());
395 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() const & noexcept
>());
396 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() volatile&>());
397 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() volatile & noexcept
>());
398 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() const volatile&>());
399 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() const volatile & noexcept
>());
400 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() &&>());
401 static_assert(!check_totally_ordered_with
< int(S::*)() & noexcept
, int (S::*)() && noexcept
> ());
402 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() const&&>());
403 static_assert(!check_totally_ordered_with
< int(S::*)() & noexcept
, int (S::*)() const&& noexcept
> ());
404 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() volatile&&>());
405 static_assert(!check_totally_ordered_with
< int(S::*)() & noexcept
, int (S::*)() volatile&& noexcept
> ());
406 static_assert(!check_totally_ordered_with
<int (S::*)() & noexcept
, int (S::*)() const volatile&&>());
407 static_assert(!check_totally_ordered_with
< int(S::*)() & noexcept
, int (S::*)() const volatile&& noexcept
> ());
409 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() const&>());
410 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() const & noexcept
>());
411 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() volatile&>());
412 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() volatile & noexcept
>());
413 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() const volatile&>());
414 static_assert(!check_totally_ordered_with
< int (S::*)() const&, int (S::*)() const volatile & noexcept
>());
415 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() &&>());
416 static_assert(!check_totally_ordered_with
< int(S::*)() const&, int (S::*)() && noexcept
> ());
417 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() const&&>());
418 static_assert(!check_totally_ordered_with
< int(S::*)() const&, int (S::*)() const&& noexcept
> ());
419 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() volatile&&>());
420 static_assert(!check_totally_ordered_with
< int(S::*)() const&, int (S::*)() volatile&& noexcept
> ());
421 static_assert(!check_totally_ordered_with
<int (S::*)() const&, int (S::*)() const volatile&&>());
422 static_assert(!check_totally_ordered_with
< int(S::*)() const&, int (S::*)() const volatile&& noexcept
> ());
424 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() const & noexcept
>());
425 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() volatile&>());
426 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() volatile & noexcept
>());
427 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() const volatile&>());
428 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() const volatile & noexcept
>());
429 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() &&>());
430 static_assert(!check_totally_ordered_with
< int(S::*)() const& noexcept
, int (S::*)() && noexcept
> ());
431 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() const&&>());
432 static_assert(!check_totally_ordered_with
< int(S::*)() const& noexcept
, int (S::*)() const&& noexcept
> ());
433 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() volatile&&>());
434 static_assert(!check_totally_ordered_with
< int(S::*)() const& noexcept
, int (S::*)() volatile&& noexcept
> ());
435 static_assert(!check_totally_ordered_with
<int (S::*)() const & noexcept
, int (S::*)() const volatile&&>());
436 static_assert(!check_totally_ordered_with
< int(S::*)() const& noexcept
, int (S::*)() const volatile&& noexcept
> ());
438 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() volatile&>());
439 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() volatile & noexcept
>());
440 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() const volatile&>());
441 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() const volatile & noexcept
>());
442 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() &&>());
443 static_assert(!check_totally_ordered_with
< int(S::*)() volatile&, int (S::*)() && noexcept
> ());
444 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() const&&>());
445 static_assert(!check_totally_ordered_with
< int(S::*)() volatile&, int (S::*)() const&& noexcept
> ());
446 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() volatile&&>());
447 static_assert(!check_totally_ordered_with
< int(S::*)() volatile&, int (S::*)() volatile&& noexcept
> ());
448 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&, int (S::*)() const volatile&&>());
449 static_assert(!check_totally_ordered_with
< int(S::*)() volatile&, int (S::*)() const volatile&& noexcept
> ());
451 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() volatile & noexcept
>());
452 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() const volatile&>());
453 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() const volatile & noexcept
>());
454 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() &&>());
455 static_assert(!check_totally_ordered_with
< int(S::*)() volatile & noexcept
, int (S::*)() && noexcept
> ());
456 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() const&&>());
457 static_assert(!check_totally_ordered_with
< int(S::*)() volatile & noexcept
, int (S::*)() const&& noexcept
> ());
458 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() volatile&&>());
459 static_assert(!check_totally_ordered_with
< int(S::*)() volatile & noexcept
, int (S::*)() volatile&& noexcept
> ());
460 static_assert(!check_totally_ordered_with
<int (S::*)() volatile & noexcept
, int (S::*)() const volatile&&>());
461 static_assert(!check_totally_ordered_with
< int(S::*)() volatile & noexcept
,
462 int (S::*)() const volatile&& noexcept
> ());
464 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&, int (S::*)() const volatile&>());
465 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&, int (S::*)() const volatile & noexcept
>());
466 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&, int (S::*)() &&>());
467 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile&, int (S::*)() && noexcept
> ());
468 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&, int (S::*)() const&&>());
469 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile&, int (S::*)() const&& noexcept
> ());
470 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&, int (S::*)() volatile&&>());
471 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile&, int (S::*)() volatile&& noexcept
> ());
472 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&, int (S::*)() const volatile&&>());
473 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile&, int (S::*)() const volatile&& noexcept
> ());
476 !check_totally_ordered_with
<int (S::*)() const volatile & noexcept
, int (S::*)() const volatile & noexcept
>());
477 static_assert(!check_totally_ordered_with
< int (S::*)() const volatile & noexcept
, int (S::*)() &&>());
478 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile& noexcept
, int (S::*)() && noexcept
> ());
479 static_assert(!check_totally_ordered_with
< int (S::*)() const volatile & noexcept
, int (S::*)() const&&>());
480 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile& noexcept
, int (S::*)() const&& noexcept
> ());
481 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile & noexcept
, int (S::*)() volatile&&>());
482 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile& noexcept
,
483 int (S::*)() volatile&& noexcept
> ());
484 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile & noexcept
, int (S::*)() const volatile&&>());
485 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile& noexcept
,
486 int (S::*)() const volatile&& noexcept
> ());
488 static_assert(!check_totally_ordered_with
<int (S::*)() &&, int (S::*)() &&>());
489 static_assert(!check_totally_ordered_with
< int(S::*)() &&, int (S::*)() && noexcept
> ());
490 static_assert(!check_totally_ordered_with
<int (S::*)() &&, int (S::*)() const&&>());
491 static_assert(!check_totally_ordered_with
< int(S::*)() &&, int (S::*)() const&& noexcept
> ());
492 static_assert(!check_totally_ordered_with
<int (S::*)() &&, int (S::*)() volatile&&>());
493 static_assert(!check_totally_ordered_with
< int(S::*)() &&, int (S::*)() volatile&& noexcept
> ());
494 static_assert(!check_totally_ordered_with
<int (S::*)() &&, int (S::*)() const volatile&&>());
495 static_assert(!check_totally_ordered_with
< int(S::*)() &&, int (S::*)() const volatile&& noexcept
> ());
497 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() && noexcept
> ());
498 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() const&& > ());
499 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() const&& noexcept
> ());
500 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() volatile&& > ());
501 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() volatile&& noexcept
> ());
502 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() const volatile&& > ());
503 static_assert(!check_totally_ordered_with
< int(S::*)() && noexcept
, int (S::*)() const volatile&& noexcept
> ());
505 static_assert(!check_totally_ordered_with
<int (S::*)() const&&, int (S::*)() const&&>());
506 static_assert(!check_totally_ordered_with
< int(S::*)() const&&, int (S::*)() const&& noexcept
> ());
507 static_assert(!check_totally_ordered_with
<int (S::*)() const&&, int (S::*)() volatile&&>());
508 static_assert(!check_totally_ordered_with
< int(S::*)() const&&, int (S::*)() volatile&& noexcept
> ());
509 static_assert(!check_totally_ordered_with
<int (S::*)() const&&, int (S::*)() const volatile&&>());
510 static_assert(!check_totally_ordered_with
< int(S::*)() const&&, int (S::*)() const volatile&& noexcept
> ());
512 static_assert(!check_totally_ordered_with
< int(S::*)() const&& noexcept
, int (S::*)() const&& noexcept
> ());
513 static_assert(!check_totally_ordered_with
< int(S::*)() const&& noexcept
, int (S::*)() volatile&& > ());
514 static_assert(!check_totally_ordered_with
< int(S::*)() const&& noexcept
, int (S::*)() volatile&& noexcept
> ());
515 static_assert(!check_totally_ordered_with
< int(S::*)() const&& noexcept
, int (S::*)() const volatile&& > ());
516 static_assert(!check_totally_ordered_with
< int(S::*)() const&& noexcept
, int (S::*)() const volatile&& noexcept
> ());
518 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&&, int (S::*)() volatile&&>());
519 static_assert(!check_totally_ordered_with
< int(S::*)() volatile&&, int (S::*)() volatile&& noexcept
> ());
520 static_assert(!check_totally_ordered_with
<int (S::*)() volatile&&, int (S::*)() const volatile&&>());
521 static_assert(!check_totally_ordered_with
< int(S::*)() volatile&&, int (S::*)() const volatile&& noexcept
> ());
523 static_assert(!check_totally_ordered_with
< int(S::*)() volatile && noexcept
, int (S::*)() volatile&& noexcept
> ());
524 static_assert(!check_totally_ordered_with
< int(S::*)() volatile && noexcept
, int (S::*)() const volatile&& > ());
525 static_assert(!check_totally_ordered_with
< int(S::*)() volatile && noexcept
,
526 int (S::*)() const volatile&& noexcept
> ());
528 static_assert(!check_totally_ordered_with
<int (S::*)() const volatile&&, int (S::*)() const volatile&&>());
529 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile&&, int (S::*)() const volatile&& noexcept
> ());
530 static_assert(!check_totally_ordered_with
< int(S::*)() const volatile&& noexcept
,
531 int (S::*)() const volatile&& noexcept
> ());
533 #if !defined(TEST_COMPILER_GCC)
534 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int>());
536 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int*>());
537 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int[]>());
538 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int[5]>());
539 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (*)()>());
540 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (&)()>());
543 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)()>());
544 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() noexcept
>());
545 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const>());
546 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const noexcept
>());
547 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() volatile>());
548 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() volatile noexcept
>());
549 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const volatile>());
550 static_assert(!check_totally_ordered_with
< std::nullptr_t
, int (S::*)() const volatile noexcept
>());
551 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() &>());
552 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() & noexcept
>());
553 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const&>());
554 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const & noexcept
>());
555 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() volatile&>());
556 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() volatile & noexcept
>());
557 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const volatile&>());
558 static_assert(!check_totally_ordered_with
< std::nullptr_t
, int (S::*)() const volatile & noexcept
>());
559 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() &&>());
560 static_assert(!check_totally_ordered_with
< std::nullptr_t
, int (S::*)() && noexcept
> ());
561 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const&&>());
562 static_assert(!check_totally_ordered_with
< std::nullptr_t
, int (S::*)() const&& noexcept
> ());
563 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() volatile&&>());
564 static_assert(!check_totally_ordered_with
< std::nullptr_t
, int (S::*)() volatile&& noexcept
> ());
565 static_assert(!check_totally_ordered_with
<std::nullptr_t
, int (S::*)() const volatile&&>());
566 static_assert(!check_totally_ordered_with
< std::nullptr_t
, int (S::*)() const volatile&& noexcept
> ());
568 static_assert(!std::equality_comparable_with
<void, int>);
569 static_assert(!std::equality_comparable_with
<void, int*>);
570 static_assert(!std::equality_comparable_with
<void, std::nullptr_t
>);
571 static_assert(!std::equality_comparable_with
<void, int[5]>);
572 static_assert(!std::equality_comparable_with
<void, int (*)()>);
573 static_assert(!std::equality_comparable_with
<void, int (&)()>);
574 static_assert(!std::equality_comparable_with
<void, int S::*>);
575 static_assert(!std::equality_comparable_with
<void, int (S::*)()>);
576 static_assert(!std::equality_comparable_with
<void, int (S::*)() noexcept
>);
577 static_assert(!std::equality_comparable_with
<void, int (S::*)() const>);
578 static_assert(!std::equality_comparable_with
<void, int (S::*)() const noexcept
>);
579 static_assert(!std::equality_comparable_with
<void, int (S::*)() volatile>);
580 static_assert(!std::equality_comparable_with
<void, int (S::*)() volatile noexcept
>);
581 static_assert(!std::equality_comparable_with
<void, int (S::*)() const volatile>);
582 static_assert(!std::equality_comparable_with
<void, int (S::*)() const volatile noexcept
>);
583 static_assert(!std::equality_comparable_with
<void, int (S::*)() &>);
584 static_assert(!std::equality_comparable_with
<void, int (S::*)() & noexcept
>);
585 static_assert(!std::equality_comparable_with
<void, int (S::*)() const&>);
586 static_assert(!std::equality_comparable_with
<void, int (S::*)() const & noexcept
>);
587 static_assert(!std::equality_comparable_with
<void, int (S::*)() volatile&>);
588 static_assert(!std::equality_comparable_with
<void, int (S::*)() volatile & noexcept
>);
589 static_assert(!std::equality_comparable_with
<void, int (S::*)() const volatile&>);
590 static_assert(!std::equality_comparable_with
<void, int (S::*)() const volatile & noexcept
>);
591 static_assert(!std::equality_comparable_with
<void, int (S::*)() &&>);
592 static_assert(!std::equality_comparable_with
< void, int (S::*)() && noexcept
>);
593 static_assert(!std::equality_comparable_with
<void, int (S::*)() const&&>);
594 static_assert(!std::equality_comparable_with
< void, int (S::*)() const&& noexcept
>);
595 static_assert(!std::equality_comparable_with
<void, int (S::*)() volatile&&>);
596 static_assert(!std::equality_comparable_with
< void, int (S::*)() volatile&& noexcept
>);
597 static_assert(!std::equality_comparable_with
<void, int (S::*)() const volatile&&>);
598 static_assert(!std::equality_comparable_with
< void, int (S::*)() const volatile&& noexcept
>);
599 } // namespace fundamentals
601 namespace standard_types
{
602 static_assert(check_totally_ordered_with
<std::array
<int, 10>, std::array
<int, 10> >());
603 static_assert(!check_totally_ordered_with
<std::array
<int, 10>, std::array
<double, 10> >());
604 static_assert(check_totally_ordered_with
<std::deque
<int>, std::deque
<int> >());
605 static_assert(!check_totally_ordered_with
<std::deque
<int>, std::vector
<int> >());
606 static_assert(check_totally_ordered_with
<std::forward_list
<int>, std::forward_list
<int> >());
607 static_assert(!check_totally_ordered_with
<std::forward_list
<int>, std::vector
<int> >());
608 static_assert(check_totally_ordered_with
<std::list
<int>, std::list
<int> >());
609 static_assert(!check_totally_ordered_with
<std::list
<int>, std::vector
<int> >());
611 static_assert(check_totally_ordered_with
<std::map
<int, void*>, std::map
<int, void*> >());
612 static_assert(!check_totally_ordered_with
<std::map
<int, void*>, std::vector
<int> >());
613 static_assert(check_totally_ordered_with
<std::optional
<std::vector
<int> >, std::optional
<std::vector
<int> > >());
614 static_assert(check_totally_ordered_with
<std::optional
<std::vector
<int> >, std::vector
<int> >());
615 static_assert(check_totally_ordered_with
<std::vector
<int>, std::vector
<int> >());
616 static_assert(!check_totally_ordered_with
<std::vector
<int>, int>());
619 static_assert(!check_totally_ordered_with
<std::optional
<std::vector
<A
> >, std::optional
<std::vector
<A
> > >());
620 static_assert(!check_totally_ordered_with
<std::optional
<std::vector
<A
> >, std::vector
<A
> >());
622 static_assert(!check_totally_ordered_with
<std::vector
<A
>, std::vector
<B
> >());
623 static_assert(!check_totally_ordered_with
<std::optional
<A
>, std::optional
<B
> >());
624 } // namespace standard_types
626 namespace types_fit_for_purpose
{
627 static_assert(!check_totally_ordered_with
<cxx20_member_eq
, cxx20_member_eq
>());
628 static_assert(!check_totally_ordered_with
<cxx20_friend_eq
, cxx20_friend_eq
>());
629 static_assert(!check_totally_ordered_with
<cxx20_member_eq
, cxx20_friend_eq
>());
631 static_assert(check_totally_ordered_with
<member_three_way_comparable
, member_three_way_comparable
>());
632 static_assert(check_totally_ordered_with
<friend_three_way_comparable
, friend_three_way_comparable
>());
633 static_assert(!check_totally_ordered_with
<member_three_way_comparable
, friend_three_way_comparable
>());
635 static_assert(check_totally_ordered_with
<explicit_operators
, explicit_operators
>());
636 static_assert(!check_totally_ordered_with
<equality_comparable_with_ec1
, equality_comparable_with_ec1
>());
637 static_assert(check_totally_ordered_with
<different_return_types
, different_return_types
>());
638 static_assert(!check_totally_ordered_with
<explicit_operators
, equality_comparable_with_ec1
>());
639 static_assert(check_totally_ordered_with
<explicit_operators
, different_return_types
>());
641 static_assert(!check_totally_ordered_with
<one_way_eq
, one_way_eq
>());
642 static_assert(std::common_reference_with
<one_way_eq
const&, explicit_operators
const&> &&
643 !check_totally_ordered_with
<one_way_eq
, explicit_operators
>());
645 static_assert(!check_totally_ordered_with
<one_way_ne
, one_way_ne
>());
646 static_assert(std::common_reference_with
<one_way_ne
const&, explicit_operators
const&> &&
647 !check_totally_ordered_with
<one_way_ne
, explicit_operators
>());
649 static_assert(check_totally_ordered_with
<totally_ordered_with_others
, partial_ordering_totally_ordered_with
>());
650 static_assert(check_totally_ordered_with
<totally_ordered_with_others
, weak_ordering_totally_ordered_with
>());
651 static_assert(check_totally_ordered_with
<totally_ordered_with_others
, strong_ordering_totally_ordered_with
>());
653 static_assert(!check_totally_ordered_with
<totally_ordered_with_others
, eq_returns_explicit_bool
>());
654 static_assert(!check_totally_ordered_with
<totally_ordered_with_others
, ne_returns_explicit_bool
>());
655 static_assert(std::equality_comparable_with
<totally_ordered_with_others
, lt_returns_explicit_bool
> &&
656 !check_totally_ordered_with
<totally_ordered_with_others
, lt_returns_explicit_bool
>());
657 static_assert(std::equality_comparable_with
<totally_ordered_with_others
, gt_returns_explicit_bool
> &&
658 !check_totally_ordered_with
<totally_ordered_with_others
, gt_returns_explicit_bool
>());
659 static_assert(std::equality_comparable_with
<totally_ordered_with_others
, le_returns_explicit_bool
> &&
660 !check_totally_ordered_with
<totally_ordered_with_others
, le_returns_explicit_bool
>());
661 static_assert(std::equality_comparable_with
<totally_ordered_with_others
, ge_returns_explicit_bool
> &&
662 !check_totally_ordered_with
<totally_ordered_with_others
, ge_returns_explicit_bool
>());
663 static_assert(check_totally_ordered_with
<totally_ordered_with_others
, returns_true_type
>());
664 static_assert(check_totally_ordered_with
<totally_ordered_with_others
, returns_int_ptr
>());
666 static_assert(std::totally_ordered
<no_lt_not_totally_ordered_with
> &&
667 std::equality_comparable_with
<totally_ordered_with_others
, no_lt_not_totally_ordered_with
> &&
668 !check_totally_ordered_with
<totally_ordered_with_others
, no_lt_not_totally_ordered_with
>());
669 static_assert(std::totally_ordered
<no_gt_not_totally_ordered_with
> &&
670 std::equality_comparable_with
<totally_ordered_with_others
, no_gt_not_totally_ordered_with
> &&
671 !check_totally_ordered_with
<totally_ordered_with_others
, no_gt_not_totally_ordered_with
>());
672 static_assert(std::totally_ordered
<no_le_not_totally_ordered_with
> &&
673 std::equality_comparable_with
<totally_ordered_with_others
, no_le_not_totally_ordered_with
> &&
674 !check_totally_ordered_with
<totally_ordered_with_others
, no_le_not_totally_ordered_with
>());
675 static_assert(std::totally_ordered
<no_ge_not_totally_ordered_with
> &&
676 std::equality_comparable_with
<totally_ordered_with_others
, no_ge_not_totally_ordered_with
> &&
677 !check_totally_ordered_with
<totally_ordered_with_others
, no_ge_not_totally_ordered_with
>());
678 } // namespace types_fit_for_purpose