27e76e5b2b05a3106c6e6ba363af5e1777de5c7b
[platform/upstream/llvm.git] /
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 // WARNING: This test was generated by generate_feature_test_macro_components.py
10 // and should not be edited manually.
11 //
12 // clang-format off
13
14 // <functional>
15
16 // Test the feature test macros defined by <functional>
17
18 /*  Constant                           Value
19     __cpp_lib_bind_back                202202L [C++23]
20     __cpp_lib_bind_front               201907L [C++20]
21                                        202306L [C++26]
22     __cpp_lib_boyer_moore_searcher     201603L [C++17]
23     __cpp_lib_constexpr_functional     201907L [C++20]
24     __cpp_lib_copyable_function        202306L [C++26]
25     __cpp_lib_function_ref             202306L [C++26]
26     __cpp_lib_invoke                   201411L [C++17]
27     __cpp_lib_invoke_r                 202106L [C++23]
28     __cpp_lib_move_only_function       202110L [C++23]
29     __cpp_lib_not_fn                   201603L [C++17]
30     __cpp_lib_ranges                   202207L [C++20]
31     __cpp_lib_reference_wrapper        202403L [C++26]
32     __cpp_lib_result_of_sfinae         201210L [C++14]
33     __cpp_lib_transparent_operators    201210L [C++14]
34                                        201510L [C++17]
35     __cpp_lib_unwrap_ref               201811L [C++20]
36 */
37
38 #include <functional>
39 #include "test_macros.h"
40
41 #if TEST_STD_VER < 14
42
43 # ifdef __cpp_lib_bind_back
44 #   error "__cpp_lib_bind_back should not be defined before c++23"
45 # endif
46
47 # ifdef __cpp_lib_bind_front
48 #   error "__cpp_lib_bind_front should not be defined before c++20"
49 # endif
50
51 # ifdef __cpp_lib_boyer_moore_searcher
52 #   error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
53 # endif
54
55 # ifdef __cpp_lib_constexpr_functional
56 #   error "__cpp_lib_constexpr_functional should not be defined before c++20"
57 # endif
58
59 # ifdef __cpp_lib_copyable_function
60 #   error "__cpp_lib_copyable_function should not be defined before c++26"
61 # endif
62
63 # ifdef __cpp_lib_function_ref
64 #   error "__cpp_lib_function_ref should not be defined before c++26"
65 # endif
66
67 # ifdef __cpp_lib_invoke
68 #   error "__cpp_lib_invoke should not be defined before c++17"
69 # endif
70
71 # ifdef __cpp_lib_invoke_r
72 #   error "__cpp_lib_invoke_r should not be defined before c++23"
73 # endif
74
75 # ifdef __cpp_lib_move_only_function
76 #   error "__cpp_lib_move_only_function should not be defined before c++23"
77 # endif
78
79 # ifdef __cpp_lib_not_fn
80 #   error "__cpp_lib_not_fn should not be defined before c++17"
81 # endif
82
83 # ifdef __cpp_lib_ranges
84 #   error "__cpp_lib_ranges should not be defined before c++20"
85 # endif
86
87 # ifdef __cpp_lib_reference_wrapper
88 #   error "__cpp_lib_reference_wrapper should not be defined before c++26"
89 # endif
90
91 # ifdef __cpp_lib_result_of_sfinae
92 #   error "__cpp_lib_result_of_sfinae should not be defined before c++14"
93 # endif
94
95 # ifdef __cpp_lib_transparent_operators
96 #   error "__cpp_lib_transparent_operators should not be defined before c++14"
97 # endif
98
99 # ifdef __cpp_lib_unwrap_ref
100 #   error "__cpp_lib_unwrap_ref should not be defined before c++20"
101 # endif
102
103 #elif TEST_STD_VER == 14
104
105 # ifdef __cpp_lib_bind_back
106 #   error "__cpp_lib_bind_back should not be defined before c++23"
107 # endif
108
109 # ifdef __cpp_lib_bind_front
110 #   error "__cpp_lib_bind_front should not be defined before c++20"
111 # endif
112
113 # ifdef __cpp_lib_boyer_moore_searcher
114 #   error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
115 # endif
116
117 # ifdef __cpp_lib_constexpr_functional
118 #   error "__cpp_lib_constexpr_functional should not be defined before c++20"
119 # endif
120
121 # ifdef __cpp_lib_copyable_function
122 #   error "__cpp_lib_copyable_function should not be defined before c++26"
123 # endif
124
125 # ifdef __cpp_lib_function_ref
126 #   error "__cpp_lib_function_ref should not be defined before c++26"
127 # endif
128
129 # ifdef __cpp_lib_invoke
130 #   error "__cpp_lib_invoke should not be defined before c++17"
131 # endif
132
133 # ifdef __cpp_lib_invoke_r
134 #   error "__cpp_lib_invoke_r should not be defined before c++23"
135 # endif
136
137 # ifdef __cpp_lib_move_only_function
138 #   error "__cpp_lib_move_only_function should not be defined before c++23"
139 # endif
140
141 # ifdef __cpp_lib_not_fn
142 #   error "__cpp_lib_not_fn should not be defined before c++17"
143 # endif
144
145 # ifdef __cpp_lib_ranges
146 #   error "__cpp_lib_ranges should not be defined before c++20"
147 # endif
148
149 # ifdef __cpp_lib_reference_wrapper
150 #   error "__cpp_lib_reference_wrapper should not be defined before c++26"
151 # endif
152
153 # ifndef __cpp_lib_result_of_sfinae
154 #   error "__cpp_lib_result_of_sfinae should be defined in c++14"
155 # endif
156 # if __cpp_lib_result_of_sfinae != 201210L
157 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++14"
158 # endif
159
160 # ifndef __cpp_lib_transparent_operators
161 #   error "__cpp_lib_transparent_operators should be defined in c++14"
162 # endif
163 # if __cpp_lib_transparent_operators != 201210L
164 #   error "__cpp_lib_transparent_operators should have the value 201210L in c++14"
165 # endif
166
167 # ifdef __cpp_lib_unwrap_ref
168 #   error "__cpp_lib_unwrap_ref should not be defined before c++20"
169 # endif
170
171 #elif TEST_STD_VER == 17
172
173 # ifdef __cpp_lib_bind_back
174 #   error "__cpp_lib_bind_back should not be defined before c++23"
175 # endif
176
177 # ifdef __cpp_lib_bind_front
178 #   error "__cpp_lib_bind_front should not be defined before c++20"
179 # endif
180
181 # ifndef __cpp_lib_boyer_moore_searcher
182 #   error "__cpp_lib_boyer_moore_searcher should be defined in c++17"
183 # endif
184 # if __cpp_lib_boyer_moore_searcher != 201603L
185 #   error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++17"
186 # endif
187
188 # ifdef __cpp_lib_constexpr_functional
189 #   error "__cpp_lib_constexpr_functional should not be defined before c++20"
190 # endif
191
192 # ifdef __cpp_lib_copyable_function
193 #   error "__cpp_lib_copyable_function should not be defined before c++26"
194 # endif
195
196 # ifdef __cpp_lib_function_ref
197 #   error "__cpp_lib_function_ref should not be defined before c++26"
198 # endif
199
200 # ifndef __cpp_lib_invoke
201 #   error "__cpp_lib_invoke should be defined in c++17"
202 # endif
203 # if __cpp_lib_invoke != 201411L
204 #   error "__cpp_lib_invoke should have the value 201411L in c++17"
205 # endif
206
207 # ifdef __cpp_lib_invoke_r
208 #   error "__cpp_lib_invoke_r should not be defined before c++23"
209 # endif
210
211 # ifdef __cpp_lib_move_only_function
212 #   error "__cpp_lib_move_only_function should not be defined before c++23"
213 # endif
214
215 # ifndef __cpp_lib_not_fn
216 #   error "__cpp_lib_not_fn should be defined in c++17"
217 # endif
218 # if __cpp_lib_not_fn != 201603L
219 #   error "__cpp_lib_not_fn should have the value 201603L in c++17"
220 # endif
221
222 # ifdef __cpp_lib_ranges
223 #   error "__cpp_lib_ranges should not be defined before c++20"
224 # endif
225
226 # ifdef __cpp_lib_reference_wrapper
227 #   error "__cpp_lib_reference_wrapper should not be defined before c++26"
228 # endif
229
230 # ifndef __cpp_lib_result_of_sfinae
231 #   error "__cpp_lib_result_of_sfinae should be defined in c++17"
232 # endif
233 # if __cpp_lib_result_of_sfinae != 201210L
234 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17"
235 # endif
236
237 # ifndef __cpp_lib_transparent_operators
238 #   error "__cpp_lib_transparent_operators should be defined in c++17"
239 # endif
240 # if __cpp_lib_transparent_operators != 201510L
241 #   error "__cpp_lib_transparent_operators should have the value 201510L in c++17"
242 # endif
243
244 # ifdef __cpp_lib_unwrap_ref
245 #   error "__cpp_lib_unwrap_ref should not be defined before c++20"
246 # endif
247
248 #elif TEST_STD_VER == 20
249
250 # ifdef __cpp_lib_bind_back
251 #   error "__cpp_lib_bind_back should not be defined before c++23"
252 # endif
253
254 # ifndef __cpp_lib_bind_front
255 #   error "__cpp_lib_bind_front should be defined in c++20"
256 # endif
257 # if __cpp_lib_bind_front != 201907L
258 #   error "__cpp_lib_bind_front should have the value 201907L in c++20"
259 # endif
260
261 # ifndef __cpp_lib_boyer_moore_searcher
262 #   error "__cpp_lib_boyer_moore_searcher should be defined in c++20"
263 # endif
264 # if __cpp_lib_boyer_moore_searcher != 201603L
265 #   error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++20"
266 # endif
267
268 # ifndef __cpp_lib_constexpr_functional
269 #   error "__cpp_lib_constexpr_functional should be defined in c++20"
270 # endif
271 # if __cpp_lib_constexpr_functional != 201907L
272 #   error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
273 # endif
274
275 # ifdef __cpp_lib_copyable_function
276 #   error "__cpp_lib_copyable_function should not be defined before c++26"
277 # endif
278
279 # ifdef __cpp_lib_function_ref
280 #   error "__cpp_lib_function_ref should not be defined before c++26"
281 # endif
282
283 # ifndef __cpp_lib_invoke
284 #   error "__cpp_lib_invoke should be defined in c++20"
285 # endif
286 # if __cpp_lib_invoke != 201411L
287 #   error "__cpp_lib_invoke should have the value 201411L in c++20"
288 # endif
289
290 # ifdef __cpp_lib_invoke_r
291 #   error "__cpp_lib_invoke_r should not be defined before c++23"
292 # endif
293
294 # ifdef __cpp_lib_move_only_function
295 #   error "__cpp_lib_move_only_function should not be defined before c++23"
296 # endif
297
298 # ifndef __cpp_lib_not_fn
299 #   error "__cpp_lib_not_fn should be defined in c++20"
300 # endif
301 # if __cpp_lib_not_fn != 201603L
302 #   error "__cpp_lib_not_fn should have the value 201603L in c++20"
303 # endif
304
305 # ifndef __cpp_lib_ranges
306 #   error "__cpp_lib_ranges should be defined in c++20"
307 # endif
308 # if __cpp_lib_ranges != 202207L
309 #   error "__cpp_lib_ranges should have the value 202207L in c++20"
310 # endif
311
312 # ifdef __cpp_lib_reference_wrapper
313 #   error "__cpp_lib_reference_wrapper should not be defined before c++26"
314 # endif
315
316 # ifndef __cpp_lib_result_of_sfinae
317 #   error "__cpp_lib_result_of_sfinae should be defined in c++20"
318 # endif
319 # if __cpp_lib_result_of_sfinae != 201210L
320 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++20"
321 # endif
322
323 # ifndef __cpp_lib_transparent_operators
324 #   error "__cpp_lib_transparent_operators should be defined in c++20"
325 # endif
326 # if __cpp_lib_transparent_operators != 201510L
327 #   error "__cpp_lib_transparent_operators should have the value 201510L in c++20"
328 # endif
329
330 # ifndef __cpp_lib_unwrap_ref
331 #   error "__cpp_lib_unwrap_ref should be defined in c++20"
332 # endif
333 # if __cpp_lib_unwrap_ref != 201811L
334 #   error "__cpp_lib_unwrap_ref should have the value 201811L in c++20"
335 # endif
336
337 #elif TEST_STD_VER == 23
338
339 # ifndef __cpp_lib_bind_back
340 #   error "__cpp_lib_bind_back should be defined in c++23"
341 # endif
342 # if __cpp_lib_bind_back != 202202L
343 #   error "__cpp_lib_bind_back should have the value 202202L in c++23"
344 # endif
345
346 # ifndef __cpp_lib_bind_front
347 #   error "__cpp_lib_bind_front should be defined in c++23"
348 # endif
349 # if __cpp_lib_bind_front != 201907L
350 #   error "__cpp_lib_bind_front should have the value 201907L in c++23"
351 # endif
352
353 # ifndef __cpp_lib_boyer_moore_searcher
354 #   error "__cpp_lib_boyer_moore_searcher should be defined in c++23"
355 # endif
356 # if __cpp_lib_boyer_moore_searcher != 201603L
357 #   error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++23"
358 # endif
359
360 # ifndef __cpp_lib_constexpr_functional
361 #   error "__cpp_lib_constexpr_functional should be defined in c++23"
362 # endif
363 # if __cpp_lib_constexpr_functional != 201907L
364 #   error "__cpp_lib_constexpr_functional should have the value 201907L in c++23"
365 # endif
366
367 # ifdef __cpp_lib_copyable_function
368 #   error "__cpp_lib_copyable_function should not be defined before c++26"
369 # endif
370
371 # ifdef __cpp_lib_function_ref
372 #   error "__cpp_lib_function_ref should not be defined before c++26"
373 # endif
374
375 # ifndef __cpp_lib_invoke
376 #   error "__cpp_lib_invoke should be defined in c++23"
377 # endif
378 # if __cpp_lib_invoke != 201411L
379 #   error "__cpp_lib_invoke should have the value 201411L in c++23"
380 # endif
381
382 # ifndef __cpp_lib_invoke_r
383 #   error "__cpp_lib_invoke_r should be defined in c++23"
384 # endif
385 # if __cpp_lib_invoke_r != 202106L
386 #   error "__cpp_lib_invoke_r should have the value 202106L in c++23"
387 # endif
388
389 # if !defined(_LIBCPP_VERSION)
390 #   ifndef __cpp_lib_move_only_function
391 #     error "__cpp_lib_move_only_function should be defined in c++23"
392 #   endif
393 #   if __cpp_lib_move_only_function != 202110L
394 #     error "__cpp_lib_move_only_function should have the value 202110L in c++23"
395 #   endif
396 # else // _LIBCPP_VERSION
397 #   ifdef __cpp_lib_move_only_function
398 #     error "__cpp_lib_move_only_function should not be defined because it is unimplemented in libc++!"
399 #   endif
400 # endif
401
402 # ifndef __cpp_lib_not_fn
403 #   error "__cpp_lib_not_fn should be defined in c++23"
404 # endif
405 # if __cpp_lib_not_fn != 201603L
406 #   error "__cpp_lib_not_fn should have the value 201603L in c++23"
407 # endif
408
409 # ifndef __cpp_lib_ranges
410 #   error "__cpp_lib_ranges should be defined in c++23"
411 # endif
412 # if __cpp_lib_ranges != 202207L
413 #   error "__cpp_lib_ranges should have the value 202207L in c++23"
414 # endif
415
416 # ifdef __cpp_lib_reference_wrapper
417 #   error "__cpp_lib_reference_wrapper should not be defined before c++26"
418 # endif
419
420 # ifndef __cpp_lib_result_of_sfinae
421 #   error "__cpp_lib_result_of_sfinae should be defined in c++23"
422 # endif
423 # if __cpp_lib_result_of_sfinae != 201210L
424 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++23"
425 # endif
426
427 # ifndef __cpp_lib_transparent_operators
428 #   error "__cpp_lib_transparent_operators should be defined in c++23"
429 # endif
430 # if __cpp_lib_transparent_operators != 201510L
431 #   error "__cpp_lib_transparent_operators should have the value 201510L in c++23"
432 # endif
433
434 # ifndef __cpp_lib_unwrap_ref
435 #   error "__cpp_lib_unwrap_ref should be defined in c++23"
436 # endif
437 # if __cpp_lib_unwrap_ref != 201811L
438 #   error "__cpp_lib_unwrap_ref should have the value 201811L in c++23"
439 # endif
440
441 #elif TEST_STD_VER > 23
442
443 # ifndef __cpp_lib_bind_back
444 #   error "__cpp_lib_bind_back should be defined in c++26"
445 # endif
446 # if __cpp_lib_bind_back != 202202L
447 #   error "__cpp_lib_bind_back should have the value 202202L in c++26"
448 # endif
449
450 # ifndef __cpp_lib_bind_front
451 #   error "__cpp_lib_bind_front should be defined in c++26"
452 # endif
453 # if __cpp_lib_bind_front != 202306L
454 #   error "__cpp_lib_bind_front should have the value 202306L in c++26"
455 # endif
456
457 # ifndef __cpp_lib_boyer_moore_searcher
458 #   error "__cpp_lib_boyer_moore_searcher should be defined in c++26"
459 # endif
460 # if __cpp_lib_boyer_moore_searcher != 201603L
461 #   error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++26"
462 # endif
463
464 # ifndef __cpp_lib_constexpr_functional
465 #   error "__cpp_lib_constexpr_functional should be defined in c++26"
466 # endif
467 # if __cpp_lib_constexpr_functional != 201907L
468 #   error "__cpp_lib_constexpr_functional should have the value 201907L in c++26"
469 # endif
470
471 # if !defined(_LIBCPP_VERSION)
472 #   ifndef __cpp_lib_copyable_function
473 #     error "__cpp_lib_copyable_function should be defined in c++26"
474 #   endif
475 #   if __cpp_lib_copyable_function != 202306L
476 #     error "__cpp_lib_copyable_function should have the value 202306L in c++26"
477 #   endif
478 # else // _LIBCPP_VERSION
479 #   ifdef __cpp_lib_copyable_function
480 #     error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!"
481 #   endif
482 # endif
483
484 # if !defined(_LIBCPP_VERSION)
485 #   ifndef __cpp_lib_function_ref
486 #     error "__cpp_lib_function_ref should be defined in c++26"
487 #   endif
488 #   if __cpp_lib_function_ref != 202306L
489 #     error "__cpp_lib_function_ref should have the value 202306L in c++26"
490 #   endif
491 # else // _LIBCPP_VERSION
492 #   ifdef __cpp_lib_function_ref
493 #     error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!"
494 #   endif
495 # endif
496
497 # ifndef __cpp_lib_invoke
498 #   error "__cpp_lib_invoke should be defined in c++26"
499 # endif
500 # if __cpp_lib_invoke != 201411L
501 #   error "__cpp_lib_invoke should have the value 201411L in c++26"
502 # endif
503
504 # ifndef __cpp_lib_invoke_r
505 #   error "__cpp_lib_invoke_r should be defined in c++26"
506 # endif
507 # if __cpp_lib_invoke_r != 202106L
508 #   error "__cpp_lib_invoke_r should have the value 202106L in c++26"
509 # endif
510
511 # if !defined(_LIBCPP_VERSION)
512 #   ifndef __cpp_lib_move_only_function
513 #     error "__cpp_lib_move_only_function should be defined in c++26"
514 #   endif
515 #   if __cpp_lib_move_only_function != 202110L
516 #     error "__cpp_lib_move_only_function should have the value 202110L in c++26"
517 #   endif
518 # else // _LIBCPP_VERSION
519 #   ifdef __cpp_lib_move_only_function
520 #     error "__cpp_lib_move_only_function should not be defined because it is unimplemented in libc++!"
521 #   endif
522 # endif
523
524 # ifndef __cpp_lib_not_fn
525 #   error "__cpp_lib_not_fn should be defined in c++26"
526 # endif
527 # if __cpp_lib_not_fn != 201603L
528 #   error "__cpp_lib_not_fn should have the value 201603L in c++26"
529 # endif
530
531 # ifndef __cpp_lib_ranges
532 #   error "__cpp_lib_ranges should be defined in c++26"
533 # endif
534 # if __cpp_lib_ranges != 202207L
535 #   error "__cpp_lib_ranges should have the value 202207L in c++26"
536 # endif
537
538 # ifndef __cpp_lib_reference_wrapper
539 #   error "__cpp_lib_reference_wrapper should be defined in c++26"
540 # endif
541 # if __cpp_lib_reference_wrapper != 202403L
542 #   error "__cpp_lib_reference_wrapper should have the value 202403L in c++26"
543 # endif
544
545 # ifndef __cpp_lib_result_of_sfinae
546 #   error "__cpp_lib_result_of_sfinae should be defined in c++26"
547 # endif
548 # if __cpp_lib_result_of_sfinae != 201210L
549 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++26"
550 # endif
551
552 # ifndef __cpp_lib_transparent_operators
553 #   error "__cpp_lib_transparent_operators should be defined in c++26"
554 # endif
555 # if __cpp_lib_transparent_operators != 201510L
556 #   error "__cpp_lib_transparent_operators should have the value 201510L in c++26"
557 # endif
558
559 # ifndef __cpp_lib_unwrap_ref
560 #   error "__cpp_lib_unwrap_ref should be defined in c++26"
561 # endif
562 # if __cpp_lib_unwrap_ref != 201811L
563 #   error "__cpp_lib_unwrap_ref should have the value 201811L in c++26"
564 # endif
565
566 #endif // TEST_STD_VER > 23
567