Home | History | Annotate | Line # | Download | only in std
      1      1.1  mrg // -*- C++ -*- Libstdc++ version details header.
      2      1.1  mrg 
      3  1.1.1.3  mrg // Copyright (C) 2018-2022 Free Software Foundation, Inc.
      4      1.1  mrg //
      5      1.1  mrg // This file is part of the GNU ISO C++ Library.  This library is free
      6      1.1  mrg // software; you can redistribute it and/or modify it under the
      7      1.1  mrg // terms of the GNU General Public License as published by the
      8      1.1  mrg // Free Software Foundation; either version 3, or (at your option)
      9      1.1  mrg // any later version.
     10      1.1  mrg 
     11      1.1  mrg // This library is distributed in the hope that it will be useful,
     12      1.1  mrg // but WITHOUT ANY WARRANTY; without even the implied warranty of
     13      1.1  mrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14      1.1  mrg // GNU General Public License for more details.
     15      1.1  mrg 
     16      1.1  mrg // Under Section 7 of GPL version 3, you are granted additional
     17      1.1  mrg // permissions described in the GCC Runtime Library Exception, version
     18      1.1  mrg // 3.1, as published by the Free Software Foundation.
     19      1.1  mrg 
     20      1.1  mrg // You should have received a copy of the GNU General Public License and
     21      1.1  mrg // a copy of the GCC Runtime Library Exception along with this program;
     22      1.1  mrg // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     23      1.1  mrg // <http://www.gnu.org/licenses/>.
     24      1.1  mrg 
     25      1.1  mrg /** @file version
     26      1.1  mrg  *  This is a Standard C++ Library file.  You should @c \#include this file
     27      1.1  mrg  *  in your programs, rather than any of the @a *.h implementation files.
     28      1.1  mrg  */
     29      1.1  mrg 
     30      1.1  mrg #ifndef _GLIBCXX_VERSION_INCLUDED
     31      1.1  mrg #define _GLIBCXX_VERSION_INCLUDED
     32      1.1  mrg 
     33      1.1  mrg #pragma GCC system_header
     34      1.1  mrg 
     35      1.1  mrg #include <bits/c++config.h>
     36      1.1  mrg 
     37      1.1  mrg // c++03
     38  1.1.1.2  mrg #if _GLIBCXX_HOSTED
     39  1.1.1.3  mrg # define __cpp_lib_incomplete_container_elements 201505L
     40  1.1.1.2  mrg #endif
     41      1.1  mrg 
     42      1.1  mrg #if !defined(__STRICT_ANSI__)
     43      1.1  mrg // gnu++03
     44      1.1  mrg # define __cpp_lib_uncaught_exceptions 201411L
     45      1.1  mrg #endif
     46      1.1  mrg 
     47      1.1  mrg #if __cplusplus >= 201103L
     48      1.1  mrg // c++11
     49  1.1.1.3  mrg #define __cpp_lib_is_null_pointer 201309L
     50  1.1.1.3  mrg #define __cpp_lib_result_of_sfinae 201210L
     51  1.1.1.2  mrg 
     52  1.1.1.2  mrg #if _GLIBCXX_HOSTED
     53  1.1.1.3  mrg # define __cpp_lib_allocator_traits_is_always_equal 201411L
     54  1.1.1.3  mrg #if __cplusplus <= 201703L // N.B. updated value in C++20
     55  1.1.1.2  mrg # define __cpp_lib_shared_ptr_arrays 201611L
     56  1.1.1.2  mrg #endif
     57  1.1.1.3  mrg #endif
     58      1.1  mrg 
     59      1.1  mrg #if !defined(__STRICT_ANSI__)
     60      1.1  mrg // gnu++11
     61  1.1.1.3  mrg # define __cpp_lib_is_swappable 201603L
     62  1.1.1.3  mrg # define __cpp_lib_void_t 201411L
     63  1.1.1.2  mrg # if _GLIBCXX_HOSTED
     64  1.1.1.3  mrg #  define __cpp_lib_enable_shared_from_this 201603L
     65  1.1.1.2  mrg # endif
     66      1.1  mrg #endif
     67      1.1  mrg 
     68      1.1  mrg // For C++11 and later we support ISO/IEC 29124 Mathematical Special Functions
     69      1.1  mrg #define __STDCPP_MATH_SPEC_FUNCS__ 201003L
     70      1.1  mrg 
     71      1.1  mrg #if __cplusplus >= 201402L
     72      1.1  mrg // c++14
     73  1.1.1.2  mrg #if __cpp_impl_coroutine
     74  1.1.1.2  mrg # define __cpp_lib_coroutine 201902L
     75  1.1.1.2  mrg #endif
     76  1.1.1.3  mrg #define __cpp_lib_integral_constant_callable 201304L
     77      1.1  mrg #define __cpp_lib_is_final 201402L
     78  1.1.1.3  mrg #define __cpp_lib_transformation_trait_aliases 201304L
     79  1.1.1.2  mrg 
     80  1.1.1.2  mrg #if _GLIBCXX_HOSTED
     81  1.1.1.3  mrg # define __cpp_lib_chrono_udls 201304L
     82  1.1.1.3  mrg # define __cpp_lib_complex_udls 201309L
     83  1.1.1.3  mrg # define __cpp_lib_exchange_function 201304L
     84  1.1.1.3  mrg # define __cpp_lib_generic_associative_lookup 201304L
     85  1.1.1.3  mrg # define __cpp_lib_integer_sequence 201304L
     86  1.1.1.3  mrg # define __cpp_lib_make_reverse_iterator 201402L
     87  1.1.1.3  mrg # define __cpp_lib_make_unique 201304L
     88  1.1.1.2  mrg # ifndef _GLIBCXX_DEBUG // PR libstdc++/70303
     89  1.1.1.2  mrg #  define __cpp_lib_null_iterators 201304L
     90  1.1.1.2  mrg # endif
     91  1.1.1.3  mrg # define __cpp_lib_quoted_string_io 201304L
     92  1.1.1.3  mrg # define __cpp_lib_robust_nonmodifying_seq_ops 201304L
     93  1.1.1.2  mrg # ifdef _GLIBCXX_HAS_GTHREADS
     94  1.1.1.3  mrg #  define __cpp_lib_shared_timed_mutex 201402L
     95  1.1.1.2  mrg # endif
     96  1.1.1.3  mrg # define __cpp_lib_string_udls 201304L
     97  1.1.1.3  mrg # define __cpp_lib_transparent_operators 201510L
     98  1.1.1.2  mrg # define __cpp_lib_tuple_element_t 201402L
     99  1.1.1.3  mrg # define __cpp_lib_tuples_by_type 201304L
    100  1.1.1.2  mrg #endif
    101      1.1  mrg 
    102      1.1  mrg #if __cplusplus >= 201703L
    103      1.1  mrg // c++17
    104  1.1.1.3  mrg #define __cpp_lib_addressof_constexpr 201603L
    105  1.1.1.3  mrg #define __cpp_lib_atomic_is_always_lock_free 201603L
    106  1.1.1.3  mrg #define __cpp_lib_bool_constant 201505L
    107  1.1.1.3  mrg #define __cpp_lib_byte 201603L
    108      1.1  mrg #ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP
    109  1.1.1.3  mrg # define __cpp_lib_has_unique_object_representations 201606L
    110  1.1.1.3  mrg #endif
    111  1.1.1.3  mrg #ifdef __GCC_DESTRUCTIVE_SIZE
    112  1.1.1.3  mrg # define __cpp_lib_hardware_interference_size 201703L
    113      1.1  mrg #endif
    114      1.1  mrg #ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE
    115  1.1.1.3  mrg # define __cpp_lib_is_aggregate 201703L
    116      1.1  mrg #endif
    117  1.1.1.3  mrg #define __cpp_lib_is_invocable 201703L
    118  1.1.1.3  mrg #define __cpp_lib_is_swappable 201603L
    119      1.1  mrg #ifdef _GLIBCXX_HAVE_BUILTIN_LAUNDER
    120  1.1.1.3  mrg # define __cpp_lib_launder 201606L
    121      1.1  mrg #endif
    122  1.1.1.3  mrg #define __cpp_lib_logical_traits 201510L
    123  1.1.1.2  mrg #define __cpp_lib_type_trait_variable_templates 201510L
    124  1.1.1.2  mrg #define __cpp_lib_uncaught_exceptions 201411L
    125  1.1.1.3  mrg #define __cpp_lib_void_t 201411L
    126  1.1.1.2  mrg 
    127  1.1.1.2  mrg #if _GLIBCXX_HOSTED
    128  1.1.1.2  mrg #define __cpp_lib_any 201606L
    129  1.1.1.3  mrg #define __cpp_lib_apply 201603L
    130  1.1.1.2  mrg #if __cplusplus == 201703L // N.B. updated value in C++20
    131  1.1.1.2  mrg # define __cpp_lib_array_constexpr 201803L
    132  1.1.1.2  mrg #endif
    133  1.1.1.3  mrg #define __cpp_lib_as_const 201510L
    134  1.1.1.3  mrg #define __cpp_lib_boyer_moore_searcher 201603L
    135  1.1.1.3  mrg #define __cpp_lib_chrono 201611L
    136  1.1.1.3  mrg #define __cpp_lib_clamp 201603L
    137  1.1.1.2  mrg #if __cplusplus == 201703L // N.B. updated value in C++20
    138  1.1.1.3  mrg # if _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED
    139  1.1.1.3  mrg #  define __cpp_lib_constexpr_char_traits 201611L
    140  1.1.1.3  mrg #  define __cpp_lib_constexpr_string 201611L
    141  1.1.1.3  mrg # endif
    142  1.1.1.2  mrg #endif
    143  1.1.1.3  mrg #define __cpp_lib_enable_shared_from_this 201603L
    144  1.1.1.2  mrg #define __cpp_lib_execution 201902L // FIXME: should be 201603L
    145  1.1.1.3  mrg #define __cpp_lib_filesystem 201703L
    146  1.1.1.3  mrg #define __cpp_lib_gcd 201606L
    147  1.1.1.3  mrg #define __cpp_lib_gcd_lcm 201606L
    148  1.1.1.3  mrg #define __cpp_lib_hypot 201603L
    149  1.1.1.2  mrg #define __cpp_lib_invoke 201411L
    150  1.1.1.3  mrg #define __cpp_lib_lcm 201606L
    151  1.1.1.3  mrg #define __cpp_lib_make_from_tuple 201606L
    152  1.1.1.3  mrg #define __cpp_lib_map_try_emplace 201411L
    153      1.1  mrg #define __cpp_lib_math_special_functions 201603L
    154      1.1  mrg #ifdef _GLIBCXX_HAS_GTHREADS
    155  1.1.1.3  mrg # define __cpp_lib_memory_resource 201603L
    156      1.1  mrg #else
    157      1.1  mrg # define __cpp_lib_memory_resource 1
    158      1.1  mrg #endif
    159  1.1.1.3  mrg #define __cpp_lib_node_extract 201606L
    160  1.1.1.3  mrg #define __cpp_lib_nonmember_container_access 201411L
    161  1.1.1.3  mrg #define __cpp_lib_not_fn 201603L
    162  1.1.1.3  mrg #if __cplusplus == 201703L // N.B. updated value in C++20
    163  1.1.1.3  mrg # define __cpp_lib_optional 201606L
    164  1.1.1.3  mrg #endif
    165  1.1.1.2  mrg #define __cpp_lib_parallel_algorithm 201603L
    166      1.1  mrg #define __cpp_lib_raw_memory_algorithms 201606L
    167  1.1.1.3  mrg #define __cpp_lib_sample 201603L
    168      1.1  mrg #ifdef _GLIBCXX_HAS_GTHREADS
    169  1.1.1.3  mrg # define __cpp_lib_scoped_lock 201703L
    170  1.1.1.3  mrg # define __cpp_lib_shared_mutex 201505L
    171      1.1  mrg #endif
    172  1.1.1.3  mrg #define __cpp_lib_shared_ptr_weak_type 201606L
    173  1.1.1.2  mrg #define __cpp_lib_string_view 201803L
    174  1.1.1.3  mrg #if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 \
    175  1.1.1.3  mrg     && __SIZE_WIDTH__ >= 32
    176  1.1.1.3  mrg # define __cpp_lib_to_chars 201611L
    177  1.1.1.3  mrg #endif
    178  1.1.1.3  mrg #define __cpp_lib_unordered_map_try_emplace 201411L
    179  1.1.1.3  mrg #if !(__cpp_concepts >= 202002L && __cpp_constexpr >= 201811L)
    180  1.1.1.3  mrg // N.B. updated value in C++20
    181  1.1.1.3  mrg # define __cpp_lib_variant 202102L
    182  1.1.1.3  mrg #endif
    183  1.1.1.2  mrg #endif
    184      1.1  mrg 
    185  1.1.1.3  mrg #if __cplusplus >= 202002L
    186  1.1.1.3  mrg // c++20
    187  1.1.1.3  mrg #define __cpp_lib_atomic_flag_test 201907L
    188  1.1.1.2  mrg #define __cpp_lib_atomic_float 201711L
    189  1.1.1.2  mrg #define __cpp_lib_atomic_ref 201806L
    190  1.1.1.2  mrg #define __cpp_lib_atomic_value_initialization 201911L
    191  1.1.1.3  mrg #if __has_builtin(__builtin_bit_cast)
    192  1.1.1.3  mrg # define __cpp_lib_bit_cast 201806L
    193  1.1.1.3  mrg #endif
    194  1.1.1.2  mrg #define __cpp_lib_bitops 201907L
    195      1.1  mrg #define __cpp_lib_bounded_array_traits 201902L
    196  1.1.1.2  mrg // __cpp_lib_char8_t is defined in <bits/c++config.h>
    197  1.1.1.2  mrg #if __cpp_concepts >= 201907L
    198  1.1.1.2  mrg # define __cpp_lib_concepts 202002L
    199  1.1.1.2  mrg #endif
    200      1.1  mrg #if __cpp_impl_destroying_delete
    201      1.1  mrg # define __cpp_lib_destroying_delete 201806L
    202      1.1  mrg #endif
    203      1.1  mrg #define __cpp_lib_endian 201907L
    204  1.1.1.2  mrg #define __cpp_lib_int_pow2 202002L
    205  1.1.1.3  mrg #ifdef _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED
    206      1.1  mrg # define __cpp_lib_is_constant_evaluated 201811L
    207      1.1  mrg #endif
    208  1.1.1.3  mrg #if __has_builtin(__is_layout_compatible) \
    209  1.1.1.3  mrg   && __has_builtin(__builtin_is_corresponding_member)
    210  1.1.1.3  mrg # define __cpp_lib_is_layout_compatible 201907L
    211  1.1.1.3  mrg #endif
    212  1.1.1.2  mrg #define __cpp_lib_is_nothrow_convertible 201806L
    213  1.1.1.3  mrg #if __has_builtin(__is_pointer_interconvertible_base_of) \
    214  1.1.1.3  mrg  && __has_builtin(__builtin_is_pointer_interconvertible_with_class)
    215  1.1.1.3  mrg # define __cpp_lib_is_pointer_interconvertible 201907L
    216  1.1.1.3  mrg #endif
    217  1.1.1.2  mrg #define __cpp_lib_remove_cvref 201711L
    218  1.1.1.3  mrg #if __has_builtin(__builtin_source_location)
    219  1.1.1.3  mrg # define __cpp_lib_source_location 201907L
    220  1.1.1.3  mrg #endif
    221  1.1.1.2  mrg #if __cpp_impl_three_way_comparison >= 201907L && __cpp_lib_concepts
    222  1.1.1.2  mrg # define __cpp_lib_three_way_comparison 201907L
    223  1.1.1.2  mrg #endif
    224  1.1.1.2  mrg #define __cpp_lib_type_identity 201806L
    225  1.1.1.2  mrg #define __cpp_lib_unwrap_ref 201811L
    226  1.1.1.2  mrg 
    227  1.1.1.2  mrg #if _GLIBCXX_HOSTED
    228  1.1.1.2  mrg #define __cpp_lib_array_constexpr 201811L
    229  1.1.1.2  mrg #define __cpp_lib_assume_aligned 201811L
    230  1.1.1.3  mrg #define __cpp_lib_atomic_shared_ptr 201711L
    231  1.1.1.3  mrg #if defined _GLIBCXX_HAS_GTHREADS || defined _GLIBCXX_HAVE_LINUX_FUTEX
    232  1.1.1.3  mrg # define __cpp_lib_atomic_wait 201907L
    233  1.1.1.3  mrg # if __cpp_aligned_new
    234  1.1.1.3  mrg #  define __cpp_lib_barrier 201907L
    235  1.1.1.3  mrg # endif
    236  1.1.1.3  mrg #endif
    237  1.1.1.2  mrg #define __cpp_lib_bind_front 201907L
    238  1.1.1.2  mrg // FIXME: #define __cpp_lib_execution 201902L
    239  1.1.1.2  mrg #define __cpp_lib_integer_comparison_functions 202002L
    240  1.1.1.2  mrg #define __cpp_lib_constexpr_algorithms 201806L
    241  1.1.1.2  mrg #ifdef __cpp_lib_is_constant_evaluated
    242  1.1.1.2  mrg # define __cpp_lib_constexpr_char_traits 201811L
    243  1.1.1.2  mrg #endif
    244  1.1.1.2  mrg #define __cpp_lib_constexpr_complex 201711L
    245  1.1.1.2  mrg #define __cpp_lib_constexpr_dynamic_alloc 201907L
    246  1.1.1.2  mrg #define __cpp_lib_constexpr_functional 201907L
    247  1.1.1.2  mrg #define __cpp_lib_constexpr_iterator 201811L
    248  1.1.1.2  mrg #define __cpp_lib_constexpr_memory 201811L
    249  1.1.1.2  mrg #define __cpp_lib_constexpr_numeric 201911L
    250  1.1.1.2  mrg #ifdef __cpp_lib_is_constant_evaluated
    251  1.1.1.3  mrg # if _GLIBCXX_USE_CXX11_ABI
    252  1.1.1.3  mrg #  define __cpp_lib_constexpr_string 201907L
    253  1.1.1.3  mrg # else
    254  1.1.1.3  mrg #  define __cpp_lib_constexpr_string 201811L
    255  1.1.1.3  mrg # endif
    256  1.1.1.2  mrg #endif
    257  1.1.1.2  mrg #define __cpp_lib_constexpr_string_view 201811L
    258  1.1.1.2  mrg #define __cpp_lib_constexpr_tuple 201811L
    259  1.1.1.2  mrg #define __cpp_lib_constexpr_utility 201811L
    260  1.1.1.3  mrg #define __cpp_lib_constexpr_vector 201907L
    261  1.1.1.2  mrg #define __cpp_lib_erase_if 202002L
    262  1.1.1.3  mrg #define __cpp_lib_generic_unordered_lookup 201811L
    263  1.1.1.2  mrg #define __cpp_lib_interpolate 201902L
    264  1.1.1.2  mrg #ifdef _GLIBCXX_HAS_GTHREADS
    265  1.1.1.2  mrg # define __cpp_lib_jthread 201911L
    266  1.1.1.2  mrg #endif
    267  1.1.1.3  mrg #if __cpp_lib_atomic_wait
    268  1.1.1.3  mrg # define __cpp_lib_latch 201907L
    269  1.1.1.3  mrg #endif
    270      1.1  mrg #define __cpp_lib_list_remove_return_type 201806L
    271  1.1.1.3  mrg #if __cpp_lib_concepts
    272  1.1.1.3  mrg # define __cpp_lib_make_obj_using_allocator 201811L
    273  1.1.1.3  mrg #endif
    274  1.1.1.2  mrg #define __cpp_lib_math_constants 201907L
    275  1.1.1.3  mrg #define __cpp_lib_optional 202106L
    276  1.1.1.2  mrg #define __cpp_lib_polymorphic_allocator 201902L
    277  1.1.1.2  mrg #if __cpp_lib_concepts
    278  1.1.1.3  mrg # define __cpp_lib_ranges 202110L
    279  1.1.1.3  mrg # define __cpp_lib_move_iterator_concept 202207L
    280  1.1.1.2  mrg #endif
    281  1.1.1.3  mrg #if __cpp_lib_atomic_wait || _GLIBCXX_HAVE_POSIX_SEMAPHORE
    282  1.1.1.3  mrg # define __cpp_lib_semaphore 201907L
    283  1.1.1.3  mrg #endif
    284  1.1.1.3  mrg #define __cpp_lib_shared_ptr_arrays 201707L
    285  1.1.1.2  mrg #define __cpp_lib_shift 201806L
    286  1.1.1.3  mrg #define __cpp_lib_smart_ptr_for_overwrite 202002L
    287  1.1.1.2  mrg #if __cpp_lib_concepts
    288  1.1.1.2  mrg # define __cpp_lib_span 202002L
    289  1.1.1.2  mrg #endif
    290  1.1.1.2  mrg #define __cpp_lib_ssize 201902L
    291  1.1.1.2  mrg #define __cpp_lib_starts_ends_with 201711L
    292  1.1.1.3  mrg # if _GLIBCXX_USE_CXX11_ABI
    293  1.1.1.3  mrg // Only supported with cxx11-abi
    294  1.1.1.3  mrg #  define __cpp_lib_syncbuf 201803L
    295  1.1.1.3  mrg # endif
    296  1.1.1.2  mrg #define __cpp_lib_to_address 201711L
    297  1.1.1.2  mrg #define __cpp_lib_to_array 201907L
    298  1.1.1.3  mrg #if __cpp_concepts >= 202002L && __cpp_constexpr >= 201811L
    299  1.1.1.3  mrg # define __cpp_lib_variant 202106L
    300  1.1.1.3  mrg #endif
    301  1.1.1.3  mrg #endif
    302  1.1.1.3  mrg 
    303  1.1.1.3  mrg #if __cplusplus > 202002L
    304  1.1.1.3  mrg // c++2b
    305  1.1.1.3  mrg #define __cpp_lib_byteswap 202110L
    306  1.1.1.3  mrg #define __cpp_lib_constexpr_typeinfo 202106L
    307  1.1.1.3  mrg #define __cpp_lib_is_scoped_enum 202011L
    308  1.1.1.3  mrg 
    309  1.1.1.3  mrg #if _GLIBCXX_HOSTED
    310  1.1.1.3  mrg #define __cpp_lib_adaptor_iterator_pair_constructor 202106L
    311  1.1.1.3  mrg #if __cpp_constexpr_dynamic_alloc
    312  1.1.1.3  mrg # undef __cpp_lib_constexpr_memory
    313  1.1.1.3  mrg # define __cpp_lib_constexpr_memory 202202L
    314  1.1.1.3  mrg #endif
    315  1.1.1.3  mrg #if __cpp_concepts >= 202002L
    316  1.1.1.3  mrg # define __cpp_lib_expected 202202L
    317  1.1.1.3  mrg #endif
    318  1.1.1.3  mrg #define __cpp_lib_invoke_r 202106L
    319  1.1.1.3  mrg #define __cpp_lib_ios_noreplace 202207L
    320  1.1.1.3  mrg #if __cpp_lib_concepts
    321  1.1.1.3  mrg # undef __cpp_lib_optional
    322  1.1.1.3  mrg # define __cpp_lib_optional 202110L
    323  1.1.1.3  mrg #endif
    324  1.1.1.3  mrg #define __cpp_lib_move_only_function 202110L
    325  1.1.1.3  mrg #if __cpp_lib_span
    326  1.1.1.3  mrg # define __cpp_lib_spanstream 202106L
    327  1.1.1.3  mrg #endif
    328  1.1.1.3  mrg #if _GLIBCXX_HAVE_STACKTRACE
    329  1.1.1.3  mrg # define __cpp_lib_stacktrace 202011L
    330  1.1.1.3  mrg #endif
    331  1.1.1.3  mrg #define __cpp_lib_stdatomic_h 202011L
    332  1.1.1.3  mrg #define __cpp_lib_string_contains 202011L
    333  1.1.1.3  mrg #if _GLIBCXX_USE_CXX11_ABI // Only supported with cxx11-abi
    334  1.1.1.3  mrg # define __cpp_lib_string_resize_and_overwrite 202110L
    335  1.1.1.3  mrg #endif
    336  1.1.1.3  mrg #define __cpp_lib_to_underlying 202102L
    337  1.1.1.3  mrg #define __cpp_lib_unreachable 202202L
    338  1.1.1.2  mrg #endif
    339  1.1.1.3  mrg #endif // C++2b
    340  1.1.1.3  mrg #endif // C++20
    341      1.1  mrg #endif // C++17
    342      1.1  mrg #endif // C++14
    343      1.1  mrg #endif // C++11
    344      1.1  mrg 
    345      1.1  mrg #endif // _GLIBCXX_VERSION_INCLUDED
    346