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# if !defined(_LIBCPP_VERSION)
539# ifndef __cpp_lib_reference_wrapper
540# error "__cpp_lib_reference_wrapper should be defined in c++26"
541# endif
542# if __cpp_lib_reference_wrapper != 202403L
543# error "__cpp_lib_reference_wrapper should have the value 202403L in c++26"
544# endif
545# else // _LIBCPP_VERSION
546# ifdef __cpp_lib_reference_wrapper
547# error "__cpp_lib_reference_wrapper should not be defined because it is unimplemented in libc++!"
548# endif
549# endif
550
551# ifndef __cpp_lib_result_of_sfinae
552# error "__cpp_lib_result_of_sfinae should be defined in c++26"
553# endif
554# if __cpp_lib_result_of_sfinae != 201210L
555# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++26"
556# endif
557
558# ifndef __cpp_lib_transparent_operators
559# error "__cpp_lib_transparent_operators should be defined in c++26"
560# endif
561# if __cpp_lib_transparent_operators != 201510L
562# error "__cpp_lib_transparent_operators should have the value 201510L in c++26"
563# endif
564
565# ifndef __cpp_lib_unwrap_ref
566# error "__cpp_lib_unwrap_ref should be defined in c++26"
567# endif
568# if __cpp_lib_unwrap_ref != 201811L
569# error "__cpp_lib_unwrap_ref should have the value 201811L in c++26"
570# endif
571
572#endif // TEST_STD_VER > 23
573
574

source code of libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp