libstdc++
version.h
Go to the documentation of this file.
1 // Copyright (C) 2023-2025 Free Software Foundation, Inc.
2 
3 // This file is part of the GNU ISO C++ Library. This library is free
4 // software; you can redistribute it and/or modify it under the
5 // terms of the GNU General Public License as published by the
6 // Free Software Foundation; either version 3, or (at your option)
7 // any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 
14 // Under Section 7 of GPL version 3, you are granted additional
15 // permissions described in the GCC Runtime Library Exception, version
16 // 3.1, as published by the Free Software Foundation.
17 
18 // You should have received a copy of the GNU General Public License and
19 // a copy of the GCC Runtime Library Exception along with this program;
20 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
21 // <http://www.gnu.org/licenses/>.
22 
23 // DO NOT EDIT THIS FILE (version.h)
24 //
25 // It has been AutoGen-ed
26 // From the definitions version.def
27 // and the template file version.tpl
28 
29 /** @file bits/version.h
30  * This is an internal header file, included by other library headers.
31  * Do not attempt to use it directly. @headername{version}
32  */
33 
34 // Usage guide:
35 //
36 // In your usual header, do something like:
37 //
38 // #define __glibcxx_want_ranges
39 // #define __glibcxx_want_concepts
40 // #include <bits/version.h>
41 //
42 // This will generate the FTMs you named, and let you use them in your code as
43 // if it was user code. All macros are also exposed under __glibcxx_NAME even
44 // if unwanted, to permit bits and other FTMs to depend on them for condtional
45 // computation without exposing extra FTMs to user code.
46 
47 #ifdef _GLIBCXX_SYSHDR
48 #pragma GCC system_header
49 #endif
50 
51 #include <bits/c++config.h>
52 
53 #if !defined(__cpp_lib_incomplete_container_elements)
54 # if _GLIBCXX_HOSTED
55 # define __glibcxx_incomplete_container_elements 201505L
56 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_incomplete_container_elements)
57 # define __cpp_lib_incomplete_container_elements 201505L
58 # endif
59 # endif
60 #endif /* !defined(__cpp_lib_incomplete_container_elements) && defined(__glibcxx_want_incomplete_container_elements) */
61 #undef __glibcxx_want_incomplete_container_elements
62 
63 #if !defined(__cpp_lib_uncaught_exceptions)
64 # if ((defined(__STRICT_ANSI__) && __cplusplus >= 201703L) || (!defined(__STRICT_ANSI__) && __cplusplus >= 199711L))
65 # define __glibcxx_uncaught_exceptions 201411L
66 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_uncaught_exceptions)
67 # define __cpp_lib_uncaught_exceptions 201411L
68 # endif
69 # endif
70 #endif /* !defined(__cpp_lib_uncaught_exceptions) && defined(__glibcxx_want_uncaught_exceptions) */
71 #undef __glibcxx_want_uncaught_exceptions
72 
73 #if !defined(__cpp_lib_allocator_traits_is_always_equal)
74 # if (__cplusplus >= 201103L)
75 # define __glibcxx_allocator_traits_is_always_equal 201411L
76 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_allocator_traits_is_always_equal)
77 # define __cpp_lib_allocator_traits_is_always_equal 201411L
78 # endif
79 # endif
80 #endif /* !defined(__cpp_lib_allocator_traits_is_always_equal) && defined(__glibcxx_want_allocator_traits_is_always_equal) */
81 #undef __glibcxx_want_allocator_traits_is_always_equal
82 
83 #if !defined(__cpp_lib_is_null_pointer)
84 # if (__cplusplus >= 201103L)
85 # define __glibcxx_is_null_pointer 201309L
86 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_null_pointer)
87 # define __cpp_lib_is_null_pointer 201309L
88 # endif
89 # endif
90 #endif /* !defined(__cpp_lib_is_null_pointer) && defined(__glibcxx_want_is_null_pointer) */
91 #undef __glibcxx_want_is_null_pointer
92 
93 #if !defined(__cpp_lib_result_of_sfinae)
94 # if (__cplusplus >= 201103L)
95 # define __glibcxx_result_of_sfinae 201210L
96 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_result_of_sfinae)
97 # define __cpp_lib_result_of_sfinae 201210L
98 # endif
99 # endif
100 #endif /* !defined(__cpp_lib_result_of_sfinae) && defined(__glibcxx_want_result_of_sfinae) */
101 #undef __glibcxx_want_result_of_sfinae
102 
103 #if !defined(__cpp_lib_shared_ptr_arrays)
104 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
105 # define __glibcxx_shared_ptr_arrays 201707L
106 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_shared_ptr_arrays)
107 # define __cpp_lib_shared_ptr_arrays 201707L
108 # endif
109 # elif (__cplusplus >= 201103L) && _GLIBCXX_HOSTED
110 # define __glibcxx_shared_ptr_arrays 201611L
111 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_shared_ptr_arrays)
112 # define __cpp_lib_shared_ptr_arrays 201611L
113 # endif
114 # endif
115 #endif /* !defined(__cpp_lib_shared_ptr_arrays) && defined(__glibcxx_want_shared_ptr_arrays) */
116 #undef __glibcxx_want_shared_ptr_arrays
117 
118 #if !defined(__cpp_lib_is_swappable)
119 # if ((defined(__STRICT_ANSI__) && __cplusplus >= 201703L) || (!defined(__STRICT_ANSI__) && __cplusplus >= 201103L))
120 # define __glibcxx_is_swappable 201603L
121 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_swappable)
122 # define __cpp_lib_is_swappable 201603L
123 # endif
124 # endif
125 #endif /* !defined(__cpp_lib_is_swappable) && defined(__glibcxx_want_is_swappable) */
126 #undef __glibcxx_want_is_swappable
127 
128 #if !defined(__cpp_lib_void_t)
129 # if ((defined(__STRICT_ANSI__) && __cplusplus >= 201703L) || (!defined(__STRICT_ANSI__) && __cplusplus >= 201103L))
130 # define __glibcxx_void_t 201411L
131 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_void_t)
132 # define __cpp_lib_void_t 201411L
133 # endif
134 # endif
135 #endif /* !defined(__cpp_lib_void_t) && defined(__glibcxx_want_void_t) */
136 #undef __glibcxx_want_void_t
137 
138 #if !defined(__cpp_lib_enable_shared_from_this)
139 # if ((defined(__STRICT_ANSI__) && __cplusplus >= 201703L) || (!defined(__STRICT_ANSI__) && __cplusplus >= 201103L)) && _GLIBCXX_HOSTED
140 # define __glibcxx_enable_shared_from_this 201603L
141 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_enable_shared_from_this)
142 # define __cpp_lib_enable_shared_from_this 201603L
143 # endif
144 # endif
145 #endif /* !defined(__cpp_lib_enable_shared_from_this) && defined(__glibcxx_want_enable_shared_from_this) */
146 #undef __glibcxx_want_enable_shared_from_this
147 
148 #if !defined(__cpp_lib_math_spec_funcs)
149 # if (__cplusplus >= 201103L)
150 # define __glibcxx_math_spec_funcs 201003L
151 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_math_spec_funcs)
152 # define __STDCPP_MATH_SPEC_FUNCS__ 201003L
153 # endif
154 # endif
155 #endif /* !defined(__cpp_lib_math_spec_funcs) && defined(__glibcxx_want_math_spec_funcs) */
156 #undef __glibcxx_want_math_spec_funcs
157 
158 #if !defined(__cpp_lib_coroutine)
159 # if (__cplusplus >= 201402L) && (__cpp_impl_coroutine)
160 # define __glibcxx_coroutine 201902L
161 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_coroutine)
162 # define __cpp_lib_coroutine 201902L
163 # endif
164 # endif
165 #endif /* !defined(__cpp_lib_coroutine) && defined(__glibcxx_want_coroutine) */
166 #undef __glibcxx_want_coroutine
167 
168 #if !defined(__cpp_lib_exchange_function)
169 # if (__cplusplus >= 201402L)
170 # define __glibcxx_exchange_function 201304L
171 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_exchange_function)
172 # define __cpp_lib_exchange_function 201304L
173 # endif
174 # endif
175 #endif /* !defined(__cpp_lib_exchange_function) && defined(__glibcxx_want_exchange_function) */
176 #undef __glibcxx_want_exchange_function
177 
178 #if !defined(__cpp_lib_integer_sequence)
179 # if (__cplusplus >= 201402L)
180 # define __glibcxx_integer_sequence 201304L
181 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_integer_sequence)
182 # define __cpp_lib_integer_sequence 201304L
183 # endif
184 # endif
185 #endif /* !defined(__cpp_lib_integer_sequence) && defined(__glibcxx_want_integer_sequence) */
186 #undef __glibcxx_want_integer_sequence
187 
188 #if !defined(__cpp_lib_integral_constant_callable)
189 # if (__cplusplus >= 201402L)
190 # define __glibcxx_integral_constant_callable 201304L
191 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_integral_constant_callable)
192 # define __cpp_lib_integral_constant_callable 201304L
193 # endif
194 # endif
195 #endif /* !defined(__cpp_lib_integral_constant_callable) && defined(__glibcxx_want_integral_constant_callable) */
196 #undef __glibcxx_want_integral_constant_callable
197 
198 #if !defined(__cpp_lib_is_final)
199 # if (__cplusplus >= 201402L)
200 # define __glibcxx_is_final 201402L
201 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_final)
202 # define __cpp_lib_is_final 201402L
203 # endif
204 # endif
205 #endif /* !defined(__cpp_lib_is_final) && defined(__glibcxx_want_is_final) */
206 #undef __glibcxx_want_is_final
207 
208 #if !defined(__cpp_lib_make_reverse_iterator)
209 # if (__cplusplus >= 201402L)
210 # define __glibcxx_make_reverse_iterator 201402L
211 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_make_reverse_iterator)
212 # define __cpp_lib_make_reverse_iterator 201402L
213 # endif
214 # endif
215 #endif /* !defined(__cpp_lib_make_reverse_iterator) && defined(__glibcxx_want_make_reverse_iterator) */
216 #undef __glibcxx_want_make_reverse_iterator
217 
218 #if !defined(__cpp_lib_null_iterators)
219 # if (__cplusplus >= 201402L)
220 # define __glibcxx_null_iterators 201304L
221 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_null_iterators)
222 # define __cpp_lib_null_iterators 201304L
223 # endif
224 # endif
225 #endif /* !defined(__cpp_lib_null_iterators) && defined(__glibcxx_want_null_iterators) */
226 #undef __glibcxx_want_null_iterators
227 
228 #if !defined(__cpp_lib_transformation_trait_aliases)
229 # if (__cplusplus >= 201402L)
230 # define __glibcxx_transformation_trait_aliases 201304L
231 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_transformation_trait_aliases)
232 # define __cpp_lib_transformation_trait_aliases 201304L
233 # endif
234 # endif
235 #endif /* !defined(__cpp_lib_transformation_trait_aliases) && defined(__glibcxx_want_transformation_trait_aliases) */
236 #undef __glibcxx_want_transformation_trait_aliases
237 
238 #if !defined(__cpp_lib_transparent_operators)
239 # if (__cplusplus >= 201402L)
240 # define __glibcxx_transparent_operators 201510L
241 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_transparent_operators)
242 # define __cpp_lib_transparent_operators 201510L
243 # endif
244 # endif
245 #endif /* !defined(__cpp_lib_transparent_operators) && defined(__glibcxx_want_transparent_operators) */
246 #undef __glibcxx_want_transparent_operators
247 
248 #if !defined(__cpp_lib_tuple_element_t)
249 # if (__cplusplus >= 201402L)
250 # define __glibcxx_tuple_element_t 201402L
251 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_tuple_element_t)
252 # define __cpp_lib_tuple_element_t 201402L
253 # endif
254 # endif
255 #endif /* !defined(__cpp_lib_tuple_element_t) && defined(__glibcxx_want_tuple_element_t) */
256 #undef __glibcxx_want_tuple_element_t
257 
258 #if !defined(__cpp_lib_tuples_by_type)
259 # if (__cplusplus >= 201402L)
260 # define __glibcxx_tuples_by_type 201304L
261 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_tuples_by_type)
262 # define __cpp_lib_tuples_by_type 201304L
263 # endif
264 # endif
265 #endif /* !defined(__cpp_lib_tuples_by_type) && defined(__glibcxx_want_tuples_by_type) */
266 #undef __glibcxx_want_tuples_by_type
267 
268 #if !defined(__cpp_lib_robust_nonmodifying_seq_ops)
269 # if (__cplusplus >= 201402L)
270 # define __glibcxx_robust_nonmodifying_seq_ops 201304L
271 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_robust_nonmodifying_seq_ops)
272 # define __cpp_lib_robust_nonmodifying_seq_ops 201304L
273 # endif
274 # endif
275 #endif /* !defined(__cpp_lib_robust_nonmodifying_seq_ops) && defined(__glibcxx_want_robust_nonmodifying_seq_ops) */
276 #undef __glibcxx_want_robust_nonmodifying_seq_ops
277 
278 #if !defined(__cpp_lib_to_chars)
279 # if (__cplusplus > 202302L) && (_GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 && __SIZE_WIDTH__ >= 32)
280 # define __glibcxx_to_chars 202306L
281 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_chars)
282 # define __cpp_lib_to_chars 202306L
283 # endif
284 # elif (__cplusplus >= 201402L) && (_GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 && __SIZE_WIDTH__ >= 32)
285 # define __glibcxx_to_chars 201611L
286 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_chars)
287 # define __cpp_lib_to_chars 201611L
288 # endif
289 # endif
290 #endif /* !defined(__cpp_lib_to_chars) && defined(__glibcxx_want_to_chars) */
291 #undef __glibcxx_want_to_chars
292 
293 #if !defined(__cpp_lib_chrono_udls)
294 # if (__cplusplus >= 201402L)
295 # define __glibcxx_chrono_udls 201304L
296 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_chrono_udls)
297 # define __cpp_lib_chrono_udls 201304L
298 # endif
299 # endif
300 #endif /* !defined(__cpp_lib_chrono_udls) && defined(__glibcxx_want_chrono_udls) */
301 #undef __glibcxx_want_chrono_udls
302 
303 #if !defined(__cpp_lib_complex_udls)
304 # if (__cplusplus >= 201402L) && _GLIBCXX_HOSTED
305 # define __glibcxx_complex_udls 201309L
306 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_complex_udls)
307 # define __cpp_lib_complex_udls 201309L
308 # endif
309 # endif
310 #endif /* !defined(__cpp_lib_complex_udls) && defined(__glibcxx_want_complex_udls) */
311 #undef __glibcxx_want_complex_udls
312 
313 #if !defined(__cpp_lib_generic_associative_lookup)
314 # if (__cplusplus >= 201402L) && _GLIBCXX_HOSTED
315 # define __glibcxx_generic_associative_lookup 201304L
316 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_generic_associative_lookup)
317 # define __cpp_lib_generic_associative_lookup 201304L
318 # endif
319 # endif
320 #endif /* !defined(__cpp_lib_generic_associative_lookup) && defined(__glibcxx_want_generic_associative_lookup) */
321 #undef __glibcxx_want_generic_associative_lookup
322 
323 #if !defined(__cpp_lib_make_unique)
324 # if (__cplusplus >= 201402L) && _GLIBCXX_HOSTED
325 # define __glibcxx_make_unique 201304L
326 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_make_unique)
327 # define __cpp_lib_make_unique 201304L
328 # endif
329 # endif
330 #endif /* !defined(__cpp_lib_make_unique) && defined(__glibcxx_want_make_unique) */
331 #undef __glibcxx_want_make_unique
332 
333 #if !defined(__cpp_lib_quoted_string_io)
334 # if (__cplusplus >= 201402L) && _GLIBCXX_HOSTED
335 # define __glibcxx_quoted_string_io 201304L
336 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_quoted_string_io)
337 # define __cpp_lib_quoted_string_io 201304L
338 # endif
339 # endif
340 #endif /* !defined(__cpp_lib_quoted_string_io) && defined(__glibcxx_want_quoted_string_io) */
341 #undef __glibcxx_want_quoted_string_io
342 
343 #if !defined(__cpp_lib_shared_timed_mutex)
344 # if (__cplusplus >= 201402L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
345 # define __glibcxx_shared_timed_mutex 201402L
346 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_shared_timed_mutex)
347 # define __cpp_lib_shared_timed_mutex 201402L
348 # endif
349 # endif
350 #endif /* !defined(__cpp_lib_shared_timed_mutex) && defined(__glibcxx_want_shared_timed_mutex) */
351 #undef __glibcxx_want_shared_timed_mutex
352 
353 #if !defined(__cpp_lib_string_udls)
354 # if (__cplusplus >= 201402L) && _GLIBCXX_HOSTED
355 # define __glibcxx_string_udls 201304L
356 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_udls)
357 # define __cpp_lib_string_udls 201304L
358 # endif
359 # endif
360 #endif /* !defined(__cpp_lib_string_udls) && defined(__glibcxx_want_string_udls) */
361 #undef __glibcxx_want_string_udls
362 
363 #if !defined(__cpp_lib_addressof_constexpr)
364 # if (__cplusplus >= 201703L)
365 # define __glibcxx_addressof_constexpr 201603L
366 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_addressof_constexpr)
367 # define __cpp_lib_addressof_constexpr 201603L
368 # endif
369 # endif
370 #endif /* !defined(__cpp_lib_addressof_constexpr) && defined(__glibcxx_want_addressof_constexpr) */
371 #undef __glibcxx_want_addressof_constexpr
372 
373 #if !defined(__cpp_lib_any)
374 # if (__cplusplus >= 201703L)
375 # define __glibcxx_any 201606L
376 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_any)
377 # define __cpp_lib_any 201606L
378 # endif
379 # endif
380 #endif /* !defined(__cpp_lib_any) && defined(__glibcxx_want_any) */
381 #undef __glibcxx_want_any
382 
383 #if !defined(__cpp_lib_apply)
384 # if (__cplusplus >= 201703L)
385 # define __glibcxx_apply 201603L
386 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_apply)
387 # define __cpp_lib_apply 201603L
388 # endif
389 # endif
390 #endif /* !defined(__cpp_lib_apply) && defined(__glibcxx_want_apply) */
391 #undef __glibcxx_want_apply
392 
393 #if !defined(__cpp_lib_as_const)
394 # if (__cplusplus >= 201703L)
395 # define __glibcxx_as_const 201510L
396 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_as_const)
397 # define __cpp_lib_as_const 201510L
398 # endif
399 # endif
400 #endif /* !defined(__cpp_lib_as_const) && defined(__glibcxx_want_as_const) */
401 #undef __glibcxx_want_as_const
402 
403 #if !defined(__cpp_lib_atomic_is_always_lock_free)
404 # if (__cplusplus >= 201703L)
405 # define __glibcxx_atomic_is_always_lock_free 201603L
406 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_is_always_lock_free)
407 # define __cpp_lib_atomic_is_always_lock_free 201603L
408 # endif
409 # endif
410 #endif /* !defined(__cpp_lib_atomic_is_always_lock_free) && defined(__glibcxx_want_atomic_is_always_lock_free) */
411 #undef __glibcxx_want_atomic_is_always_lock_free
412 
413 #if !defined(__cpp_lib_bool_constant)
414 # if (__cplusplus >= 201703L)
415 # define __glibcxx_bool_constant 201505L
416 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_bool_constant)
417 # define __cpp_lib_bool_constant 201505L
418 # endif
419 # endif
420 #endif /* !defined(__cpp_lib_bool_constant) && defined(__glibcxx_want_bool_constant) */
421 #undef __glibcxx_want_bool_constant
422 
423 #if !defined(__cpp_lib_byte)
424 # if (__cplusplus >= 201703L)
425 # define __glibcxx_byte 201603L
426 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_byte)
427 # define __cpp_lib_byte 201603L
428 # endif
429 # endif
430 #endif /* !defined(__cpp_lib_byte) && defined(__glibcxx_want_byte) */
431 #undef __glibcxx_want_byte
432 
433 #if !defined(__cpp_lib_has_unique_object_representations)
434 # if (__cplusplus >= 201703L) && (defined(_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP))
435 # define __glibcxx_has_unique_object_representations 201606L
436 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_has_unique_object_representations)
437 # define __cpp_lib_has_unique_object_representations 201606L
438 # endif
439 # endif
440 #endif /* !defined(__cpp_lib_has_unique_object_representations) && defined(__glibcxx_want_has_unique_object_representations) */
441 #undef __glibcxx_want_has_unique_object_representations
442 
443 #if !defined(__cpp_lib_hardware_interference_size)
444 # if (__cplusplus >= 201703L) && (defined(__GCC_DESTRUCTIVE_SIZE))
445 # define __glibcxx_hardware_interference_size 201703L
446 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardware_interference_size)
447 # define __cpp_lib_hardware_interference_size 201703L
448 # endif
449 # endif
450 #endif /* !defined(__cpp_lib_hardware_interference_size) && defined(__glibcxx_want_hardware_interference_size) */
451 #undef __glibcxx_want_hardware_interference_size
452 
453 #if !defined(__cpp_lib_invoke)
454 # if (__cplusplus >= 201703L)
455 # define __glibcxx_invoke 201411L
456 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_invoke)
457 # define __cpp_lib_invoke 201411L
458 # endif
459 # endif
460 #endif /* !defined(__cpp_lib_invoke) && defined(__glibcxx_want_invoke) */
461 #undef __glibcxx_want_invoke
462 
463 #if !defined(__cpp_lib_is_aggregate)
464 # if (__cplusplus >= 201703L) && (defined(_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE))
465 # define __glibcxx_is_aggregate 201703L
466 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_aggregate)
467 # define __cpp_lib_is_aggregate 201703L
468 # endif
469 # endif
470 #endif /* !defined(__cpp_lib_is_aggregate) && defined(__glibcxx_want_is_aggregate) */
471 #undef __glibcxx_want_is_aggregate
472 
473 #if !defined(__cpp_lib_is_invocable)
474 # if (__cplusplus >= 201703L)
475 # define __glibcxx_is_invocable 201703L
476 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_invocable)
477 # define __cpp_lib_is_invocable 201703L
478 # endif
479 # endif
480 #endif /* !defined(__cpp_lib_is_invocable) && defined(__glibcxx_want_is_invocable) */
481 #undef __glibcxx_want_is_invocable
482 
483 #if !defined(__cpp_lib_launder)
484 # if (__cplusplus >= 201703L) && (defined(_GLIBCXX_HAVE_BUILTIN_LAUNDER))
485 # define __glibcxx_launder 201606L
486 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_launder)
487 # define __cpp_lib_launder 201606L
488 # endif
489 # endif
490 #endif /* !defined(__cpp_lib_launder) && defined(__glibcxx_want_launder) */
491 #undef __glibcxx_want_launder
492 
493 #if !defined(__cpp_lib_logical_traits)
494 # if (__cplusplus >= 201703L)
495 # define __glibcxx_logical_traits 201510L
496 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_logical_traits)
497 # define __cpp_lib_logical_traits 201510L
498 # endif
499 # endif
500 #endif /* !defined(__cpp_lib_logical_traits) && defined(__glibcxx_want_logical_traits) */
501 #undef __glibcxx_want_logical_traits
502 
503 #if !defined(__cpp_lib_make_from_tuple)
504 # if (__cplusplus >= 201703L)
505 # define __glibcxx_make_from_tuple 201606L
506 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_make_from_tuple)
507 # define __cpp_lib_make_from_tuple 201606L
508 # endif
509 # endif
510 #endif /* !defined(__cpp_lib_make_from_tuple) && defined(__glibcxx_want_make_from_tuple) */
511 #undef __glibcxx_want_make_from_tuple
512 
513 #if !defined(__cpp_lib_not_fn)
514 # if (__cplusplus >= 201703L)
515 # define __glibcxx_not_fn 201603L
516 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_not_fn)
517 # define __cpp_lib_not_fn 201603L
518 # endif
519 # endif
520 #endif /* !defined(__cpp_lib_not_fn) && defined(__glibcxx_want_not_fn) */
521 #undef __glibcxx_want_not_fn
522 
523 #if !defined(__cpp_lib_type_trait_variable_templates)
524 # if (__cplusplus >= 201703L)
525 # define __glibcxx_type_trait_variable_templates 201510L
526 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_type_trait_variable_templates)
527 # define __cpp_lib_type_trait_variable_templates 201510L
528 # endif
529 # endif
530 #endif /* !defined(__cpp_lib_type_trait_variable_templates) && defined(__glibcxx_want_type_trait_variable_templates) */
531 #undef __glibcxx_want_type_trait_variable_templates
532 
533 #if !defined(__cpp_lib_variant)
534 # if (__cplusplus > 202302L) && (__cpp_concepts >= 202002L && __cpp_constexpr >= 201811L && __cpp_explicit_this_parameter)
535 # define __glibcxx_variant 202306L
536 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_variant)
537 # define __cpp_lib_variant 202306L
538 # endif
539 # elif (__cplusplus >= 202002L) && (__cpp_concepts >= 202002L && __cpp_constexpr >= 201811L)
540 # define __glibcxx_variant 202106L
541 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_variant)
542 # define __cpp_lib_variant 202106L
543 # endif
544 # elif (__cplusplus >= 201703L)
545 # define __glibcxx_variant 202102L
546 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_variant)
547 # define __cpp_lib_variant 202102L
548 # endif
549 # endif
550 #endif /* !defined(__cpp_lib_variant) && defined(__glibcxx_want_variant) */
551 #undef __glibcxx_want_variant
552 
553 #if !defined(__cpp_lib_lcm)
554 # if (__cplusplus >= 201703L)
555 # define __glibcxx_lcm 201606L
556 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_lcm)
557 # define __cpp_lib_lcm 201606L
558 # endif
559 # endif
560 #endif /* !defined(__cpp_lib_lcm) && defined(__glibcxx_want_lcm) */
561 #undef __glibcxx_want_lcm
562 
563 #if !defined(__cpp_lib_gcd)
564 # if (__cplusplus >= 201703L)
565 # define __glibcxx_gcd 201606L
566 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_gcd)
567 # define __cpp_lib_gcd 201606L
568 # endif
569 # endif
570 #endif /* !defined(__cpp_lib_gcd) && defined(__glibcxx_want_gcd) */
571 #undef __glibcxx_want_gcd
572 
573 #if !defined(__cpp_lib_gcd_lcm)
574 # if (__cplusplus >= 201703L)
575 # define __glibcxx_gcd_lcm 201606L
576 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_gcd_lcm)
577 # define __cpp_lib_gcd_lcm 201606L
578 # endif
579 # endif
580 #endif /* !defined(__cpp_lib_gcd_lcm) && defined(__glibcxx_want_gcd_lcm) */
581 #undef __glibcxx_want_gcd_lcm
582 
583 #if !defined(__cpp_lib_raw_memory_algorithms)
584 # if (__cplusplus > 202302L) && (__cpp_constexpr >= 202406L)
585 # define __glibcxx_raw_memory_algorithms 202411L
586 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_raw_memory_algorithms)
587 # define __cpp_lib_raw_memory_algorithms 202411L
588 # endif
589 # elif (__cplusplus >= 201703L)
590 # define __glibcxx_raw_memory_algorithms 201606L
591 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_raw_memory_algorithms)
592 # define __cpp_lib_raw_memory_algorithms 201606L
593 # endif
594 # endif
595 #endif /* !defined(__cpp_lib_raw_memory_algorithms) && defined(__glibcxx_want_raw_memory_algorithms) */
596 #undef __glibcxx_want_raw_memory_algorithms
597 
598 #if !defined(__cpp_lib_array_constexpr)
599 # if (__cplusplus >= 202002L)
600 # define __glibcxx_array_constexpr 201811L
601 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_array_constexpr)
602 # define __cpp_lib_array_constexpr 201811L
603 # endif
604 # elif (__cplusplus >= 201703L)
605 # define __glibcxx_array_constexpr 201803L
606 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_array_constexpr)
607 # define __cpp_lib_array_constexpr 201803L
608 # endif
609 # endif
610 #endif /* !defined(__cpp_lib_array_constexpr) && defined(__glibcxx_want_array_constexpr) */
611 #undef __glibcxx_want_array_constexpr
612 
613 #if !defined(__cpp_lib_nonmember_container_access)
614 # if (__cplusplus >= 201703L)
615 # define __glibcxx_nonmember_container_access 201411L
616 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_nonmember_container_access)
617 # define __cpp_lib_nonmember_container_access 201411L
618 # endif
619 # endif
620 #endif /* !defined(__cpp_lib_nonmember_container_access) && defined(__glibcxx_want_nonmember_container_access) */
621 #undef __glibcxx_want_nonmember_container_access
622 
623 #if !defined(__cpp_lib_clamp)
624 # if (__cplusplus >= 201703L)
625 # define __glibcxx_clamp 201603L
626 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_clamp)
627 # define __cpp_lib_clamp 201603L
628 # endif
629 # endif
630 #endif /* !defined(__cpp_lib_clamp) && defined(__glibcxx_want_clamp) */
631 #undef __glibcxx_want_clamp
632 
633 #if !defined(__cpp_lib_sample)
634 # if (__cplusplus >= 201703L)
635 # define __glibcxx_sample 201603L
636 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_sample)
637 # define __cpp_lib_sample 201603L
638 # endif
639 # endif
640 #endif /* !defined(__cpp_lib_sample) && defined(__glibcxx_want_sample) */
641 #undef __glibcxx_want_sample
642 
643 #if !defined(__cpp_lib_boyer_moore_searcher)
644 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
645 # define __glibcxx_boyer_moore_searcher 201603L
646 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_boyer_moore_searcher)
647 # define __cpp_lib_boyer_moore_searcher 201603L
648 # endif
649 # endif
650 #endif /* !defined(__cpp_lib_boyer_moore_searcher) && defined(__glibcxx_want_boyer_moore_searcher) */
651 #undef __glibcxx_want_boyer_moore_searcher
652 
653 #if !defined(__cpp_lib_chrono)
654 # if (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED
655 # define __glibcxx_chrono 201907L
656 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_chrono)
657 # define __cpp_lib_chrono 201907L
658 # endif
659 # elif (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
660 # define __glibcxx_chrono 201611L
661 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_chrono)
662 # define __cpp_lib_chrono 201611L
663 # endif
664 # endif
665 #endif /* !defined(__cpp_lib_chrono) && defined(__glibcxx_want_chrono) */
666 #undef __glibcxx_want_chrono
667 
668 #if !defined(__cpp_lib_execution)
669 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
670 # define __glibcxx_execution 201902L
671 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_execution)
672 # define __cpp_lib_execution 201902L
673 # endif
674 # endif
675 #endif /* !defined(__cpp_lib_execution) && defined(__glibcxx_want_execution) */
676 #undef __glibcxx_want_execution
677 
678 #if !defined(__cpp_lib_filesystem)
679 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
680 # define __glibcxx_filesystem 201703L
681 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_filesystem)
682 # define __cpp_lib_filesystem 201703L
683 # endif
684 # endif
685 #endif /* !defined(__cpp_lib_filesystem) && defined(__glibcxx_want_filesystem) */
686 #undef __glibcxx_want_filesystem
687 
688 #if !defined(__cpp_lib_hypot)
689 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
690 # define __glibcxx_hypot 201603L
691 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_hypot)
692 # define __cpp_lib_hypot 201603L
693 # endif
694 # endif
695 #endif /* !defined(__cpp_lib_hypot) && defined(__glibcxx_want_hypot) */
696 #undef __glibcxx_want_hypot
697 
698 #if !defined(__cpp_lib_map_try_emplace)
699 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
700 # define __glibcxx_map_try_emplace 201411L
701 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_map_try_emplace)
702 # define __cpp_lib_map_try_emplace 201411L
703 # endif
704 # endif
705 #endif /* !defined(__cpp_lib_map_try_emplace) && defined(__glibcxx_want_map_try_emplace) */
706 #undef __glibcxx_want_map_try_emplace
707 
708 #if !defined(__cpp_lib_math_special_functions)
709 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
710 # define __glibcxx_math_special_functions 201603L
711 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_math_special_functions)
712 # define __cpp_lib_math_special_functions 201603L
713 # endif
714 # endif
715 #endif /* !defined(__cpp_lib_math_special_functions) && defined(__glibcxx_want_math_special_functions) */
716 #undef __glibcxx_want_math_special_functions
717 
718 #if !defined(__cpp_lib_memory_resource)
719 # if (__cplusplus >= 201703L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
720 # define __glibcxx_memory_resource 201603L
721 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_memory_resource)
722 # define __cpp_lib_memory_resource 201603L
723 # endif
724 # elif (__cplusplus >= 201703L) && !defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
725 # define __glibcxx_memory_resource 1L
726 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_memory_resource)
727 # define __cpp_lib_memory_resource 1L
728 # endif
729 # endif
730 #endif /* !defined(__cpp_lib_memory_resource) && defined(__glibcxx_want_memory_resource) */
731 #undef __glibcxx_want_memory_resource
732 
733 #if !defined(__cpp_lib_node_extract)
734 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
735 # define __glibcxx_node_extract 201606L
736 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_node_extract)
737 # define __cpp_lib_node_extract 201606L
738 # endif
739 # endif
740 #endif /* !defined(__cpp_lib_node_extract) && defined(__glibcxx_want_node_extract) */
741 #undef __glibcxx_want_node_extract
742 
743 #if !defined(__cpp_lib_parallel_algorithm)
744 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
745 # define __glibcxx_parallel_algorithm 201603L
746 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_parallel_algorithm)
747 # define __cpp_lib_parallel_algorithm 201603L
748 # endif
749 # endif
750 #endif /* !defined(__cpp_lib_parallel_algorithm) && defined(__glibcxx_want_parallel_algorithm) */
751 #undef __glibcxx_want_parallel_algorithm
752 
753 #if !defined(__cpp_lib_scoped_lock)
754 # if (__cplusplus >= 201703L)
755 # define __glibcxx_scoped_lock 201703L
756 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_scoped_lock)
757 # define __cpp_lib_scoped_lock 201703L
758 # endif
759 # endif
760 #endif /* !defined(__cpp_lib_scoped_lock) && defined(__glibcxx_want_scoped_lock) */
761 #undef __glibcxx_want_scoped_lock
762 
763 #if !defined(__cpp_lib_shared_mutex)
764 # if (__cplusplus >= 201703L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
765 # define __glibcxx_shared_mutex 201505L
766 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_shared_mutex)
767 # define __cpp_lib_shared_mutex 201505L
768 # endif
769 # endif
770 #endif /* !defined(__cpp_lib_shared_mutex) && defined(__glibcxx_want_shared_mutex) */
771 #undef __glibcxx_want_shared_mutex
772 
773 #if !defined(__cpp_lib_shared_ptr_weak_type)
774 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
775 # define __glibcxx_shared_ptr_weak_type 201606L
776 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_shared_ptr_weak_type)
777 # define __cpp_lib_shared_ptr_weak_type 201606L
778 # endif
779 # endif
780 #endif /* !defined(__cpp_lib_shared_ptr_weak_type) && defined(__glibcxx_want_shared_ptr_weak_type) */
781 #undef __glibcxx_want_shared_ptr_weak_type
782 
783 #if !defined(__cpp_lib_string_view)
784 # if (__cplusplus > 202302L) && _GLIBCXX_HOSTED
785 # define __glibcxx_string_view 202403L
786 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_view)
787 # define __cpp_lib_string_view 202403L
788 # endif
789 # elif (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
790 # define __glibcxx_string_view 201803L
791 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_view)
792 # define __cpp_lib_string_view 201803L
793 # endif
794 # endif
795 #endif /* !defined(__cpp_lib_string_view) && defined(__glibcxx_want_string_view) */
796 #undef __glibcxx_want_string_view
797 
798 #if !defined(__cpp_lib_unordered_map_try_emplace)
799 # if (__cplusplus >= 201703L) && _GLIBCXX_HOSTED
800 # define __glibcxx_unordered_map_try_emplace 201411L
801 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_unordered_map_try_emplace)
802 # define __cpp_lib_unordered_map_try_emplace 201411L
803 # endif
804 # endif
805 #endif /* !defined(__cpp_lib_unordered_map_try_emplace) && defined(__glibcxx_want_unordered_map_try_emplace) */
806 #undef __glibcxx_want_unordered_map_try_emplace
807 
808 #if !defined(__cpp_lib_assume_aligned)
809 # if (__cplusplus >= 202002L)
810 # define __glibcxx_assume_aligned 201811L
811 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_assume_aligned)
812 # define __cpp_lib_assume_aligned 201811L
813 # endif
814 # endif
815 #endif /* !defined(__cpp_lib_assume_aligned) && defined(__glibcxx_want_assume_aligned) */
816 #undef __glibcxx_want_assume_aligned
817 
818 #if !defined(__cpp_lib_atomic_flag_test)
819 # if (__cplusplus >= 202002L)
820 # define __glibcxx_atomic_flag_test 201907L
821 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_flag_test)
822 # define __cpp_lib_atomic_flag_test 201907L
823 # endif
824 # endif
825 #endif /* !defined(__cpp_lib_atomic_flag_test) && defined(__glibcxx_want_atomic_flag_test) */
826 #undef __glibcxx_want_atomic_flag_test
827 
828 #if !defined(__cpp_lib_atomic_float)
829 # if (__cplusplus >= 202002L)
830 # define __glibcxx_atomic_float 201711L
831 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_float)
832 # define __cpp_lib_atomic_float 201711L
833 # endif
834 # endif
835 #endif /* !defined(__cpp_lib_atomic_float) && defined(__glibcxx_want_atomic_float) */
836 #undef __glibcxx_want_atomic_float
837 
838 #if !defined(__cpp_lib_atomic_lock_free_type_aliases)
839 # if (__cplusplus >= 202002L) && ((__GCC_ATOMIC_INT_LOCK_FREE | __GCC_ATOMIC_LONG_LOCK_FREE | __GCC_ATOMIC_CHAR_LOCK_FREE) & 2)
840 # define __glibcxx_atomic_lock_free_type_aliases 201907L
841 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_lock_free_type_aliases)
842 # define __cpp_lib_atomic_lock_free_type_aliases 201907L
843 # endif
844 # endif
845 #endif /* !defined(__cpp_lib_atomic_lock_free_type_aliases) && defined(__glibcxx_want_atomic_lock_free_type_aliases) */
846 #undef __glibcxx_want_atomic_lock_free_type_aliases
847 
848 #if !defined(__cpp_lib_atomic_ref)
849 # if (__cplusplus >= 202002L)
850 # define __glibcxx_atomic_ref 201806L
851 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_ref)
852 # define __cpp_lib_atomic_ref 201806L
853 # endif
854 # endif
855 #endif /* !defined(__cpp_lib_atomic_ref) && defined(__glibcxx_want_atomic_ref) */
856 #undef __glibcxx_want_atomic_ref
857 
858 #if !defined(__cpp_lib_atomic_value_initialization)
859 # if (__cplusplus >= 202002L) && (__cpp_concepts >= 201907L)
860 # define __glibcxx_atomic_value_initialization 201911L
861 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_value_initialization)
862 # define __cpp_lib_atomic_value_initialization 201911L
863 # endif
864 # endif
865 #endif /* !defined(__cpp_lib_atomic_value_initialization) && defined(__glibcxx_want_atomic_value_initialization) */
866 #undef __glibcxx_want_atomic_value_initialization
867 
868 #if !defined(__cpp_lib_bind_front)
869 # if (__cplusplus >= 202002L)
870 # define __glibcxx_bind_front 201907L
871 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_bind_front)
872 # define __cpp_lib_bind_front 201907L
873 # endif
874 # endif
875 #endif /* !defined(__cpp_lib_bind_front) && defined(__glibcxx_want_bind_front) */
876 #undef __glibcxx_want_bind_front
877 
878 #if !defined(__cpp_lib_bind_back)
879 # if (__cplusplus >= 202100L) && (__cpp_explicit_this_parameter)
880 # define __glibcxx_bind_back 202202L
881 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_bind_back)
882 # define __cpp_lib_bind_back 202202L
883 # endif
884 # endif
885 #endif /* !defined(__cpp_lib_bind_back) && defined(__glibcxx_want_bind_back) */
886 #undef __glibcxx_want_bind_back
887 
888 #if !defined(__cpp_lib_starts_ends_with)
889 # if (__cplusplus >= 202002L)
890 # define __glibcxx_starts_ends_with 201711L
891 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_starts_ends_with)
892 # define __cpp_lib_starts_ends_with 201711L
893 # endif
894 # endif
895 #endif /* !defined(__cpp_lib_starts_ends_with) && defined(__glibcxx_want_starts_ends_with) */
896 #undef __glibcxx_want_starts_ends_with
897 
898 #if !defined(__cpp_lib_bit_cast)
899 # if (__cplusplus >= 202002L) && (__has_builtin(__builtin_bit_cast))
900 # define __glibcxx_bit_cast 201806L
901 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_bit_cast)
902 # define __cpp_lib_bit_cast 201806L
903 # endif
904 # endif
905 #endif /* !defined(__cpp_lib_bit_cast) && defined(__glibcxx_want_bit_cast) */
906 #undef __glibcxx_want_bit_cast
907 
908 #if !defined(__cpp_lib_bitops)
909 # if (__cplusplus >= 202002L)
910 # define __glibcxx_bitops 201907L
911 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_bitops)
912 # define __cpp_lib_bitops 201907L
913 # endif
914 # endif
915 #endif /* !defined(__cpp_lib_bitops) && defined(__glibcxx_want_bitops) */
916 #undef __glibcxx_want_bitops
917 
918 #if !defined(__cpp_lib_bounded_array_traits)
919 # if (__cplusplus >= 202002L)
920 # define __glibcxx_bounded_array_traits 201902L
921 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_bounded_array_traits)
922 # define __cpp_lib_bounded_array_traits 201902L
923 # endif
924 # endif
925 #endif /* !defined(__cpp_lib_bounded_array_traits) && defined(__glibcxx_want_bounded_array_traits) */
926 #undef __glibcxx_want_bounded_array_traits
927 
928 #if !defined(__cpp_lib_concepts)
929 # if (__cplusplus >= 202002L) && (__cpp_concepts >= 201907L)
930 # define __glibcxx_concepts 202002L
931 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_concepts)
932 # define __cpp_lib_concepts 202002L
933 # endif
934 # endif
935 #endif /* !defined(__cpp_lib_concepts) && defined(__glibcxx_want_concepts) */
936 #undef __glibcxx_want_concepts
937 
938 #if !defined(__cpp_lib_optional)
939 # if (__cplusplus >= 202100L) && (__glibcxx_concepts)
940 # define __glibcxx_optional 202110L
941 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_optional)
942 # define __cpp_lib_optional 202110L
943 # endif
944 # elif (__cplusplus >= 202002L)
945 # define __glibcxx_optional 202106L
946 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_optional)
947 # define __cpp_lib_optional 202106L
948 # endif
949 # elif (__cplusplus >= 201703L)
950 # define __glibcxx_optional 201606L
951 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_optional)
952 # define __cpp_lib_optional 201606L
953 # endif
954 # endif
955 #endif /* !defined(__cpp_lib_optional) && defined(__glibcxx_want_optional) */
956 #undef __glibcxx_want_optional
957 
958 #if !defined(__cpp_lib_destroying_delete)
959 # if (__cplusplus >= 202002L) && (__cpp_impl_destroying_delete)
960 # define __glibcxx_destroying_delete 201806L
961 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_destroying_delete)
962 # define __cpp_lib_destroying_delete 201806L
963 # endif
964 # endif
965 #endif /* !defined(__cpp_lib_destroying_delete) && defined(__glibcxx_want_destroying_delete) */
966 #undef __glibcxx_want_destroying_delete
967 
968 #if !defined(__cpp_lib_constexpr_string_view)
969 # if (__cplusplus >= 202002L)
970 # define __glibcxx_constexpr_string_view 201811L
971 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string_view)
972 # define __cpp_lib_constexpr_string_view 201811L
973 # endif
974 # endif
975 #endif /* !defined(__cpp_lib_constexpr_string_view) && defined(__glibcxx_want_constexpr_string_view) */
976 #undef __glibcxx_want_constexpr_string_view
977 
978 #if !defined(__cpp_lib_endian)
979 # if (__cplusplus >= 202002L)
980 # define __glibcxx_endian 201907L
981 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_endian)
982 # define __cpp_lib_endian 201907L
983 # endif
984 # endif
985 #endif /* !defined(__cpp_lib_endian) && defined(__glibcxx_want_endian) */
986 #undef __glibcxx_want_endian
987 
988 #if !defined(__cpp_lib_int_pow2)
989 # if (__cplusplus >= 202002L)
990 # define __glibcxx_int_pow2 202002L
991 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_int_pow2)
992 # define __cpp_lib_int_pow2 202002L
993 # endif
994 # endif
995 #endif /* !defined(__cpp_lib_int_pow2) && defined(__glibcxx_want_int_pow2) */
996 #undef __glibcxx_want_int_pow2
997 
998 #if !defined(__cpp_lib_integer_comparison_functions)
999 # if (__cplusplus >= 202002L)
1000 # define __glibcxx_integer_comparison_functions 202002L
1001 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_integer_comparison_functions)
1002 # define __cpp_lib_integer_comparison_functions 202002L
1003 # endif
1004 # endif
1005 #endif /* !defined(__cpp_lib_integer_comparison_functions) && defined(__glibcxx_want_integer_comparison_functions) */
1006 #undef __glibcxx_want_integer_comparison_functions
1007 
1008 #if !defined(__cpp_lib_is_constant_evaluated)
1009 # if (__cplusplus >= 202002L) && (defined(_GLIBCXX_HAVE_IS_CONSTANT_EVALUATED))
1010 # define __glibcxx_is_constant_evaluated 201811L
1011 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_constant_evaluated)
1012 # define __cpp_lib_is_constant_evaluated 201811L
1013 # endif
1014 # endif
1015 #endif /* !defined(__cpp_lib_is_constant_evaluated) && defined(__glibcxx_want_is_constant_evaluated) */
1016 #undef __glibcxx_want_is_constant_evaluated
1017 
1018 #if !defined(__cpp_lib_constexpr_char_traits)
1019 # if (__cplusplus >= 202002L) && (defined(__glibcxx_is_constant_evaluated))
1020 # define __glibcxx_constexpr_char_traits 201811L
1021 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_char_traits)
1022 # define __cpp_lib_constexpr_char_traits 201811L
1023 # endif
1024 # elif (__cplusplus >= 201703L) && (_GLIBCXX_HAVE_IS_CONSTANT_EVALUATED)
1025 # define __glibcxx_constexpr_char_traits 201611L
1026 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_char_traits)
1027 # define __cpp_lib_constexpr_char_traits 201611L
1028 # endif
1029 # endif
1030 #endif /* !defined(__cpp_lib_constexpr_char_traits) && defined(__glibcxx_want_constexpr_char_traits) */
1031 #undef __glibcxx_want_constexpr_char_traits
1032 
1033 #if !defined(__cpp_lib_is_layout_compatible)
1034 # if (__cplusplus >= 202002L) && (__has_builtin(__is_layout_compatible) && __has_builtin(__builtin_is_corresponding_member))
1035 # define __glibcxx_is_layout_compatible 201907L
1036 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_layout_compatible)
1037 # define __cpp_lib_is_layout_compatible 201907L
1038 # endif
1039 # endif
1040 #endif /* !defined(__cpp_lib_is_layout_compatible) && defined(__glibcxx_want_is_layout_compatible) */
1041 #undef __glibcxx_want_is_layout_compatible
1042 
1043 #if !defined(__cpp_lib_is_nothrow_convertible)
1044 # if (__cplusplus >= 202002L)
1045 # define __glibcxx_is_nothrow_convertible 201806L
1046 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_nothrow_convertible)
1047 # define __cpp_lib_is_nothrow_convertible 201806L
1048 # endif
1049 # endif
1050 #endif /* !defined(__cpp_lib_is_nothrow_convertible) && defined(__glibcxx_want_is_nothrow_convertible) */
1051 #undef __glibcxx_want_is_nothrow_convertible
1052 
1053 #if !defined(__cpp_lib_is_pointer_interconvertible)
1054 # if (__cplusplus >= 202002L) && (__has_builtin(__is_pointer_interconvertible_base_of) && __has_builtin(__builtin_is_pointer_interconvertible_with_class))
1055 # define __glibcxx_is_pointer_interconvertible 201907L
1056 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_pointer_interconvertible)
1057 # define __cpp_lib_is_pointer_interconvertible 201907L
1058 # endif
1059 # endif
1060 #endif /* !defined(__cpp_lib_is_pointer_interconvertible) && defined(__glibcxx_want_is_pointer_interconvertible) */
1061 #undef __glibcxx_want_is_pointer_interconvertible
1062 
1063 #if !defined(__cpp_lib_math_constants)
1064 # if (__cplusplus >= 202002L)
1065 # define __glibcxx_math_constants 201907L
1066 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_math_constants)
1067 # define __cpp_lib_math_constants 201907L
1068 # endif
1069 # endif
1070 #endif /* !defined(__cpp_lib_math_constants) && defined(__glibcxx_want_math_constants) */
1071 #undef __glibcxx_want_math_constants
1072 
1073 #if !defined(__cpp_lib_make_obj_using_allocator)
1074 # if (__cplusplus >= 202002L) && (__cpp_concepts)
1075 # define __glibcxx_make_obj_using_allocator 201811L
1076 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_make_obj_using_allocator)
1077 # define __cpp_lib_make_obj_using_allocator 201811L
1078 # endif
1079 # endif
1080 #endif /* !defined(__cpp_lib_make_obj_using_allocator) && defined(__glibcxx_want_make_obj_using_allocator) */
1081 #undef __glibcxx_want_make_obj_using_allocator
1082 
1083 #if !defined(__cpp_lib_remove_cvref)
1084 # if (__cplusplus >= 202002L)
1085 # define __glibcxx_remove_cvref 201711L
1086 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_remove_cvref)
1087 # define __cpp_lib_remove_cvref 201711L
1088 # endif
1089 # endif
1090 #endif /* !defined(__cpp_lib_remove_cvref) && defined(__glibcxx_want_remove_cvref) */
1091 #undef __glibcxx_want_remove_cvref
1092 
1093 #if !defined(__cpp_lib_source_location)
1094 # if (__cplusplus >= 202002L) && (__has_builtin(__builtin_source_location))
1095 # define __glibcxx_source_location 201907L
1096 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_source_location)
1097 # define __cpp_lib_source_location 201907L
1098 # endif
1099 # endif
1100 #endif /* !defined(__cpp_lib_source_location) && defined(__glibcxx_want_source_location) */
1101 #undef __glibcxx_want_source_location
1102 
1103 #if !defined(__cpp_lib_span)
1104 # if (__cplusplus > 202302L) && (__glibcxx_concepts)
1105 # define __glibcxx_span 202311L
1106 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_span)
1107 # define __cpp_lib_span 202311L
1108 # endif
1109 # elif (__cplusplus >= 202002L) && (__glibcxx_concepts)
1110 # define __glibcxx_span 202002L
1111 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_span)
1112 # define __cpp_lib_span 202002L
1113 # endif
1114 # endif
1115 #endif /* !defined(__cpp_lib_span) && defined(__glibcxx_want_span) */
1116 #undef __glibcxx_want_span
1117 
1118 #if !defined(__cpp_lib_ssize)
1119 # if (__cplusplus >= 202002L)
1120 # define __glibcxx_ssize 201902L
1121 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ssize)
1122 # define __cpp_lib_ssize 201902L
1123 # endif
1124 # endif
1125 #endif /* !defined(__cpp_lib_ssize) && defined(__glibcxx_want_ssize) */
1126 #undef __glibcxx_want_ssize
1127 
1128 #if !defined(__cpp_lib_three_way_comparison)
1129 # if (__cplusplus >= 202002L) && (__cpp_impl_three_way_comparison >= 201907L && __glibcxx_concepts)
1130 # define __glibcxx_three_way_comparison 201907L
1131 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_three_way_comparison)
1132 # define __cpp_lib_three_way_comparison 201907L
1133 # endif
1134 # endif
1135 #endif /* !defined(__cpp_lib_three_way_comparison) && defined(__glibcxx_want_three_way_comparison) */
1136 #undef __glibcxx_want_three_way_comparison
1137 
1138 #if !defined(__cpp_lib_to_address)
1139 # if (__cplusplus >= 202002L)
1140 # define __glibcxx_to_address 201711L
1141 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_address)
1142 # define __cpp_lib_to_address 201711L
1143 # endif
1144 # endif
1145 #endif /* !defined(__cpp_lib_to_address) && defined(__glibcxx_want_to_address) */
1146 #undef __glibcxx_want_to_address
1147 
1148 #if !defined(__cpp_lib_to_array)
1149 # if (__cplusplus >= 202002L) && (__cpp_generic_lambdas >= 201707L)
1150 # define __glibcxx_to_array 201907L
1151 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_array)
1152 # define __cpp_lib_to_array 201907L
1153 # endif
1154 # endif
1155 #endif /* !defined(__cpp_lib_to_array) && defined(__glibcxx_want_to_array) */
1156 #undef __glibcxx_want_to_array
1157 
1158 #if !defined(__cpp_lib_type_identity)
1159 # if (__cplusplus >= 202002L)
1160 # define __glibcxx_type_identity 201806L
1161 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_type_identity)
1162 # define __cpp_lib_type_identity 201806L
1163 # endif
1164 # endif
1165 #endif /* !defined(__cpp_lib_type_identity) && defined(__glibcxx_want_type_identity) */
1166 #undef __glibcxx_want_type_identity
1167 
1168 #if !defined(__cpp_lib_unwrap_ref)
1169 # if (__cplusplus >= 202002L)
1170 # define __glibcxx_unwrap_ref 201811L
1171 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_unwrap_ref)
1172 # define __cpp_lib_unwrap_ref 201811L
1173 # endif
1174 # endif
1175 #endif /* !defined(__cpp_lib_unwrap_ref) && defined(__glibcxx_want_unwrap_ref) */
1176 #undef __glibcxx_want_unwrap_ref
1177 
1178 #if !defined(__cpp_lib_constexpr_iterator)
1179 # if (__cplusplus >= 202002L)
1180 # define __glibcxx_constexpr_iterator 201811L
1181 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_iterator)
1182 # define __cpp_lib_constexpr_iterator 201811L
1183 # endif
1184 # endif
1185 #endif /* !defined(__cpp_lib_constexpr_iterator) && defined(__glibcxx_want_constexpr_iterator) */
1186 #undef __glibcxx_want_constexpr_iterator
1187 
1188 #if !defined(__cpp_lib_interpolate)
1189 # if (__cplusplus >= 202002L)
1190 # define __glibcxx_interpolate 201902L
1191 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_interpolate)
1192 # define __cpp_lib_interpolate 201902L
1193 # endif
1194 # endif
1195 #endif /* !defined(__cpp_lib_interpolate) && defined(__glibcxx_want_interpolate) */
1196 #undef __glibcxx_want_interpolate
1197 
1198 #if !defined(__cpp_lib_constexpr_utility)
1199 # if (__cplusplus >= 202002L)
1200 # define __glibcxx_constexpr_utility 201811L
1201 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_utility)
1202 # define __cpp_lib_constexpr_utility 201811L
1203 # endif
1204 # endif
1205 #endif /* !defined(__cpp_lib_constexpr_utility) && defined(__glibcxx_want_constexpr_utility) */
1206 #undef __glibcxx_want_constexpr_utility
1207 
1208 #if !defined(__cpp_lib_shift)
1209 # if (__cplusplus >= 202002L)
1210 # define __glibcxx_shift 201806L
1211 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_shift)
1212 # define __cpp_lib_shift 201806L
1213 # endif
1214 # endif
1215 #endif /* !defined(__cpp_lib_shift) && defined(__glibcxx_want_shift) */
1216 #undef __glibcxx_want_shift
1217 
1218 #if !defined(__cpp_lib_ranges)
1219 # if (__cplusplus > 202302L) && (__glibcxx_concepts)
1220 # define __glibcxx_ranges 202406L
1221 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges)
1222 # define __cpp_lib_ranges 202406L
1223 # endif
1224 # elif (__cplusplus >= 202100L) && (__glibcxx_concepts)
1225 # define __glibcxx_ranges 202302L
1226 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges)
1227 # define __cpp_lib_ranges 202302L
1228 # endif
1229 # elif (__cplusplus >= 202002L) && (__glibcxx_concepts)
1230 # define __glibcxx_ranges 202110L
1231 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges)
1232 # define __cpp_lib_ranges 202110L
1233 # endif
1234 # endif
1235 #endif /* !defined(__cpp_lib_ranges) && defined(__glibcxx_want_ranges) */
1236 #undef __glibcxx_want_ranges
1237 
1238 #if !defined(__cpp_lib_constexpr_numeric)
1239 # if (__cplusplus >= 202002L)
1240 # define __glibcxx_constexpr_numeric 201911L
1241 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_numeric)
1242 # define __cpp_lib_constexpr_numeric 201911L
1243 # endif
1244 # endif
1245 #endif /* !defined(__cpp_lib_constexpr_numeric) && defined(__glibcxx_want_constexpr_numeric) */
1246 #undef __glibcxx_want_constexpr_numeric
1247 
1248 #if !defined(__cpp_lib_constexpr_functional)
1249 # if (__cplusplus >= 202002L)
1250 # define __glibcxx_constexpr_functional 201907L
1251 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_functional)
1252 # define __cpp_lib_constexpr_functional 201907L
1253 # endif
1254 # endif
1255 #endif /* !defined(__cpp_lib_constexpr_functional) && defined(__glibcxx_want_constexpr_functional) */
1256 #undef __glibcxx_want_constexpr_functional
1257 
1258 #if !defined(__cpp_lib_constexpr_algorithms)
1259 # if (__cplusplus > 202302L)
1260 # define __glibcxx_constexpr_algorithms 202306L
1261 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_algorithms)
1262 # define __cpp_lib_constexpr_algorithms 202306L
1263 # endif
1264 # elif (__cplusplus >= 202002L)
1265 # define __glibcxx_constexpr_algorithms 201806L
1266 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_algorithms)
1267 # define __cpp_lib_constexpr_algorithms 201806L
1268 # endif
1269 # endif
1270 #endif /* !defined(__cpp_lib_constexpr_algorithms) && defined(__glibcxx_want_constexpr_algorithms) */
1271 #undef __glibcxx_want_constexpr_algorithms
1272 
1273 #if !defined(__cpp_lib_constexpr_tuple)
1274 # if (__cplusplus >= 202002L)
1275 # define __glibcxx_constexpr_tuple 201811L
1276 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_tuple)
1277 # define __cpp_lib_constexpr_tuple 201811L
1278 # endif
1279 # endif
1280 #endif /* !defined(__cpp_lib_constexpr_tuple) && defined(__glibcxx_want_constexpr_tuple) */
1281 #undef __glibcxx_want_constexpr_tuple
1282 
1283 #if !defined(__cpp_lib_constexpr_memory)
1284 # if (__cplusplus >= 202100L) && (__cpp_constexpr_dynamic_alloc)
1285 # define __glibcxx_constexpr_memory 202202L
1286 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_memory)
1287 # define __cpp_lib_constexpr_memory 202202L
1288 # endif
1289 # elif (__cplusplus >= 202002L)
1290 # define __glibcxx_constexpr_memory 201811L
1291 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_memory)
1292 # define __cpp_lib_constexpr_memory 201811L
1293 # endif
1294 # endif
1295 #endif /* !defined(__cpp_lib_constexpr_memory) && defined(__glibcxx_want_constexpr_memory) */
1296 #undef __glibcxx_want_constexpr_memory
1297 
1298 #if !defined(__cpp_lib_atomic_shared_ptr)
1299 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1300 # define __glibcxx_atomic_shared_ptr 201711L
1301 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_shared_ptr)
1302 # define __cpp_lib_atomic_shared_ptr 201711L
1303 # endif
1304 # endif
1305 #endif /* !defined(__cpp_lib_atomic_shared_ptr) && defined(__glibcxx_want_atomic_shared_ptr) */
1306 #undef __glibcxx_want_atomic_shared_ptr
1307 
1308 #if !defined(__cpp_lib_atomic_wait)
1309 # if (__cplusplus >= 202002L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
1310 # define __glibcxx_atomic_wait 201907L
1311 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_wait)
1312 # define __cpp_lib_atomic_wait 201907L
1313 # endif
1314 # elif (__cplusplus >= 202002L) && !defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED && (defined(_GLIBCXX_HAVE_LINUX_FUTEX))
1315 # define __glibcxx_atomic_wait 201907L
1316 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_wait)
1317 # define __cpp_lib_atomic_wait 201907L
1318 # endif
1319 # endif
1320 #endif /* !defined(__cpp_lib_atomic_wait) && defined(__glibcxx_want_atomic_wait) */
1321 #undef __glibcxx_want_atomic_wait
1322 
1323 #if !defined(__cpp_lib_barrier)
1324 # if (__cplusplus >= 202002L) && (__cpp_aligned_new && __glibcxx_atomic_wait)
1325 # define __glibcxx_barrier 201907L
1326 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_barrier)
1327 # define __cpp_lib_barrier 201907L
1328 # endif
1329 # endif
1330 #endif /* !defined(__cpp_lib_barrier) && defined(__glibcxx_want_barrier) */
1331 #undef __glibcxx_want_barrier
1332 
1333 #if !defined(__cpp_lib_format)
1334 # if (__cplusplus > 202302L) && _GLIBCXX_HOSTED
1335 # define __glibcxx_format 202311L
1336 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_format)
1337 # define __cpp_lib_format 202311L
1338 # endif
1339 # elif (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1340 # define __glibcxx_format 202304L
1341 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_format)
1342 # define __cpp_lib_format 202304L
1343 # endif
1344 # endif
1345 #endif /* !defined(__cpp_lib_format) && defined(__glibcxx_want_format) */
1346 #undef __glibcxx_want_format
1347 
1348 #if !defined(__cpp_lib_format_uchar)
1349 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1350 # define __glibcxx_format_uchar 202311L
1351 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_format_uchar)
1352 # define __cpp_lib_format_uchar 202311L
1353 # endif
1354 # endif
1355 #endif /* !defined(__cpp_lib_format_uchar) && defined(__glibcxx_want_format_uchar) */
1356 #undef __glibcxx_want_format_uchar
1357 
1358 #if !defined(__cpp_lib_constexpr_complex)
1359 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1360 # define __glibcxx_constexpr_complex 201711L
1361 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_complex)
1362 # define __cpp_lib_constexpr_complex 201711L
1363 # endif
1364 # endif
1365 #endif /* !defined(__cpp_lib_constexpr_complex) && defined(__glibcxx_want_constexpr_complex) */
1366 #undef __glibcxx_want_constexpr_complex
1367 
1368 #if !defined(__cpp_lib_constexpr_dynamic_alloc)
1369 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1370 # define __glibcxx_constexpr_dynamic_alloc 201907L
1371 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_dynamic_alloc)
1372 # define __cpp_lib_constexpr_dynamic_alloc 201907L
1373 # endif
1374 # endif
1375 #endif /* !defined(__cpp_lib_constexpr_dynamic_alloc) && defined(__glibcxx_want_constexpr_dynamic_alloc) */
1376 #undef __glibcxx_want_constexpr_dynamic_alloc
1377 
1378 #if !defined(__cpp_lib_constexpr_string)
1379 # if (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (defined(__glibcxx_is_constant_evaluated))
1380 # define __glibcxx_constexpr_string 201907L
1381 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
1382 # define __cpp_lib_constexpr_string 201907L
1383 # endif
1384 # elif (__cplusplus >= 202002L) && !_GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (defined(__glibcxx_is_constant_evaluated))
1385 # define __glibcxx_constexpr_string 201811L
1386 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
1387 # define __cpp_lib_constexpr_string 201811L
1388 # endif
1389 # elif (__cplusplus >= 201703L) && _GLIBCXX_HOSTED && (_GLIBCXX_HAVE_IS_CONSTANT_EVALUATED)
1390 # define __glibcxx_constexpr_string 201611L
1391 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
1392 # define __cpp_lib_constexpr_string 201611L
1393 # endif
1394 # endif
1395 #endif /* !defined(__cpp_lib_constexpr_string) && defined(__glibcxx_want_constexpr_string) */
1396 #undef __glibcxx_want_constexpr_string
1397 
1398 #if !defined(__cpp_lib_constexpr_vector)
1399 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1400 # define __glibcxx_constexpr_vector 201907L
1401 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_vector)
1402 # define __cpp_lib_constexpr_vector 201907L
1403 # endif
1404 # endif
1405 #endif /* !defined(__cpp_lib_constexpr_vector) && defined(__glibcxx_want_constexpr_vector) */
1406 #undef __glibcxx_want_constexpr_vector
1407 
1408 #if !defined(__cpp_lib_constrained_equality)
1409 # if (__cplusplus >= 202100L) && (__glibcxx_three_way_comparison)
1410 # define __glibcxx_constrained_equality 202411L
1411 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constrained_equality)
1412 # define __cpp_lib_constrained_equality 202411L
1413 # endif
1414 # elif (__cplusplus >= 202002L) && (__glibcxx_three_way_comparison)
1415 # define __glibcxx_constrained_equality 202403L
1416 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constrained_equality)
1417 # define __cpp_lib_constrained_equality 202403L
1418 # endif
1419 # endif
1420 #endif /* !defined(__cpp_lib_constrained_equality) && defined(__glibcxx_want_constrained_equality) */
1421 #undef __glibcxx_want_constrained_equality
1422 
1423 #if !defined(__cpp_lib_erase_if)
1424 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1425 # define __glibcxx_erase_if 202002L
1426 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_erase_if)
1427 # define __cpp_lib_erase_if 202002L
1428 # endif
1429 # endif
1430 #endif /* !defined(__cpp_lib_erase_if) && defined(__glibcxx_want_erase_if) */
1431 #undef __glibcxx_want_erase_if
1432 
1433 #if !defined(__cpp_lib_generic_unordered_lookup)
1434 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1435 # define __glibcxx_generic_unordered_lookup 201811L
1436 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_generic_unordered_lookup)
1437 # define __cpp_lib_generic_unordered_lookup 201811L
1438 # endif
1439 # endif
1440 #endif /* !defined(__cpp_lib_generic_unordered_lookup) && defined(__glibcxx_want_generic_unordered_lookup) */
1441 #undef __glibcxx_want_generic_unordered_lookup
1442 
1443 #if !defined(__cpp_lib_jthread)
1444 # if (__cplusplus >= 202002L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
1445 # define __glibcxx_jthread 201911L
1446 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_jthread)
1447 # define __cpp_lib_jthread 201911L
1448 # endif
1449 # endif
1450 #endif /* !defined(__cpp_lib_jthread) && defined(__glibcxx_want_jthread) */
1451 #undef __glibcxx_want_jthread
1452 
1453 #if !defined(__cpp_lib_latch)
1454 # if (__cplusplus >= 202002L) && (__glibcxx_atomic_wait)
1455 # define __glibcxx_latch 201907L
1456 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_latch)
1457 # define __cpp_lib_latch 201907L
1458 # endif
1459 # endif
1460 #endif /* !defined(__cpp_lib_latch) && defined(__glibcxx_want_latch) */
1461 #undef __glibcxx_want_latch
1462 
1463 #if !defined(__cpp_lib_list_remove_return_type)
1464 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1465 # define __glibcxx_list_remove_return_type 201806L
1466 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_list_remove_return_type)
1467 # define __cpp_lib_list_remove_return_type 201806L
1468 # endif
1469 # endif
1470 #endif /* !defined(__cpp_lib_list_remove_return_type) && defined(__glibcxx_want_list_remove_return_type) */
1471 #undef __glibcxx_want_list_remove_return_type
1472 
1473 #if !defined(__cpp_lib_polymorphic_allocator)
1474 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1475 # define __glibcxx_polymorphic_allocator 201902L
1476 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_polymorphic_allocator)
1477 # define __cpp_lib_polymorphic_allocator 201902L
1478 # endif
1479 # endif
1480 #endif /* !defined(__cpp_lib_polymorphic_allocator) && defined(__glibcxx_want_polymorphic_allocator) */
1481 #undef __glibcxx_want_polymorphic_allocator
1482 
1483 #if !defined(__cpp_lib_move_iterator_concept)
1484 # if (__cplusplus >= 202002L) && (__glibcxx_concepts)
1485 # define __glibcxx_move_iterator_concept 202207L
1486 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_move_iterator_concept)
1487 # define __cpp_lib_move_iterator_concept 202207L
1488 # endif
1489 # endif
1490 #endif /* !defined(__cpp_lib_move_iterator_concept) && defined(__glibcxx_want_move_iterator_concept) */
1491 #undef __glibcxx_want_move_iterator_concept
1492 
1493 #if !defined(__cpp_lib_semaphore)
1494 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED && (__glibcxx_atomic_wait || _GLIBCXX_HAVE_POSIX_SEMAPHORE)
1495 # define __glibcxx_semaphore 201907L
1496 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_semaphore)
1497 # define __cpp_lib_semaphore 201907L
1498 # endif
1499 # endif
1500 #endif /* !defined(__cpp_lib_semaphore) && defined(__glibcxx_want_semaphore) */
1501 #undef __glibcxx_want_semaphore
1502 
1503 #if !defined(__cpp_lib_smart_ptr_for_overwrite)
1504 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
1505 # define __glibcxx_smart_ptr_for_overwrite 202002L
1506 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_smart_ptr_for_overwrite)
1507 # define __cpp_lib_smart_ptr_for_overwrite 202002L
1508 # endif
1509 # endif
1510 #endif /* !defined(__cpp_lib_smart_ptr_for_overwrite) && defined(__glibcxx_want_smart_ptr_for_overwrite) */
1511 #undef __glibcxx_want_smart_ptr_for_overwrite
1512 
1513 #if !defined(__cpp_lib_syncbuf)
1514 # if (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED
1515 # define __glibcxx_syncbuf 201803L
1516 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_syncbuf)
1517 # define __cpp_lib_syncbuf 201803L
1518 # endif
1519 # endif
1520 #endif /* !defined(__cpp_lib_syncbuf) && defined(__glibcxx_want_syncbuf) */
1521 #undef __glibcxx_want_syncbuf
1522 
1523 #if !defined(__cpp_lib_byteswap)
1524 # if (__cplusplus >= 202100L)
1525 # define __glibcxx_byteswap 202110L
1526 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_byteswap)
1527 # define __cpp_lib_byteswap 202110L
1528 # endif
1529 # endif
1530 #endif /* !defined(__cpp_lib_byteswap) && defined(__glibcxx_want_byteswap) */
1531 #undef __glibcxx_want_byteswap
1532 
1533 #if !defined(__cpp_lib_constexpr_charconv)
1534 # if (__cplusplus >= 202100L)
1535 # define __glibcxx_constexpr_charconv 202207L
1536 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_charconv)
1537 # define __cpp_lib_constexpr_charconv 202207L
1538 # endif
1539 # endif
1540 #endif /* !defined(__cpp_lib_constexpr_charconv) && defined(__glibcxx_want_constexpr_charconv) */
1541 #undef __glibcxx_want_constexpr_charconv
1542 
1543 #if !defined(__cpp_lib_constexpr_typeinfo)
1544 # if (__cplusplus >= 202100L)
1545 # define __glibcxx_constexpr_typeinfo 202106L
1546 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_typeinfo)
1547 # define __cpp_lib_constexpr_typeinfo 202106L
1548 # endif
1549 # endif
1550 #endif /* !defined(__cpp_lib_constexpr_typeinfo) && defined(__glibcxx_want_constexpr_typeinfo) */
1551 #undef __glibcxx_want_constexpr_typeinfo
1552 
1553 #if !defined(__cpp_lib_expected)
1554 # if (__cplusplus >= 202100L) && (__cpp_concepts >= 202002L)
1555 # define __glibcxx_expected 202211L
1556 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_expected)
1557 # define __cpp_lib_expected 202211L
1558 # endif
1559 # endif
1560 #endif /* !defined(__cpp_lib_expected) && defined(__glibcxx_want_expected) */
1561 #undef __glibcxx_want_expected
1562 
1563 #if !defined(__cpp_lib_format_ranges)
1564 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1565 # define __glibcxx_format_ranges 202207L
1566 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_format_ranges)
1567 # define __cpp_lib_format_ranges 202207L
1568 # endif
1569 # endif
1570 #endif /* !defined(__cpp_lib_format_ranges) && defined(__glibcxx_want_format_ranges) */
1571 #undef __glibcxx_want_format_ranges
1572 
1573 #if !defined(__cpp_lib_freestanding_algorithm)
1574 # if (__cplusplus >= 202100L)
1575 # define __glibcxx_freestanding_algorithm 202311L
1576 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_algorithm)
1577 # define __cpp_lib_freestanding_algorithm 202311L
1578 # endif
1579 # endif
1580 #endif /* !defined(__cpp_lib_freestanding_algorithm) && defined(__glibcxx_want_freestanding_algorithm) */
1581 #undef __glibcxx_want_freestanding_algorithm
1582 
1583 #if !defined(__cpp_lib_freestanding_array)
1584 # if (__cplusplus >= 202100L)
1585 # define __glibcxx_freestanding_array 202311L
1586 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_array)
1587 # define __cpp_lib_freestanding_array 202311L
1588 # endif
1589 # endif
1590 #endif /* !defined(__cpp_lib_freestanding_array) && defined(__glibcxx_want_freestanding_array) */
1591 #undef __glibcxx_want_freestanding_array
1592 
1593 #if !defined(__cpp_lib_freestanding_cstring)
1594 # if (__cplusplus >= 202100L)
1595 # define __glibcxx_freestanding_cstring 202311L
1596 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_cstring)
1597 # define __cpp_lib_freestanding_cstring 202311L
1598 # endif
1599 # endif
1600 #endif /* !defined(__cpp_lib_freestanding_cstring) && defined(__glibcxx_want_freestanding_cstring) */
1601 #undef __glibcxx_want_freestanding_cstring
1602 
1603 #if !defined(__cpp_lib_freestanding_expected)
1604 # if (__cplusplus >= 202100L) && (__cpp_lib_expected)
1605 # define __glibcxx_freestanding_expected 202311L
1606 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_expected)
1607 # define __cpp_lib_freestanding_expected 202311L
1608 # endif
1609 # endif
1610 #endif /* !defined(__cpp_lib_freestanding_expected) && defined(__glibcxx_want_freestanding_expected) */
1611 #undef __glibcxx_want_freestanding_expected
1612 
1613 #if !defined(__cpp_lib_freestanding_optional)
1614 # if (__cplusplus >= 202100L)
1615 # define __glibcxx_freestanding_optional 202311L
1616 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_optional)
1617 # define __cpp_lib_freestanding_optional 202311L
1618 # endif
1619 # endif
1620 #endif /* !defined(__cpp_lib_freestanding_optional) && defined(__glibcxx_want_freestanding_optional) */
1621 #undef __glibcxx_want_freestanding_optional
1622 
1623 #if !defined(__cpp_lib_freestanding_string_view)
1624 # if (__cplusplus >= 202100L)
1625 # define __glibcxx_freestanding_string_view 202311L
1626 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_string_view)
1627 # define __cpp_lib_freestanding_string_view 202311L
1628 # endif
1629 # endif
1630 #endif /* !defined(__cpp_lib_freestanding_string_view) && defined(__glibcxx_want_freestanding_string_view) */
1631 #undef __glibcxx_want_freestanding_string_view
1632 
1633 #if !defined(__cpp_lib_freestanding_variant)
1634 # if (__cplusplus >= 202100L)
1635 # define __glibcxx_freestanding_variant 202311L
1636 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_variant)
1637 # define __cpp_lib_freestanding_variant 202311L
1638 # endif
1639 # endif
1640 #endif /* !defined(__cpp_lib_freestanding_variant) && defined(__glibcxx_want_freestanding_variant) */
1641 #undef __glibcxx_want_freestanding_variant
1642 
1643 #if !defined(__cpp_lib_invoke_r)
1644 # if (__cplusplus >= 202100L)
1645 # define __glibcxx_invoke_r 202106L
1646 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_invoke_r)
1647 # define __cpp_lib_invoke_r 202106L
1648 # endif
1649 # endif
1650 #endif /* !defined(__cpp_lib_invoke_r) && defined(__glibcxx_want_invoke_r) */
1651 #undef __glibcxx_want_invoke_r
1652 
1653 #if !defined(__cpp_lib_is_scoped_enum)
1654 # if (__cplusplus >= 202100L)
1655 # define __glibcxx_is_scoped_enum 202011L
1656 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_scoped_enum)
1657 # define __cpp_lib_is_scoped_enum 202011L
1658 # endif
1659 # endif
1660 #endif /* !defined(__cpp_lib_is_scoped_enum) && defined(__glibcxx_want_is_scoped_enum) */
1661 #undef __glibcxx_want_is_scoped_enum
1662 
1663 #if !defined(__cpp_lib_reference_from_temporary)
1664 # if (__cplusplus >= 202100L) && (__has_builtin(__reference_constructs_from_temporary) && __has_builtin(__reference_converts_from_temporary))
1665 # define __glibcxx_reference_from_temporary 202202L
1666 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_reference_from_temporary)
1667 # define __cpp_lib_reference_from_temporary 202202L
1668 # endif
1669 # endif
1670 #endif /* !defined(__cpp_lib_reference_from_temporary) && defined(__glibcxx_want_reference_from_temporary) */
1671 #undef __glibcxx_want_reference_from_temporary
1672 
1673 #if !defined(__cpp_lib_containers_ranges)
1674 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1675 # define __glibcxx_containers_ranges 202202L
1676 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_containers_ranges)
1677 # define __cpp_lib_containers_ranges 202202L
1678 # endif
1679 # endif
1680 #endif /* !defined(__cpp_lib_containers_ranges) && defined(__glibcxx_want_containers_ranges) */
1681 #undef __glibcxx_want_containers_ranges
1682 
1683 #if !defined(__cpp_lib_ranges_to_container)
1684 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1685 # define __glibcxx_ranges_to_container 202202L
1686 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_to_container)
1687 # define __cpp_lib_ranges_to_container 202202L
1688 # endif
1689 # endif
1690 #endif /* !defined(__cpp_lib_ranges_to_container) && defined(__glibcxx_want_ranges_to_container) */
1691 #undef __glibcxx_want_ranges_to_container
1692 
1693 #if !defined(__cpp_lib_ranges_zip)
1694 # if (__cplusplus >= 202100L)
1695 # define __glibcxx_ranges_zip 202110L
1696 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_zip)
1697 # define __cpp_lib_ranges_zip 202110L
1698 # endif
1699 # endif
1700 #endif /* !defined(__cpp_lib_ranges_zip) && defined(__glibcxx_want_ranges_zip) */
1701 #undef __glibcxx_want_ranges_zip
1702 
1703 #if !defined(__cpp_lib_ranges_chunk)
1704 # if (__cplusplus >= 202100L)
1705 # define __glibcxx_ranges_chunk 202202L
1706 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_chunk)
1707 # define __cpp_lib_ranges_chunk 202202L
1708 # endif
1709 # endif
1710 #endif /* !defined(__cpp_lib_ranges_chunk) && defined(__glibcxx_want_ranges_chunk) */
1711 #undef __glibcxx_want_ranges_chunk
1712 
1713 #if !defined(__cpp_lib_ranges_slide)
1714 # if (__cplusplus >= 202100L)
1715 # define __glibcxx_ranges_slide 202202L
1716 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_slide)
1717 # define __cpp_lib_ranges_slide 202202L
1718 # endif
1719 # endif
1720 #endif /* !defined(__cpp_lib_ranges_slide) && defined(__glibcxx_want_ranges_slide) */
1721 #undef __glibcxx_want_ranges_slide
1722 
1723 #if !defined(__cpp_lib_ranges_chunk_by)
1724 # if (__cplusplus >= 202100L)
1725 # define __glibcxx_ranges_chunk_by 202202L
1726 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_chunk_by)
1727 # define __cpp_lib_ranges_chunk_by 202202L
1728 # endif
1729 # endif
1730 #endif /* !defined(__cpp_lib_ranges_chunk_by) && defined(__glibcxx_want_ranges_chunk_by) */
1731 #undef __glibcxx_want_ranges_chunk_by
1732 
1733 #if !defined(__cpp_lib_ranges_join_with)
1734 # if (__cplusplus >= 202100L)
1735 # define __glibcxx_ranges_join_with 202202L
1736 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_join_with)
1737 # define __cpp_lib_ranges_join_with 202202L
1738 # endif
1739 # endif
1740 #endif /* !defined(__cpp_lib_ranges_join_with) && defined(__glibcxx_want_ranges_join_with) */
1741 #undef __glibcxx_want_ranges_join_with
1742 
1743 #if !defined(__cpp_lib_ranges_repeat)
1744 # if (__cplusplus >= 202100L)
1745 # define __glibcxx_ranges_repeat 202207L
1746 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_repeat)
1747 # define __cpp_lib_ranges_repeat 202207L
1748 # endif
1749 # endif
1750 #endif /* !defined(__cpp_lib_ranges_repeat) && defined(__glibcxx_want_ranges_repeat) */
1751 #undef __glibcxx_want_ranges_repeat
1752 
1753 #if !defined(__cpp_lib_ranges_stride)
1754 # if (__cplusplus >= 202100L)
1755 # define __glibcxx_ranges_stride 202207L
1756 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_stride)
1757 # define __cpp_lib_ranges_stride 202207L
1758 # endif
1759 # endif
1760 #endif /* !defined(__cpp_lib_ranges_stride) && defined(__glibcxx_want_ranges_stride) */
1761 #undef __glibcxx_want_ranges_stride
1762 
1763 #if !defined(__cpp_lib_ranges_cartesian_product)
1764 # if (__cplusplus >= 202100L)
1765 # define __glibcxx_ranges_cartesian_product 202207L
1766 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_cartesian_product)
1767 # define __cpp_lib_ranges_cartesian_product 202207L
1768 # endif
1769 # endif
1770 #endif /* !defined(__cpp_lib_ranges_cartesian_product) && defined(__glibcxx_want_ranges_cartesian_product) */
1771 #undef __glibcxx_want_ranges_cartesian_product
1772 
1773 #if !defined(__cpp_lib_ranges_as_rvalue)
1774 # if (__cplusplus >= 202100L)
1775 # define __glibcxx_ranges_as_rvalue 202207L
1776 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_as_rvalue)
1777 # define __cpp_lib_ranges_as_rvalue 202207L
1778 # endif
1779 # endif
1780 #endif /* !defined(__cpp_lib_ranges_as_rvalue) && defined(__glibcxx_want_ranges_as_rvalue) */
1781 #undef __glibcxx_want_ranges_as_rvalue
1782 
1783 #if !defined(__cpp_lib_ranges_as_const)
1784 # if (__cplusplus >= 202100L)
1785 # define __glibcxx_ranges_as_const 202311L
1786 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_as_const)
1787 # define __cpp_lib_ranges_as_const 202311L
1788 # endif
1789 # endif
1790 #endif /* !defined(__cpp_lib_ranges_as_const) && defined(__glibcxx_want_ranges_as_const) */
1791 #undef __glibcxx_want_ranges_as_const
1792 
1793 #if !defined(__cpp_lib_ranges_enumerate)
1794 # if (__cplusplus >= 202100L)
1795 # define __glibcxx_ranges_enumerate 202302L
1796 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_enumerate)
1797 # define __cpp_lib_ranges_enumerate 202302L
1798 # endif
1799 # endif
1800 #endif /* !defined(__cpp_lib_ranges_enumerate) && defined(__glibcxx_want_ranges_enumerate) */
1801 #undef __glibcxx_want_ranges_enumerate
1802 
1803 #if !defined(__cpp_lib_ranges_fold)
1804 # if (__cplusplus >= 202100L)
1805 # define __glibcxx_ranges_fold 202207L
1806 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_fold)
1807 # define __cpp_lib_ranges_fold 202207L
1808 # endif
1809 # endif
1810 #endif /* !defined(__cpp_lib_ranges_fold) && defined(__glibcxx_want_ranges_fold) */
1811 #undef __glibcxx_want_ranges_fold
1812 
1813 #if !defined(__cpp_lib_ranges_contains)
1814 # if (__cplusplus >= 202100L)
1815 # define __glibcxx_ranges_contains 202207L
1816 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_contains)
1817 # define __cpp_lib_ranges_contains 202207L
1818 # endif
1819 # endif
1820 #endif /* !defined(__cpp_lib_ranges_contains) && defined(__glibcxx_want_ranges_contains) */
1821 #undef __glibcxx_want_ranges_contains
1822 
1823 #if !defined(__cpp_lib_ranges_iota)
1824 # if (__cplusplus >= 202100L)
1825 # define __glibcxx_ranges_iota 202202L
1826 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_iota)
1827 # define __cpp_lib_ranges_iota 202202L
1828 # endif
1829 # endif
1830 #endif /* !defined(__cpp_lib_ranges_iota) && defined(__glibcxx_want_ranges_iota) */
1831 #undef __glibcxx_want_ranges_iota
1832 
1833 #if !defined(__cpp_lib_ranges_find_last)
1834 # if (__cplusplus >= 202100L)
1835 # define __glibcxx_ranges_find_last 202207L
1836 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_find_last)
1837 # define __cpp_lib_ranges_find_last 202207L
1838 # endif
1839 # endif
1840 #endif /* !defined(__cpp_lib_ranges_find_last) && defined(__glibcxx_want_ranges_find_last) */
1841 #undef __glibcxx_want_ranges_find_last
1842 
1843 #if !defined(__cpp_lib_constexpr_bitset)
1844 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (__cpp_constexpr_dynamic_alloc)
1845 # define __glibcxx_constexpr_bitset 202202L
1846 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_bitset)
1847 # define __cpp_lib_constexpr_bitset 202202L
1848 # endif
1849 # endif
1850 #endif /* !defined(__cpp_lib_constexpr_bitset) && defined(__glibcxx_want_constexpr_bitset) */
1851 #undef __glibcxx_want_constexpr_bitset
1852 
1853 #if !defined(__cpp_lib_stdatomic_h)
1854 # if (__cplusplus >= 202100L)
1855 # define __glibcxx_stdatomic_h 202011L
1856 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdatomic_h)
1857 # define __cpp_lib_stdatomic_h 202011L
1858 # endif
1859 # endif
1860 #endif /* !defined(__cpp_lib_stdatomic_h) && defined(__glibcxx_want_stdatomic_h) */
1861 #undef __glibcxx_want_stdatomic_h
1862 
1863 #if !defined(__cpp_lib_adaptor_iterator_pair_constructor)
1864 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1865 # define __glibcxx_adaptor_iterator_pair_constructor 202106L
1866 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_adaptor_iterator_pair_constructor)
1867 # define __cpp_lib_adaptor_iterator_pair_constructor 202106L
1868 # endif
1869 # endif
1870 #endif /* !defined(__cpp_lib_adaptor_iterator_pair_constructor) && defined(__glibcxx_want_adaptor_iterator_pair_constructor) */
1871 #undef __glibcxx_want_adaptor_iterator_pair_constructor
1872 
1873 #if !defined(__cpp_lib_flat_map)
1874 # if (__cplusplus >= 202100L)
1875 # define __glibcxx_flat_map 202207L
1876 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_map)
1877 # define __cpp_lib_flat_map 202207L
1878 # endif
1879 # endif
1880 #endif /* !defined(__cpp_lib_flat_map) && defined(__glibcxx_want_flat_map) */
1881 #undef __glibcxx_want_flat_map
1882 
1883 #if !defined(__cpp_lib_flat_set)
1884 # if (__cplusplus >= 202100L)
1885 # define __glibcxx_flat_set 202207L
1886 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_set)
1887 # define __cpp_lib_flat_set 202207L
1888 # endif
1889 # endif
1890 #endif /* !defined(__cpp_lib_flat_set) && defined(__glibcxx_want_flat_set) */
1891 #undef __glibcxx_want_flat_set
1892 
1893 #if !defined(__cpp_lib_formatters)
1894 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1895 # define __glibcxx_formatters 202302L
1896 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_formatters)
1897 # define __cpp_lib_formatters 202302L
1898 # endif
1899 # endif
1900 #endif /* !defined(__cpp_lib_formatters) && defined(__glibcxx_want_formatters) */
1901 #undef __glibcxx_want_formatters
1902 
1903 #if !defined(__cpp_lib_forward_like)
1904 # if (__cplusplus >= 202100L)
1905 # define __glibcxx_forward_like 202207L
1906 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_forward_like)
1907 # define __cpp_lib_forward_like 202207L
1908 # endif
1909 # endif
1910 #endif /* !defined(__cpp_lib_forward_like) && defined(__glibcxx_want_forward_like) */
1911 #undef __glibcxx_want_forward_like
1912 
1913 #if !defined(__cpp_lib_generator)
1914 # if (__cplusplus >= 202100L) && (__glibcxx_coroutine && __cpp_sized_deallocation)
1915 # define __glibcxx_generator 202207L
1916 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_generator)
1917 # define __cpp_lib_generator 202207L
1918 # endif
1919 # endif
1920 #endif /* !defined(__cpp_lib_generator) && defined(__glibcxx_want_generator) */
1921 #undef __glibcxx_want_generator
1922 
1923 #if !defined(__cpp_lib_ios_noreplace)
1924 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1925 # define __glibcxx_ios_noreplace 202207L
1926 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ios_noreplace)
1927 # define __cpp_lib_ios_noreplace 202207L
1928 # endif
1929 # endif
1930 #endif /* !defined(__cpp_lib_ios_noreplace) && defined(__glibcxx_want_ios_noreplace) */
1931 #undef __glibcxx_want_ios_noreplace
1932 
1933 #if !defined(__cpp_lib_move_only_function)
1934 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1935 # define __glibcxx_move_only_function 202110L
1936 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_move_only_function)
1937 # define __cpp_lib_move_only_function 202110L
1938 # endif
1939 # endif
1940 #endif /* !defined(__cpp_lib_move_only_function) && defined(__glibcxx_want_move_only_function) */
1941 #undef __glibcxx_want_move_only_function
1942 
1943 #if !defined(__cpp_lib_out_ptr)
1944 # if (__cplusplus >= 202100L)
1945 # define __glibcxx_out_ptr 202311L
1946 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_out_ptr)
1947 # define __cpp_lib_out_ptr 202311L
1948 # endif
1949 # endif
1950 #endif /* !defined(__cpp_lib_out_ptr) && defined(__glibcxx_want_out_ptr) */
1951 #undef __glibcxx_want_out_ptr
1952 
1953 #if !defined(__cpp_lib_print)
1954 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1955 # define __glibcxx_print 202211L
1956 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_print)
1957 # define __cpp_lib_print 202211L
1958 # endif
1959 # endif
1960 #endif /* !defined(__cpp_lib_print) && defined(__glibcxx_want_print) */
1961 #undef __glibcxx_want_print
1962 
1963 #if !defined(__cpp_lib_spanstream)
1964 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (__glibcxx_span)
1965 # define __glibcxx_spanstream 202106L
1966 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_spanstream)
1967 # define __cpp_lib_spanstream 202106L
1968 # endif
1969 # endif
1970 #endif /* !defined(__cpp_lib_spanstream) && defined(__glibcxx_want_spanstream) */
1971 #undef __glibcxx_want_spanstream
1972 
1973 #if !defined(__cpp_lib_stacktrace)
1974 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (_GLIBCXX_HAVE_STACKTRACE)
1975 # define __glibcxx_stacktrace 202011L
1976 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_stacktrace)
1977 # define __cpp_lib_stacktrace 202011L
1978 # endif
1979 # endif
1980 #endif /* !defined(__cpp_lib_stacktrace) && defined(__glibcxx_want_stacktrace) */
1981 #undef __glibcxx_want_stacktrace
1982 
1983 #if !defined(__cpp_lib_string_contains)
1984 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1985 # define __glibcxx_string_contains 202011L
1986 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_contains)
1987 # define __cpp_lib_string_contains 202011L
1988 # endif
1989 # endif
1990 #endif /* !defined(__cpp_lib_string_contains) && defined(__glibcxx_want_string_contains) */
1991 #undef __glibcxx_want_string_contains
1992 
1993 #if !defined(__cpp_lib_string_resize_and_overwrite)
1994 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
1995 # define __glibcxx_string_resize_and_overwrite 202110L
1996 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_resize_and_overwrite)
1997 # define __cpp_lib_string_resize_and_overwrite 202110L
1998 # endif
1999 # endif
2000 #endif /* !defined(__cpp_lib_string_resize_and_overwrite) && defined(__glibcxx_want_string_resize_and_overwrite) */
2001 #undef __glibcxx_want_string_resize_and_overwrite
2002 
2003 #if !defined(__cpp_lib_to_underlying)
2004 # if (__cplusplus >= 202100L)
2005 # define __glibcxx_to_underlying 202102L
2006 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_underlying)
2007 # define __cpp_lib_to_underlying 202102L
2008 # endif
2009 # endif
2010 #endif /* !defined(__cpp_lib_to_underlying) && defined(__glibcxx_want_to_underlying) */
2011 #undef __glibcxx_want_to_underlying
2012 
2013 #if !defined(__cpp_lib_tuple_like)
2014 # if (__cplusplus > 202302L) && (__cpp_explicit_this_parameter >= 202110L)
2015 # define __glibcxx_tuple_like 202311L
2016 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_tuple_like)
2017 # define __cpp_lib_tuple_like 202311L
2018 # endif
2019 # elif (__cplusplus >= 202100L)
2020 # define __glibcxx_tuple_like 202207L
2021 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_tuple_like)
2022 # define __cpp_lib_tuple_like 202207L
2023 # endif
2024 # endif
2025 #endif /* !defined(__cpp_lib_tuple_like) && defined(__glibcxx_want_tuple_like) */
2026 #undef __glibcxx_want_tuple_like
2027 
2028 #if !defined(__cpp_lib_unreachable)
2029 # if (__cplusplus >= 202100L)
2030 # define __glibcxx_unreachable 202202L
2031 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_unreachable)
2032 # define __cpp_lib_unreachable 202202L
2033 # endif
2034 # endif
2035 #endif /* !defined(__cpp_lib_unreachable) && defined(__glibcxx_want_unreachable) */
2036 #undef __glibcxx_want_unreachable
2037 
2038 #if !defined(__cpp_lib_algorithm_default_value_type)
2039 # if (__cplusplus > 202302L)
2040 # define __glibcxx_algorithm_default_value_type 202403L
2041 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_algorithm_default_value_type)
2042 # define __cpp_lib_algorithm_default_value_type 202403L
2043 # endif
2044 # endif
2045 #endif /* !defined(__cpp_lib_algorithm_default_value_type) && defined(__glibcxx_want_algorithm_default_value_type) */
2046 #undef __glibcxx_want_algorithm_default_value_type
2047 
2048 #if !defined(__cpp_lib_constexpr_new)
2049 # if (__cplusplus > 202302L) && (__cpp_constexpr >= 202406L)
2050 # define __glibcxx_constexpr_new 202406L
2051 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_new)
2052 # define __cpp_lib_constexpr_new 202406L
2053 # endif
2054 # endif
2055 #endif /* !defined(__cpp_lib_constexpr_new) && defined(__glibcxx_want_constexpr_new) */
2056 #undef __glibcxx_want_constexpr_new
2057 
2058 #if !defined(__cpp_lib_fstream_native_handle)
2059 # if (__cplusplus > 202302L) && _GLIBCXX_HOSTED
2060 # define __glibcxx_fstream_native_handle 202306L
2061 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_fstream_native_handle)
2062 # define __cpp_lib_fstream_native_handle 202306L
2063 # endif
2064 # endif
2065 #endif /* !defined(__cpp_lib_fstream_native_handle) && defined(__glibcxx_want_fstream_native_handle) */
2066 #undef __glibcxx_want_fstream_native_handle
2067 
2068 #if !defined(__cpp_lib_is_virtual_base_of)
2069 # if (__cplusplus > 202302L) && (__has_builtin(__builtin_is_virtual_base_of))
2070 # define __glibcxx_is_virtual_base_of 202406L
2071 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_virtual_base_of)
2072 # define __cpp_lib_is_virtual_base_of 202406L
2073 # endif
2074 # endif
2075 #endif /* !defined(__cpp_lib_is_virtual_base_of) && defined(__glibcxx_want_is_virtual_base_of) */
2076 #undef __glibcxx_want_is_virtual_base_of
2077 
2078 #if !defined(__cpp_lib_ranges_cache_latest)
2079 # if (__cplusplus > 202302L)
2080 # define __glibcxx_ranges_cache_latest 202411L
2081 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_cache_latest)
2082 # define __cpp_lib_ranges_cache_latest 202411L
2083 # endif
2084 # endif
2085 #endif /* !defined(__cpp_lib_ranges_cache_latest) && defined(__glibcxx_want_ranges_cache_latest) */
2086 #undef __glibcxx_want_ranges_cache_latest
2087 
2088 #if !defined(__cpp_lib_ranges_concat)
2089 # if (__cplusplus > 202302L) && (__cpp_pack_indexing)
2090 # define __glibcxx_ranges_concat 202403L
2091 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_concat)
2092 # define __cpp_lib_ranges_concat 202403L
2093 # endif
2094 # endif
2095 #endif /* !defined(__cpp_lib_ranges_concat) && defined(__glibcxx_want_ranges_concat) */
2096 #undef __glibcxx_want_ranges_concat
2097 
2098 #if !defined(__cpp_lib_ratio)
2099 # if (__cplusplus > 202302L)
2100 # define __glibcxx_ratio 202306L
2101 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ratio)
2102 # define __cpp_lib_ratio 202306L
2103 # endif
2104 # endif
2105 #endif /* !defined(__cpp_lib_ratio) && defined(__glibcxx_want_ratio) */
2106 #undef __glibcxx_want_ratio
2107 
2108 #if !defined(__cpp_lib_reference_wrapper)
2109 # if (__cplusplus > 202302L)
2110 # define __glibcxx_reference_wrapper 202403L
2111 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_reference_wrapper)
2112 # define __cpp_lib_reference_wrapper 202403L
2113 # endif
2114 # endif
2115 #endif /* !defined(__cpp_lib_reference_wrapper) && defined(__glibcxx_want_reference_wrapper) */
2116 #undef __glibcxx_want_reference_wrapper
2117 
2118 #if !defined(__cpp_lib_saturation_arithmetic)
2119 # if (__cplusplus > 202302L)
2120 # define __glibcxx_saturation_arithmetic 202311L
2121 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_saturation_arithmetic)
2122 # define __cpp_lib_saturation_arithmetic 202311L
2123 # endif
2124 # endif
2125 #endif /* !defined(__cpp_lib_saturation_arithmetic) && defined(__glibcxx_want_saturation_arithmetic) */
2126 #undef __glibcxx_want_saturation_arithmetic
2127 
2128 #if !defined(__cpp_lib_span_initializer_list)
2129 # if (__cplusplus > 202302L)
2130 # define __glibcxx_span_initializer_list 202311L
2131 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_span_initializer_list)
2132 # define __cpp_lib_span_initializer_list 202311L
2133 # endif
2134 # endif
2135 #endif /* !defined(__cpp_lib_span_initializer_list) && defined(__glibcxx_want_span_initializer_list) */
2136 #undef __glibcxx_want_span_initializer_list
2137 
2138 #if !defined(__cpp_lib_text_encoding)
2139 # if (__cplusplus > 202302L) && _GLIBCXX_HOSTED && (_GLIBCXX_USE_NL_LANGINFO_L)
2140 # define __glibcxx_text_encoding 202306L
2141 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_text_encoding)
2142 # define __cpp_lib_text_encoding 202306L
2143 # endif
2144 # endif
2145 #endif /* !defined(__cpp_lib_text_encoding) && defined(__glibcxx_want_text_encoding) */
2146 #undef __glibcxx_want_text_encoding
2147 
2148 #if !defined(__cpp_lib_ranges_to_input)
2149 # if (__cplusplus > 202302L)
2150 # define __glibcxx_ranges_to_input 202502L
2151 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_to_input)
2152 # define __cpp_lib_ranges_to_input 202502L
2153 # endif
2154 # endif
2155 #endif /* !defined(__cpp_lib_ranges_to_input) && defined(__glibcxx_want_ranges_to_input) */
2156 #undef __glibcxx_want_ranges_to_input
2157 
2158 #if !defined(__cpp_lib_to_string)
2159 # if (__cplusplus > 202302L) && _GLIBCXX_HOSTED && (__glibcxx_to_chars)
2160 # define __glibcxx_to_string 202306L
2161 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_string)
2162 # define __cpp_lib_to_string 202306L
2163 # endif
2164 # endif
2165 #endif /* !defined(__cpp_lib_to_string) && defined(__glibcxx_want_to_string) */
2166 #undef __glibcxx_want_to_string
2167 
2168 #if !defined(__cpp_lib_modules)
2169 # if (__cplusplus >= 202002L) && (__cpp_modules)
2170 # define __glibcxx_modules 202207L
2171 # if defined(__glibcxx_want_all) || defined(__glibcxx_want_modules)
2172 # define __cpp_lib_modules 202207L
2173 # endif
2174 # endif
2175 #endif /* !defined(__cpp_lib_modules) && defined(__glibcxx_want_modules) */
2176 #undef __glibcxx_want_modules
2177 
2178 #undef __glibcxx_want_all