1,059 changes: 435 additions & 624 deletions libcxx/utils/generate_feature_test_macro_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,641 +33,452 @@ def add_version_header(tc):

feature_test_macros = sorted([ add_version_header(x) for x in [
# C++14 macros
{"name": "__cpp_lib_integer_sequence",
"values": {
"c++14": int(201304)
},
{
"name": "__cpp_lib_integer_sequence",
"values": { "c++14": int(201304) },
"headers": ["utility"],
},
{"name": "__cpp_lib_exchange_function",
"values": {
"c++14": int(201304)
},
"headers": ["utility"],
},
{"name": "__cpp_lib_tuples_by_type",
"values": {
"c++14": int(201304)
},
"headers": ["utility", "tuple"],
},
{"name": "__cpp_lib_tuple_element_t",
"values": {
"c++14": int(201402)
},
"headers": ["tuple"],
},
{"name": "__cpp_lib_make_unique",
"values": {
"c++14": int(201304)
},
"headers": ["memory"],
},
{"name": "__cpp_lib_transparent_operators",
"values": {
"c++14": int(201210),
"c++17": int(201510),
},
"headers": ["functional"],
},
{"name": "__cpp_lib_integral_constant_callable",
"values": {
"c++14": int(201304)
},
"headers": ["type_traits"],
},
{"name": "__cpp_lib_transformation_trait_aliases",
"values": {
"c++14": int(201304),
},
"headers": ["type_traits"]
},
{"name": "__cpp_lib_result_of_sfinae",
"values": {
"c++14": int(201210),
},
"headers": ["functional", "type_traits"]
},
{"name": "__cpp_lib_is_final",
"values": {
"c++14": int(201402),
},
"headers": ["type_traits"]
},
{"name": "__cpp_lib_is_null_pointer",
"values": {
"c++14": int(201309),
},
"headers": ["type_traits"]
},
{"name": "__cpp_lib_chrono_udls",
"values": {
"c++14": int(201304),
},
"headers": ["chrono"]
},
{"name": "__cpp_lib_string_udls",
"values": {
"c++14": int(201304),
},
"headers": ["string"]
},
{"name": "__cpp_lib_generic_associative_lookup",
"values": {
"c++14": int(201304),
},
"headers": ["map", "set"]
},
{"name": "__cpp_lib_null_iterators",
"values": {
"c++14": int(201304),
},
"headers": ["iterator"]
},
{"name": "__cpp_lib_make_reverse_iterator",
"values": {
"c++14": int(201402),
},
"headers": ["iterator"]
},
{"name": "__cpp_lib_robust_nonmodifying_seq_ops",
"values": {
"c++14": int(201304),
},
"headers": ["algorithm"]
},
{"name": "__cpp_lib_complex_udls",
"values": {
"c++14": int(201309),
},
"headers": ["complex"]
},
{"name": "__cpp_lib_quoted_string_io",
"values": {
"c++14": int(201304),
},
"headers": ["iomanip"]
},
{"name": "__cpp_lib_shared_timed_mutex",
"values": {
"c++14": int(201402),
},
"headers": ["shared_mutex"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_exchange_function",
"values": { "c++14": int(201304) },
"headers": ["utility"],
}, {
"name": "__cpp_lib_tuples_by_type",
"values": { "c++14": int(201304) },
"headers": ["utility", "tuple"],
}, {
"name": "__cpp_lib_tuple_element_t",
"values": { "c++14": int(201402) },
"headers": ["tuple"],
}, {
"name": "__cpp_lib_make_unique",
"values": { "c++14": int(201304) },
"headers": ["memory"],
}, {
"name": "__cpp_lib_transparent_operators",
"values": { "c++14": int(201210), "c++17": int(201510) },
"headers": ["functional"],
}, {
"name": "__cpp_lib_integral_constant_callable",
"values": { "c++14": int(201304) },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_transformation_trait_aliases",
"values": { "c++14": int(201304) },
"headers": ["type_traits"]
}, {
"name": "__cpp_lib_result_of_sfinae",
"values": { "c++14": int(201210) },
"headers": ["functional", "type_traits"]
}, {
"name": "__cpp_lib_is_final",
"values": { "c++14": int(201402) },
"headers": ["type_traits"]
}, {
"name": "__cpp_lib_is_null_pointer",
"values": { "c++14": int(201309) },
"headers": ["type_traits"]
}, {
"name": "__cpp_lib_chrono_udls",
"values": { "c++14": int(201304) },
"headers": ["chrono"]
}, {
"name": "__cpp_lib_string_udls",
"values": { "c++14": int(201304) },
"headers": ["string"]
}, {
"name": "__cpp_lib_generic_associative_lookup",
"values": { "c++14": int(201304) },
"headers": ["map", "set"]
}, {
"name": "__cpp_lib_null_iterators",
"values": { "c++14": int(201304) },
"headers": ["iterator"]
}, {
"name": "__cpp_lib_make_reverse_iterator",
"values": { "c++14": int(201402) },
"headers": ["iterator"]
}, {
"name": "__cpp_lib_robust_nonmodifying_seq_ops",
"values": { "c++14": int(201304) },
"headers": ["algorithm"]
}, {
"name": "__cpp_lib_complex_udls",
"values": { "c++14": int(201309) },
"headers": ["complex"]
}, {
"name": "__cpp_lib_quoted_string_io",
"values": { "c++14": int(201304) },
"headers": ["iomanip"]
}, {
"name": "__cpp_lib_shared_timed_mutex",
"values": { "c++14": int(201402) },
"headers": ["shared_mutex"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
# C++17 macros
{"name": "__cpp_lib_atomic_is_always_lock_free",
"values": {
"c++17": int(201603),
},
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_filesystem",
"values": {
"c++17": int(201703),
},
"headers": ["filesystem"]
},
{"name": "__cpp_lib_invoke",
"values": {
"c++17": int(201411),
},
"headers": ["functional"]
},
{"name": "__cpp_lib_void_t",
"values": {
"c++17": int(201411),
},
"headers": ["type_traits"]
},
{"name": "__cpp_lib_node_extract",
"values": {
"c++17": int(201606),
},
"headers": ["map", "set", "unordered_map", "unordered_set"]
},
{"name": "__cpp_lib_byte",
"values": {
"c++17": int(201603),
},
"headers": ["cstddef"],
},
{"name": "__cpp_lib_hardware_interference_size",
"values": {
"c++17": int(201703),
},
"headers": ["new"],
"unimplemented": True,
},
{"name": "__cpp_lib_launder",
"values": {
"c++17": int(201606),
},
"headers": ["new"],
},
{"name": "__cpp_lib_uncaught_exceptions",
"values": {
"c++17": int(201411),
},
"headers": ["exception"],
},
{"name": "__cpp_lib_as_const",
"values": {
"c++17": int(201510),
},
"headers": ["utility"],
},
{"name": "__cpp_lib_make_from_tuple",
"values": {
"c++17": int(201606),
},
"headers": ["tuple"],
},
{"name": "__cpp_lib_apply",
"values": {
"c++17": int(201603),
},
"headers": ["tuple"],
},
{"name": "__cpp_lib_optional",
"values": {
"c++17": int(201606),
},
"headers": ["optional"],
},
{"name": "__cpp_lib_variant",
"values": {
"c++17": int(201606),
},
"headers": ["variant"],
},
{"name": "__cpp_lib_any",
"values": {
"c++17": int(201606),
},
"headers": ["any"],
},
{"name": "__cpp_lib_addressof_constexpr",
"values": {
"c++17": int(201603),
},
"headers": ["memory"],
"depends": "TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700",
"internal_depends": "!defined(_LIBCPP_HAS_NO_BUILTIN_ADDRESSOF)",
},
{"name": "__cpp_lib_raw_memory_algorithms",
"values": {
"c++17": int(201606),
},
"headers": ["memory"],
},
{"name": "__cpp_lib_enable_shared_from_this",
"values": {
"c++17": int(201603),
},
"headers": ["memory"],
},
{"name": "__cpp_lib_shared_ptr_weak_type",
"values": {
"c++17": int(201606),
},
"headers": ["memory"],
},
{"name": "__cpp_lib_shared_ptr_arrays",
"values": {
"c++17": int(201611),
},
"headers": ["memory"],
"unimplemented": True,
},
{"name": "__cpp_lib_memory_resource",
"values": {
"c++17": int(201603),
},
"headers": ["memory_resource"],
"unimplemented": True,
},
{"name": "__cpp_lib_boyer_moore_searcher",
"values": {
"c++17": int(201603),
},
"headers": ["functional"],
"unimplemented": True,
},
{"name": "__cpp_lib_not_fn",
"values": {
"c++17": int(201603),
},
"headers": ["functional"],
},
{"name": "__cpp_lib_bool_constant",
"values": {
"c++17": int(201505),
},
"headers": ["type_traits"],
},
{"name": "__cpp_lib_type_trait_variable_templates",
"values": {
"c++17": int(201510),
},
"headers": ["type_traits"],
},
{"name": "__cpp_lib_logical_traits",
"values": {
"c++17": int(201510),
},
"headers": ["type_traits"],
},
{"name": "__cpp_lib_is_swappable",
"values": {
"c++17": int(201603),
},
"headers": ["type_traits"],
},
{"name": "__cpp_lib_is_invocable",
"values": {
"c++17": int(201703),
},
"headers": ["type_traits"],
},
{"name": "__cpp_lib_has_unique_object_representations",
"values": {
"c++17": int(201606),
},
"headers": ["type_traits"],
"depends": "TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700",
"internal_depends": "defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS)",
},
{"name": "__cpp_lib_is_aggregate",
"values": {
"c++17": int(201703),
},
"headers": ["type_traits"],
"depends": "TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001",
"internal_depends": "!defined(_LIBCPP_HAS_NO_IS_AGGREGATE)",
},
{"name": "__cpp_lib_chrono",
"values": {
"c++17": int(201611),
},
"headers": ["chrono"],
},
{"name": "__cpp_lib_execution",
"values": {
"c++17": int(201603),
},
"headers": ["execution"],
"unimplemented": True
},
{"name": "__cpp_lib_parallel_algorithm",
"values": {
"c++17": int(201603),
},
"headers": ["algorithm", "numeric"],
"unimplemented": True,
},
{"name": "__cpp_lib_to_chars",
"values": {
"c++17": int(201611),
},
"headers": ["utility"],
"unimplemented": True,
},
{"name": "__cpp_lib_string_view",
"values": {
"c++17": int(201606),
},
"headers": ["string", "string_view"],
},
{"name": "__cpp_lib_allocator_traits_is_always_equal",
"values": {
"c++17": int(201411),
},
"headers": ["memory", "scoped_allocator", "string", "deque", "forward_list", "list", "vector", "map", "set", "unordered_map", "unordered_set"],
},
{"name": "__cpp_lib_incomplete_container_elements",
"values": {
"c++17": int(201505),
},
"headers": ["forward_list", "list", "vector"],
},
{"name": "__cpp_lib_map_try_emplace",
"values": {
"c++17": int(201411),
},
"headers": ["map"],
},
{"name": "__cpp_lib_unordered_map_try_emplace",
"values": {
"c++17": int(201411),
},
"headers": ["unordered_map"],
},
{"name": "__cpp_lib_array_constexpr",
"values": {
"c++17": int(201603),
"c++2a": int(201811),
},
"headers": ["iterator", "array"],
},
{"name": "__cpp_lib_nonmember_container_access",
"values": {
"c++17": int(201411),
},
"headers": ["iterator", "array", "deque", "forward_list", "list", "map", "regex",
"set", "string", "unordered_map", "unordered_set", "vector"],
},
{"name": "__cpp_lib_sample",
"values": {
"c++17": int(201603),
},
"headers": ["algorithm"],
},
{"name": "__cpp_lib_clamp",
"values": {
"c++17": int(201603),
},
"headers": ["algorithm"],
},
{"name": "__cpp_lib_gcd_lcm",
"values": {
"c++17": int(201606),
},
"headers": ["numeric"],
},
{"name": "__cpp_lib_hypot",
"values": {
"c++17": int(201603),
},
"headers": ["cmath"],
},
{"name": "__cpp_lib_math_special_functions",
"values": {
"c++17": int(201603),
},
"headers": ["cmath"],
"unimplemented": True,
},
{"name": "__cpp_lib_shared_mutex",
"values": {
"c++17": int(201505),
},
"headers": ["shared_mutex"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_scoped_lock",
"values": {
"c++17": int(201703),
},
"headers": ["mutex"],
{
"name": "__cpp_lib_atomic_is_always_lock_free",
"values": { "c++17": int(201603) },
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_filesystem",
"values": { "c++17": int(201703) },
"headers": ["filesystem"]
}, {
"name": "__cpp_lib_invoke",
"values": { "c++17": int(201411) },
"headers": ["functional"]
}, {
"name": "__cpp_lib_void_t",
"values": { "c++17": int(201411) },
"headers": ["type_traits"]
}, {
"name": "__cpp_lib_node_extract",
"values": { "c++17": int(201606) },
"headers": ["map", "set", "unordered_map", "unordered_set"]
}, {
"name": "__cpp_lib_byte",
"values": { "c++17": int(201603) },
"headers": ["cstddef"],
}, {
"name": "__cpp_lib_hardware_interference_size",
"values": { "c++17": int(201703) },
"headers": ["new"],
"unimplemented": True,
}, {
"name": "__cpp_lib_launder",
"values": { "c++17": int(201606) },
"headers": ["new"],
}, {
"name": "__cpp_lib_uncaught_exceptions",
"values": { "c++17": int(201411) },
"headers": ["exception"],
}, {
"name": "__cpp_lib_as_const",
"values": { "c++17": int(201510) },
"headers": ["utility"],
}, {
"name": "__cpp_lib_make_from_tuple",
"values": { "c++17": int(201606) },
"headers": ["tuple"],
}, {
"name": "__cpp_lib_apply",
"values": { "c++17": int(201603) },
"headers": ["tuple"],
}, {
"name": "__cpp_lib_optional",
"values": { "c++17": int(201606) },
"headers": ["optional"],
}, {
"name": "__cpp_lib_variant",
"values": { "c++17": int(201606) },
"headers": ["variant"],
}, {
"name": "__cpp_lib_any",
"values": { "c++17": int(201606) },
"headers": ["any"],
}, {
"name": "__cpp_lib_addressof_constexpr",
"values": { "c++17": int(201603) },
"headers": ["memory"],
"depends": "TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700",
"internal_depends": "!defined(_LIBCPP_HAS_NO_BUILTIN_ADDRESSOF)",
}, {
"name": "__cpp_lib_raw_memory_algorithms",
"values": { "c++17": int(201606) },
"headers": ["memory"],
}, {
"name": "__cpp_lib_enable_shared_from_this",
"values": { "c++17": int(201603) },
"headers": ["memory"],
}, {
"name": "__cpp_lib_shared_ptr_weak_type",
"values": { "c++17": int(201606) },
"headers": ["memory"],
}, {
"name": "__cpp_lib_shared_ptr_arrays",
"values": { "c++17": int(201611) },
"headers": ["memory"],
"unimplemented": True,
}, {
"name": "__cpp_lib_memory_resource",
"values": { "c++17": int(201603) },
"headers": ["memory_resource"],
"unimplemented": True,
}, {
"name": "__cpp_lib_boyer_moore_searcher",
"values": { "c++17": int(201603) },
"headers": ["functional"],
"unimplemented": True,
}, {
"name": "__cpp_lib_not_fn",
"values": { "c++17": int(201603) },
"headers": ["functional"],
}, {
"name": "__cpp_lib_bool_constant",
"values": { "c++17": int(201505) },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_type_trait_variable_templates",
"values": { "c++17": int(201510) },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_logical_traits",
"values": { "c++17": int(201510) },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_is_swappable",
"values": { "c++17": int(201603) },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_is_invocable",
"values": { "c++17": int(201703) },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_has_unique_object_representations",
"values": { "c++17": int(201606) },
"headers": ["type_traits"],
"depends": "TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700",
"internal_depends": "defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS)",
}, {
"name": "__cpp_lib_is_aggregate",
"values": { "c++17": int(201703) },
"headers": ["type_traits"],
"depends": "TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001",
"internal_depends": "!defined(_LIBCPP_HAS_NO_IS_AGGREGATE)",
}, {
"name": "__cpp_lib_chrono",
"values": { "c++17": int(201611) },
"headers": ["chrono"],
}, {
"name": "__cpp_lib_execution",
"values": { "c++17": int(201603) },
"headers": ["execution"],
"unimplemented": True
}, {
"name": "__cpp_lib_parallel_algorithm",
"values": { "c++17": int(201603) },
"headers": ["algorithm", "numeric"],
"unimplemented": True,
}, {
"name": "__cpp_lib_to_chars",
"values": { "c++17": int(201611) },
"headers": ["utility"],
"unimplemented": True,
}, {
"name": "__cpp_lib_string_view",
"values": { "c++17": int(201606) },
"headers": ["string", "string_view"],
}, {
"name": "__cpp_lib_allocator_traits_is_always_equal",
"values": { "c++17": int(201411) },
"headers": ["memory", "scoped_allocator", "string", "deque", "forward_list", "list", "vector", "map", "set", "unordered_map", "unordered_set"],
}, {
"name": "__cpp_lib_incomplete_container_elements",
"values": { "c++17": int(201505) },
"headers": ["forward_list", "list", "vector"],
}, {
"name": "__cpp_lib_map_try_emplace",
"values": { "c++17": int(201411) },
"headers": ["map"],
}, {
"name": "__cpp_lib_unordered_map_try_emplace",
"values": { "c++17": int(201411) },
"headers": ["unordered_map"],
}, {
"name": "__cpp_lib_array_constexpr",
"values": { "c++17": int(201603), "c++2a": int(201811) },
"headers": ["iterator", "array"],
}, {
"name": "__cpp_lib_nonmember_container_access",
"values": { "c++17": int(201411) },
"headers": ["iterator", "array", "deque", "forward_list", "list", "map", "regex",
"set", "string", "unordered_map", "unordered_set", "vector"],
}, {
"name": "__cpp_lib_sample",
"values": { "c++17": int(201603) },
"headers": ["algorithm"],
}, {
"name": "__cpp_lib_clamp",
"values": { "c++17": int(201603) },
"headers": ["algorithm"],
}, {
"name": "__cpp_lib_gcd_lcm",
"values": { "c++17": int(201606) },
"headers": ["numeric"],
}, {
"name": "__cpp_lib_hypot",
"values": { "c++17": int(201603) },
"headers": ["cmath"],
}, {
"name": "__cpp_lib_math_special_functions",
"values": { "c++17": int(201603) },
"headers": ["cmath"],
"unimplemented": True,
}, {
"name": "__cpp_lib_shared_mutex",
"values": { "c++17": int(201505) },
"headers": ["shared_mutex"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_scoped_lock",
"values": { "c++17": int(201703) },
"headers": ["mutex"],
},
# C++2a
{"name": "__cpp_lib_char8_t",
"values": {
"c++2a": int(201811),
},
"headers": ["atomic", "filesystem", "istream", "limits", "locale", "ostream",
"string", "string_view"],
"depends": "defined(__cpp_char8_t)",
"internal_depends": "!defined(_LIBCPP_NO_HAS_CHAR8_T)",
},
{"name": "__cpp_lib_erase_if",
"values": {
"c++2a": int(202002),
},
"headers": ["string", "deque", "forward_list", "list", "vector", "map",
"set", "unordered_map", "unordered_set"]
},
{"name": "__cpp_lib_destroying_delete",
"values": {
"c++2a": int(201806),
},
"headers": ["new"],
"depends":
{
"name": "__cpp_lib_char8_t",
"values": { "c++2a": int(201811) },
"headers": ["atomic", "filesystem", "istream", "limits", "locale", "ostream",
"string", "string_view"],
"depends": "defined(__cpp_char8_t)",
"internal_depends": "!defined(_LIBCPP_NO_HAS_CHAR8_T)",
}, {
"name": "__cpp_lib_erase_if",
"values": { "c++2a": int(202002) },
"headers": ["string", "deque", "forward_list", "list", "vector", "map",
"set", "unordered_map", "unordered_set"]
}, {
"name": "__cpp_lib_destroying_delete",
"values": { "c++2a": int(201806) },
"headers": ["new"],
"depends":
"TEST_STD_VER > 17"
" && defined(__cpp_impl_destroying_delete)"
" && __cpp_impl_destroying_delete >= 201806L",
"internal_depends":
"internal_depends":
"_LIBCPP_STD_VER > 17"
" && defined(__cpp_impl_destroying_delete)"
" && __cpp_impl_destroying_delete >= 201806L",
},
{"name": "__cpp_lib_three_way_comparison",
"values": {
"c++2a": int(201711),
},
"headers": ["compare"],
"unimplemented": True,
},
{"name": "__cpp_lib_concepts",
"values": {
"c++2a": int(201806),
},
"headers": ["concepts"],
"unimplemented": True,
},
{"name": "__cpp_lib_constexpr_swap_algorithms",
"values": {
"c++2a": int(201806),
},
"headers": ["algorithm"],
"unimplemented": True,
},
{"name": "__cpp_lib_constexpr_misc",
"values": {
"c++2a": int(201811),
},
"headers": ["array", "functional", "iterator", "string_view", "tuple", "utility"],
"unimplemented": True,
},
{"name": "__cpp_lib_bind_front",
"values": {
"c++2a": int(201811),
},
"headers": ["functional"],
"unimplemented": True,
},
{"name": "__cpp_lib_is_constant_evaluated",
"values": {
"c++2a": int(201811),
},
"headers": ["type_traits"],
"depends": "TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900",
"internal_depends": "!defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED)",
},
{"name": "__cpp_lib_list_remove_return_type",
"values": {
"c++2a": int(201806),
},
"headers": ["forward_list", "list"],
},
{"name": "__cpp_lib_generic_unordered_lookup",
"values": {
"c++2a": int(201811),
},
"headers": ["unordered_map", "unordered_set"],
"unimplemented": True,
},
{"name": "__cpp_lib_ranges",
"values": {
"c++2a": int(201811),
},
"headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
"unimplemented": True,
},
{"name": "__cpp_lib_bit_cast",
"values": {
"c++2a": int(201806),
},
"headers": ["bit"],
"unimplemented": True,
},
{"name": "__cpp_lib_atomic_ref",
"values": {
"c++2a": int(201806),
},
"headers": ["atomic"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_interpolate",
"values": {
"c++2a": int(201902),
},
"headers": ["numeric"],
},
{"name": "__cpp_lib_endian",
"values": {
"c++2a": int(201907),
},
"headers": ["bit"],
},
{"name": "__cpp_lib_to_array",
"values": {
"c++2a": int(201907),
},
"headers": ["array"],
},
{"name": "__cpp_lib_span",
"values": {
"c++2a": int(202002),
},
"headers": ["span"],
},
{"name": "__cpp_lib_math_constants",
"values": {
"c++2a": int(201907),
},
"headers": ["numbers"],
"depends": "defined(__cpp_concepts) && __cpp_concepts >= 201811L",
"internal_depends": "defined(__cpp_concepts) && __cpp_concepts >= 201811L",
},
{"name": "__cpp_lib_constexpr_utility",
"values": {
"c++2a": int(201811),
},
"headers": ["utility"],
},
{"name": "__cpp_lib_atomic_flag_test",
"values": {
"c++2a": int(201907),
},
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_atomic_lock_free_type_aliases",
"values": {
"c++2a": int(201907),
},
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_atomic_wait",
"values": {
"c++2a": int(201907),
},
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_atomic_float",
"values": {
"c++2a": int(201711),
},
"headers": ["atomic"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_atomic_shared_ptr",
"values": {
"c++2a": int(201711),
},
"headers": ["atomic"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_atomic_value_initialization",
"values": {
"c++2a": int(201911),
},
"headers": ["atomic", "memory"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
},
{"name": "__cpp_lib_constexpr_dynamic_alloc",
"values": {
"c++2a": int(201907)
},
}, {
"name": "__cpp_lib_three_way_comparison",
"values": { "c++2a": int(201711) },
"headers": ["compare"],
"unimplemented": True,
}, {
"name": "__cpp_lib_concepts",
"values": { "c++2a": int(201806) },
"headers": ["concepts"],
"unimplemented": True,
}, {
"name": "__cpp_lib_constexpr_swap_algorithms",
"values": { "c++2a": int(201806) },
"headers": ["algorithm"],
"unimplemented": True,
}, {
"name": "__cpp_lib_constexpr_misc",
"values": { "c++2a": int(201811) },
"headers": ["array", "functional", "iterator", "string_view", "tuple", "utility"],
"unimplemented": True,
}, {
"name": "__cpp_lib_bind_front",
"values": { "c++2a": int(201811) },
"headers": ["functional"],
"unimplemented": True,
}, {
"name": "__cpp_lib_is_constant_evaluated",
"values": { "c++2a": int(201811) },
"headers": ["type_traits"],
"depends": "TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900",
"internal_depends": "!defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED)",
}, {
"name": "__cpp_lib_list_remove_return_type",
"values": { "c++2a": int(201806) },
"headers": ["forward_list", "list"],
}, {
"name": "__cpp_lib_generic_unordered_lookup",
"values": { "c++2a": int(201811) },
"headers": ["unordered_map", "unordered_set"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges",
"values": { "c++2a": int(201811) },
"headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
"unimplemented": True,
}, {
"name": "__cpp_lib_bit_cast",
"values": { "c++2a": int(201806) },
"headers": ["bit"],
"unimplemented": True,
}, {
"name": "__cpp_lib_atomic_ref",
"values": { "c++2a": int(201806) },
"headers": ["atomic"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_interpolate",
"values": { "c++2a": int(201902) },
"headers": ["numeric"],
}, {
"name": "__cpp_lib_endian",
"values": { "c++2a": int(201907) },
"headers": ["bit"],
}, {
"name": "__cpp_lib_to_array",
"values": { "c++2a": int(201907) },
"headers": ["array"],
}, {
"name": "__cpp_lib_span",
"values": { "c++2a": int(202002) },
"headers": ["span"],
}, {
"name": "__cpp_lib_math_constants",
"values": { "c++2a": int(201907) },
"headers": ["numbers"],
"depends": "defined(__cpp_concepts) && __cpp_concepts >= 201811L",
"internal_depends": "defined(__cpp_concepts) && __cpp_concepts >= 201811L",
}, {
"name": "__cpp_lib_constexpr_utility",
"values": { "c++2a": int(201811) },
"headers": ["utility"],
}, {
"name": "__cpp_lib_atomic_flag_test",
"values": { "c++2a": int(201907) },
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_atomic_lock_free_type_aliases",
"values": { "c++2a": int(201907) },
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_atomic_wait",
"values": { "c++2a": int(201907) },
"headers": ["atomic"],
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_atomic_float",
"values": { "c++2a": int(201711) },
"headers": ["atomic"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_atomic_shared_ptr",
"values": { "c++2a": int(201711) },
"headers": ["atomic"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_atomic_value_initialization",
"values": { "c++2a": int(201911) },
"headers": ["atomic", "memory"],
"unimplemented": True,
"depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
"internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
}, {
"name": "__cpp_lib_constexpr_dynamic_alloc",
"values": { "c++2a": int(201907) },
"headers": ["memory"]
},
]], key=lambda tc: tc["name"])
Expand Down