FeatureTestMacroTable.rst 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. .. _FeatureTestMacroTable:
  2. ==========================
  3. Feature Test Macro Support
  4. ==========================
  5. .. contents::
  6. :local:
  7. Overview
  8. ========
  9. This file documents the feature test macros currently supported by libc++.
  10. .. _feature-status:
  11. Status
  12. ======
  13. .. table:: Current Status
  14. :name: feature-status-table
  15. :widths: auto
  16. ================================================= =================
  17. Macro Name Value
  18. ================================================= =================
  19. **C++ 14**
  20. -------------------------------------------------------------------
  21. ``__cpp_lib_chrono_udls`` ``201304L``
  22. ------------------------------------------------- -----------------
  23. ``__cpp_lib_complex_udls`` ``201309L``
  24. ------------------------------------------------- -----------------
  25. ``__cpp_lib_exchange_function`` ``201304L``
  26. ------------------------------------------------- -----------------
  27. ``__cpp_lib_generic_associative_lookup`` ``201304L``
  28. ------------------------------------------------- -----------------
  29. ``__cpp_lib_integer_sequence`` ``201304L``
  30. ------------------------------------------------- -----------------
  31. ``__cpp_lib_integral_constant_callable`` ``201304L``
  32. ------------------------------------------------- -----------------
  33. ``__cpp_lib_is_final`` ``201402L``
  34. ------------------------------------------------- -----------------
  35. ``__cpp_lib_is_null_pointer`` ``201309L``
  36. ------------------------------------------------- -----------------
  37. ``__cpp_lib_make_reverse_iterator`` ``201402L``
  38. ------------------------------------------------- -----------------
  39. ``__cpp_lib_make_unique`` ``201304L``
  40. ------------------------------------------------- -----------------
  41. ``__cpp_lib_null_iterators`` ``201304L``
  42. ------------------------------------------------- -----------------
  43. ``__cpp_lib_quoted_string_io`` ``201304L``
  44. ------------------------------------------------- -----------------
  45. ``__cpp_lib_result_of_sfinae`` ``201210L``
  46. ------------------------------------------------- -----------------
  47. ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L``
  48. ------------------------------------------------- -----------------
  49. ``__cpp_lib_shared_timed_mutex`` ``201402L``
  50. ------------------------------------------------- -----------------
  51. ``__cpp_lib_string_udls`` ``201304L``
  52. ------------------------------------------------- -----------------
  53. ``__cpp_lib_transformation_trait_aliases`` ``201304L``
  54. ------------------------------------------------- -----------------
  55. ``__cpp_lib_transparent_operators`` ``201210L``
  56. ------------------------------------------------- -----------------
  57. ``__cpp_lib_tuple_element_t`` ``201402L``
  58. ------------------------------------------------- -----------------
  59. ``__cpp_lib_tuples_by_type`` ``201304L``
  60. ------------------------------------------------- -----------------
  61. **C++ 17**
  62. -------------------------------------------------------------------
  63. ``__cpp_lib_addressof_constexpr`` ``201603L``
  64. ------------------------------------------------- -----------------
  65. ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L``
  66. ------------------------------------------------- -----------------
  67. ``__cpp_lib_any`` ``201606L``
  68. ------------------------------------------------- -----------------
  69. ``__cpp_lib_apply`` ``201603L``
  70. ------------------------------------------------- -----------------
  71. ``__cpp_lib_array_constexpr`` ``201603L``
  72. ------------------------------------------------- -----------------
  73. ``__cpp_lib_as_const`` ``201510L``
  74. ------------------------------------------------- -----------------
  75. ``__cpp_lib_atomic_is_always_lock_free`` ``201603L``
  76. ------------------------------------------------- -----------------
  77. ``__cpp_lib_bool_constant`` ``201505L``
  78. ------------------------------------------------- -----------------
  79. ``__cpp_lib_boyer_moore_searcher`` *unimplemented*
  80. ------------------------------------------------- -----------------
  81. ``__cpp_lib_byte`` ``201603L``
  82. ------------------------------------------------- -----------------
  83. ``__cpp_lib_chrono`` ``201611L``
  84. ------------------------------------------------- -----------------
  85. ``__cpp_lib_clamp`` ``201603L``
  86. ------------------------------------------------- -----------------
  87. ``__cpp_lib_enable_shared_from_this`` ``201603L``
  88. ------------------------------------------------- -----------------
  89. ``__cpp_lib_execution`` *unimplemented*
  90. ------------------------------------------------- -----------------
  91. ``__cpp_lib_filesystem`` ``201703L``
  92. ------------------------------------------------- -----------------
  93. ``__cpp_lib_gcd_lcm`` ``201606L``
  94. ------------------------------------------------- -----------------
  95. ``__cpp_lib_hardware_interference_size`` ``201703L``
  96. ------------------------------------------------- -----------------
  97. ``__cpp_lib_has_unique_object_representations`` ``201606L``
  98. ------------------------------------------------- -----------------
  99. ``__cpp_lib_hypot`` ``201603L``
  100. ------------------------------------------------- -----------------
  101. ``__cpp_lib_incomplete_container_elements`` ``201505L``
  102. ------------------------------------------------- -----------------
  103. ``__cpp_lib_invoke`` ``201411L``
  104. ------------------------------------------------- -----------------
  105. ``__cpp_lib_is_aggregate`` ``201703L``
  106. ------------------------------------------------- -----------------
  107. ``__cpp_lib_is_invocable`` ``201703L``
  108. ------------------------------------------------- -----------------
  109. ``__cpp_lib_is_swappable`` ``201603L``
  110. ------------------------------------------------- -----------------
  111. ``__cpp_lib_launder`` ``201606L``
  112. ------------------------------------------------- -----------------
  113. ``__cpp_lib_logical_traits`` ``201510L``
  114. ------------------------------------------------- -----------------
  115. ``__cpp_lib_make_from_tuple`` ``201606L``
  116. ------------------------------------------------- -----------------
  117. ``__cpp_lib_map_try_emplace`` ``201411L``
  118. ------------------------------------------------- -----------------
  119. ``__cpp_lib_math_special_functions`` *unimplemented*
  120. ------------------------------------------------- -----------------
  121. ``__cpp_lib_memory_resource`` *unimplemented*
  122. ------------------------------------------------- -----------------
  123. ``__cpp_lib_node_extract`` ``201606L``
  124. ------------------------------------------------- -----------------
  125. ``__cpp_lib_nonmember_container_access`` ``201411L``
  126. ------------------------------------------------- -----------------
  127. ``__cpp_lib_not_fn`` ``201603L``
  128. ------------------------------------------------- -----------------
  129. ``__cpp_lib_optional`` ``201606L``
  130. ------------------------------------------------- -----------------
  131. ``__cpp_lib_parallel_algorithm`` *unimplemented*
  132. ------------------------------------------------- -----------------
  133. ``__cpp_lib_raw_memory_algorithms`` ``201606L``
  134. ------------------------------------------------- -----------------
  135. ``__cpp_lib_sample`` ``201603L``
  136. ------------------------------------------------- -----------------
  137. ``__cpp_lib_scoped_lock`` ``201703L``
  138. ------------------------------------------------- -----------------
  139. ``__cpp_lib_shared_mutex`` ``201505L``
  140. ------------------------------------------------- -----------------
  141. ``__cpp_lib_shared_ptr_arrays`` *unimplemented*
  142. ------------------------------------------------- -----------------
  143. ``__cpp_lib_shared_ptr_weak_type`` ``201606L``
  144. ------------------------------------------------- -----------------
  145. ``__cpp_lib_string_view`` ``201606L``
  146. ------------------------------------------------- -----------------
  147. ``__cpp_lib_to_chars`` *unimplemented*
  148. ------------------------------------------------- -----------------
  149. ``__cpp_lib_transparent_operators`` ``201510L``
  150. ------------------------------------------------- -----------------
  151. ``__cpp_lib_type_trait_variable_templates`` ``201510L``
  152. ------------------------------------------------- -----------------
  153. ``__cpp_lib_uncaught_exceptions`` ``201411L``
  154. ------------------------------------------------- -----------------
  155. ``__cpp_lib_unordered_map_try_emplace`` ``201411L``
  156. ------------------------------------------------- -----------------
  157. ``__cpp_lib_variant`` ``201606L``
  158. ------------------------------------------------- -----------------
  159. ``__cpp_lib_void_t`` ``201411L``
  160. ------------------------------------------------- -----------------
  161. **C++ 2a**
  162. -------------------------------------------------------------------
  163. ``__cpp_lib_atomic_ref`` *unimplemented*
  164. ------------------------------------------------- -----------------
  165. ``__cpp_lib_bind_front`` *unimplemented*
  166. ------------------------------------------------- -----------------
  167. ``__cpp_lib_bit_cast`` *unimplemented*
  168. ------------------------------------------------- -----------------
  169. ``__cpp_lib_char8_t`` ``201811L``
  170. ------------------------------------------------- -----------------
  171. ``__cpp_lib_concepts`` *unimplemented*
  172. ------------------------------------------------- -----------------
  173. ``__cpp_lib_constexpr_misc`` *unimplemented*
  174. ------------------------------------------------- -----------------
  175. ``__cpp_lib_constexpr_swap_algorithms`` *unimplemented*
  176. ------------------------------------------------- -----------------
  177. ``__cpp_lib_destroying_delete`` ``201806L``
  178. ------------------------------------------------- -----------------
  179. ``__cpp_lib_erase_if`` ``201811L``
  180. ------------------------------------------------- -----------------
  181. ``__cpp_lib_generic_unordered_lookup`` *unimplemented*
  182. ------------------------------------------------- -----------------
  183. ``__cpp_lib_interpolate`` ``201902L``
  184. ------------------------------------------------- -----------------
  185. ``__cpp_lib_is_constant_evaluated`` ``201811L``
  186. ------------------------------------------------- -----------------
  187. ``__cpp_lib_list_remove_return_type`` *unimplemented*
  188. ------------------------------------------------- -----------------
  189. ``__cpp_lib_ranges`` *unimplemented*
  190. ------------------------------------------------- -----------------
  191. ``__cpp_lib_three_way_comparison`` *unimplemented*
  192. ================================================= =================