Home | History | Annotate | Line # | Download | only in docs
      1 .. _FeatureTestMacroTable:
      2 
      3 ==========================
      4 Feature Test Macro Support
      5 ==========================
      6 
      7 .. contents::
      8    :local:
      9 
     10 Overview
     11 ========
     12 
     13 This file documents the feature test macros currently supported by libc++.
     14 
     15 .. _feature-status:
     16 
     17 Status
     18 ======
     19 
     20 .. table:: Current Status
     21      :name: feature-status-table
     22      :widths: auto
     23 
     24     ================================================= =================
     25     Macro Name                                        Value
     26     ================================================= =================
     27     **C++ 14**
     28     -------------------------------------------------------------------
     29     ``__cpp_lib_chrono_udls``                         ``201304L``
     30     ------------------------------------------------- -----------------
     31     ``__cpp_lib_complex_udls``                        ``201309L``
     32     ------------------------------------------------- -----------------
     33     ``__cpp_lib_exchange_function``                   ``201304L``
     34     ------------------------------------------------- -----------------
     35     ``__cpp_lib_generic_associative_lookup``          ``201304L``
     36     ------------------------------------------------- -----------------
     37     ``__cpp_lib_integer_sequence``                    ``201304L``
     38     ------------------------------------------------- -----------------
     39     ``__cpp_lib_integral_constant_callable``          ``201304L``
     40     ------------------------------------------------- -----------------
     41     ``__cpp_lib_is_final``                            ``201402L``
     42     ------------------------------------------------- -----------------
     43     ``__cpp_lib_is_null_pointer``                     ``201309L``
     44     ------------------------------------------------- -----------------
     45     ``__cpp_lib_make_reverse_iterator``               ``201402L``
     46     ------------------------------------------------- -----------------
     47     ``__cpp_lib_make_unique``                         ``201304L``
     48     ------------------------------------------------- -----------------
     49     ``__cpp_lib_null_iterators``                      ``201304L``
     50     ------------------------------------------------- -----------------
     51     ``__cpp_lib_quoted_string_io``                    ``201304L``
     52     ------------------------------------------------- -----------------
     53     ``__cpp_lib_result_of_sfinae``                    ``201210L``
     54     ------------------------------------------------- -----------------
     55     ``__cpp_lib_robust_nonmodifying_seq_ops``         ``201304L``
     56     ------------------------------------------------- -----------------
     57     ``__cpp_lib_shared_timed_mutex``                  ``201402L``
     58     ------------------------------------------------- -----------------
     59     ``__cpp_lib_string_udls``                         ``201304L``
     60     ------------------------------------------------- -----------------
     61     ``__cpp_lib_transformation_trait_aliases``        ``201304L``
     62     ------------------------------------------------- -----------------
     63     ``__cpp_lib_transparent_operators``               ``201210L``
     64     ------------------------------------------------- -----------------
     65     ``__cpp_lib_tuple_element_t``                     ``201402L``
     66     ------------------------------------------------- -----------------
     67     ``__cpp_lib_tuples_by_type``                      ``201304L``
     68     ------------------------------------------------- -----------------
     69     **C++ 17**
     70     -------------------------------------------------------------------
     71     ``__cpp_lib_addressof_constexpr``                 ``201603L``
     72     ------------------------------------------------- -----------------
     73     ``__cpp_lib_allocator_traits_is_always_equal``    ``201411L``
     74     ------------------------------------------------- -----------------
     75     ``__cpp_lib_any``                                 ``201606L``
     76     ------------------------------------------------- -----------------
     77     ``__cpp_lib_apply``                               ``201603L``
     78     ------------------------------------------------- -----------------
     79     ``__cpp_lib_array_constexpr``                     ``201603L``
     80     ------------------------------------------------- -----------------
     81     ``__cpp_lib_as_const``                            ``201510L``
     82     ------------------------------------------------- -----------------
     83     ``__cpp_lib_atomic_is_always_lock_free``          ``201603L``
     84     ------------------------------------------------- -----------------
     85     ``__cpp_lib_bool_constant``                       ``201505L``
     86     ------------------------------------------------- -----------------
     87     ``__cpp_lib_boyer_moore_searcher``                *unimplemented*
     88     ------------------------------------------------- -----------------
     89     ``__cpp_lib_byte``                                ``201603L``
     90     ------------------------------------------------- -----------------
     91     ``__cpp_lib_chrono``                              ``201611L``
     92     ------------------------------------------------- -----------------
     93     ``__cpp_lib_clamp``                               ``201603L``
     94     ------------------------------------------------- -----------------
     95     ``__cpp_lib_enable_shared_from_this``             ``201603L``
     96     ------------------------------------------------- -----------------
     97     ``__cpp_lib_execution``                           *unimplemented*
     98     ------------------------------------------------- -----------------
     99     ``__cpp_lib_filesystem``                          ``201703L``
    100     ------------------------------------------------- -----------------
    101     ``__cpp_lib_gcd_lcm``                             ``201606L``
    102     ------------------------------------------------- -----------------
    103     ``__cpp_lib_hardware_interference_size``          *unimplemented*
    104     ------------------------------------------------- -----------------
    105     ``__cpp_lib_has_unique_object_representations``   ``201606L``
    106     ------------------------------------------------- -----------------
    107     ``__cpp_lib_hypot``                               ``201603L``
    108     ------------------------------------------------- -----------------
    109     ``__cpp_lib_incomplete_container_elements``       ``201505L``
    110     ------------------------------------------------- -----------------
    111     ``__cpp_lib_invoke``                              ``201411L``
    112     ------------------------------------------------- -----------------
    113     ``__cpp_lib_is_aggregate``                        ``201703L``
    114     ------------------------------------------------- -----------------
    115     ``__cpp_lib_is_invocable``                        ``201703L``
    116     ------------------------------------------------- -----------------
    117     ``__cpp_lib_is_swappable``                        ``201603L``
    118     ------------------------------------------------- -----------------
    119     ``__cpp_lib_launder``                             ``201606L``
    120     ------------------------------------------------- -----------------
    121     ``__cpp_lib_logical_traits``                      ``201510L``
    122     ------------------------------------------------- -----------------
    123     ``__cpp_lib_make_from_tuple``                     ``201606L``
    124     ------------------------------------------------- -----------------
    125     ``__cpp_lib_map_try_emplace``                     ``201411L``
    126     ------------------------------------------------- -----------------
    127     ``__cpp_lib_math_special_functions``              *unimplemented*
    128     ------------------------------------------------- -----------------
    129     ``__cpp_lib_memory_resource``                     *unimplemented*
    130     ------------------------------------------------- -----------------
    131     ``__cpp_lib_node_extract``                        ``201606L``
    132     ------------------------------------------------- -----------------
    133     ``__cpp_lib_nonmember_container_access``          ``201411L``
    134     ------------------------------------------------- -----------------
    135     ``__cpp_lib_not_fn``                              ``201603L``
    136     ------------------------------------------------- -----------------
    137     ``__cpp_lib_optional``                            ``201606L``
    138     ------------------------------------------------- -----------------
    139     ``__cpp_lib_parallel_algorithm``                  *unimplemented*
    140     ------------------------------------------------- -----------------
    141     ``__cpp_lib_raw_memory_algorithms``               ``201606L``
    142     ------------------------------------------------- -----------------
    143     ``__cpp_lib_sample``                              ``201603L``
    144     ------------------------------------------------- -----------------
    145     ``__cpp_lib_scoped_lock``                         ``201703L``
    146     ------------------------------------------------- -----------------
    147     ``__cpp_lib_shared_mutex``                        ``201505L``
    148     ------------------------------------------------- -----------------
    149     ``__cpp_lib_shared_ptr_arrays``                   ``201611L``
    150     ------------------------------------------------- -----------------
    151     ``__cpp_lib_shared_ptr_weak_type``                ``201606L``
    152     ------------------------------------------------- -----------------
    153     ``__cpp_lib_string_view``                         ``201606L``
    154     ------------------------------------------------- -----------------
    155     ``__cpp_lib_to_chars``                            *unimplemented*
    156     ------------------------------------------------- -----------------
    157     ``__cpp_lib_transparent_operators``               ``201510L``
    158     ------------------------------------------------- -----------------
    159     ``__cpp_lib_type_trait_variable_templates``       ``201510L``
    160     ------------------------------------------------- -----------------
    161     ``__cpp_lib_uncaught_exceptions``                 ``201411L``
    162     ------------------------------------------------- -----------------
    163     ``__cpp_lib_unordered_map_try_emplace``           ``201411L``
    164     ------------------------------------------------- -----------------
    165     ``__cpp_lib_variant``                             ``202102L``
    166     ------------------------------------------------- -----------------
    167     ``__cpp_lib_void_t``                              ``201411L``
    168     ------------------------------------------------- -----------------
    169     **C++ 20**
    170     -------------------------------------------------------------------
    171     ``__cpp_lib_array_constexpr``                     ``201811L``
    172     ------------------------------------------------- -----------------
    173     ``__cpp_lib_assume_aligned``                      *unimplemented*
    174     ------------------------------------------------- -----------------
    175     ``__cpp_lib_atomic_flag_test``                    ``201907L``
    176     ------------------------------------------------- -----------------
    177     ``__cpp_lib_atomic_float``                        *unimplemented*
    178     ------------------------------------------------- -----------------
    179     ``__cpp_lib_atomic_lock_free_type_aliases``       ``201907L``
    180     ------------------------------------------------- -----------------
    181     ``__cpp_lib_atomic_ref``                          *unimplemented*
    182     ------------------------------------------------- -----------------
    183     ``__cpp_lib_atomic_shared_ptr``                   *unimplemented*
    184     ------------------------------------------------- -----------------
    185     ``__cpp_lib_atomic_value_initialization``         *unimplemented*
    186     ------------------------------------------------- -----------------
    187     ``__cpp_lib_atomic_wait``                         ``201907L``
    188     ------------------------------------------------- -----------------
    189     ``__cpp_lib_barrier``                             ``201907L``
    190     ------------------------------------------------- -----------------
    191     ``__cpp_lib_bind_front``                          ``201907L``
    192     ------------------------------------------------- -----------------
    193     ``__cpp_lib_bit_cast``                            *unimplemented*
    194     ------------------------------------------------- -----------------
    195     ``__cpp_lib_bitops``                              *unimplemented*
    196     ------------------------------------------------- -----------------
    197     ``__cpp_lib_bounded_array_traits``                ``201902L``
    198     ------------------------------------------------- -----------------
    199     ``__cpp_lib_char8_t``                             ``201811L``
    200     ------------------------------------------------- -----------------
    201     ``__cpp_lib_concepts``                            ``202002L``
    202     ------------------------------------------------- -----------------
    203     ``__cpp_lib_constexpr_algorithms``                ``201806L``
    204     ------------------------------------------------- -----------------
    205     ``__cpp_lib_constexpr_complex``                   *unimplemented*
    206     ------------------------------------------------- -----------------
    207     ``__cpp_lib_constexpr_dynamic_alloc``             ``201907L``
    208     ------------------------------------------------- -----------------
    209     ``__cpp_lib_constexpr_functional``                ``201907L``
    210     ------------------------------------------------- -----------------
    211     ``__cpp_lib_constexpr_iterator``                  ``201811L``
    212     ------------------------------------------------- -----------------
    213     ``__cpp_lib_constexpr_memory``                    ``201811L``
    214     ------------------------------------------------- -----------------
    215     ``__cpp_lib_constexpr_numeric``                   ``201911L``
    216     ------------------------------------------------- -----------------
    217     ``__cpp_lib_constexpr_string``                    ``201811L``
    218     ------------------------------------------------- -----------------
    219     ``__cpp_lib_constexpr_string_view``               ``201811L``
    220     ------------------------------------------------- -----------------
    221     ``__cpp_lib_constexpr_tuple``                     ``201811L``
    222     ------------------------------------------------- -----------------
    223     ``__cpp_lib_constexpr_utility``                   ``201811L``
    224     ------------------------------------------------- -----------------
    225     ``__cpp_lib_constexpr_vector``                    *unimplemented*
    226     ------------------------------------------------- -----------------
    227     ``__cpp_lib_coroutine``                           *unimplemented*
    228     ------------------------------------------------- -----------------
    229     ``__cpp_lib_destroying_delete``                   ``201806L``
    230     ------------------------------------------------- -----------------
    231     ``__cpp_lib_endian``                              ``201907L``
    232     ------------------------------------------------- -----------------
    233     ``__cpp_lib_erase_if``                            ``202002L``
    234     ------------------------------------------------- -----------------
    235     ``__cpp_lib_execution``                           *unimplemented*
    236     ------------------------------------------------- -----------------
    237     ``__cpp_lib_format``                              *unimplemented*
    238     ------------------------------------------------- -----------------
    239     ``__cpp_lib_generic_unordered_lookup``            ``201811L``
    240     ------------------------------------------------- -----------------
    241     ``__cpp_lib_int_pow2``                            ``202002L``
    242     ------------------------------------------------- -----------------
    243     ``__cpp_lib_integer_comparison_functions``        ``202002L``
    244     ------------------------------------------------- -----------------
    245     ``__cpp_lib_interpolate``                         ``201902L``
    246     ------------------------------------------------- -----------------
    247     ``__cpp_lib_is_constant_evaluated``               ``201811L``
    248     ------------------------------------------------- -----------------
    249     ``__cpp_lib_is_layout_compatible``                *unimplemented*
    250     ------------------------------------------------- -----------------
    251     ``__cpp_lib_is_nothrow_convertible``              ``201806L``
    252     ------------------------------------------------- -----------------
    253     ``__cpp_lib_is_pointer_interconvertible``         *unimplemented*
    254     ------------------------------------------------- -----------------
    255     ``__cpp_lib_jthread``                             *unimplemented*
    256     ------------------------------------------------- -----------------
    257     ``__cpp_lib_latch``                               ``201907L``
    258     ------------------------------------------------- -----------------
    259     ``__cpp_lib_list_remove_return_type``             ``201806L``
    260     ------------------------------------------------- -----------------
    261     ``__cpp_lib_math_constants``                      ``201907L``
    262     ------------------------------------------------- -----------------
    263     ``__cpp_lib_polymorphic_allocator``               *unimplemented*
    264     ------------------------------------------------- -----------------
    265     ``__cpp_lib_ranges``                              *unimplemented*
    266     ------------------------------------------------- -----------------
    267     ``__cpp_lib_remove_cvref``                        ``201711L``
    268     ------------------------------------------------- -----------------
    269     ``__cpp_lib_semaphore``                           ``201907L``
    270     ------------------------------------------------- -----------------
    271     ``__cpp_lib_shift``                               ``201806L``
    272     ------------------------------------------------- -----------------
    273     ``__cpp_lib_smart_ptr_for_overwrite``             *unimplemented*
    274     ------------------------------------------------- -----------------
    275     ``__cpp_lib_source_location``                     *unimplemented*
    276     ------------------------------------------------- -----------------
    277     ``__cpp_lib_span``                                ``202002L``
    278     ------------------------------------------------- -----------------
    279     ``__cpp_lib_ssize``                               ``201902L``
    280     ------------------------------------------------- -----------------
    281     ``__cpp_lib_starts_ends_with``                    ``201711L``
    282     ------------------------------------------------- -----------------
    283     ``__cpp_lib_string_view``                         ``201803L``
    284     ------------------------------------------------- -----------------
    285     ``__cpp_lib_syncbuf``                             *unimplemented*
    286     ------------------------------------------------- -----------------
    287     ``__cpp_lib_three_way_comparison``                *unimplemented*
    288     ------------------------------------------------- -----------------
    289     ``__cpp_lib_to_address``                          ``201711L``
    290     ------------------------------------------------- -----------------
    291     ``__cpp_lib_to_array``                            ``201907L``
    292     ------------------------------------------------- -----------------
    293     ``__cpp_lib_unwrap_ref``                          ``201811L``
    294     ------------------------------------------------- -----------------
    295     **C++ 2b**
    296     -------------------------------------------------------------------
    297     ``__cpp_lib_is_scoped_enum``                      ``202011L``
    298     ------------------------------------------------- -----------------
    299     ``__cpp_lib_stacktrace``                          *unimplemented*
    300     ------------------------------------------------- -----------------
    301     ``__cpp_lib_stdatomic_h``                         *unimplemented*
    302     ------------------------------------------------- -----------------
    303     ``__cpp_lib_string_contains``                     ``202011L``
    304     ------------------------------------------------- -----------------
    305     ``__cpp_lib_to_underlying``                       ``202102L``
    306     ================================================= =================
    307 
    308