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