[libcxx-commits] [libcxx] [libc++] Added FTMs from Hagenberg 2025 (PR #233352)
Hristo Hristov via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Oct 18 23:46:49 PDT 2026
https://github.com/H-G-Hristov updated https://github.com/llvm/llvm-project/pull/233352
>From b373131b264bd123295d6db46192695f381db612 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Mon, 19 Oct 2026 09:08:22 +0300
Subject: [PATCH 1/3] [libc++] Added FTMs from Hagenberg 2025
https:/wg21.link/version.syn#headerref:%3cvector%3e
---
libcxx/docs/FeatureTestMacroTable.rst | 64 +-
libcxx/include/version | 65 +-
.../array.version.compile.pass.cpp | 46 +
.../bitset.version.compile.pass.cpp | 46 +
.../deque.version.compile.pass.cpp | 92 ++
.../exception.version.compile.pass.cpp | 46 +
.../expected.version.compile.pass.cpp | 92 ++
.../format.version.compile.pass.cpp | 46 +
.../forward_list.version.compile.pass.cpp | 46 +
.../iterator.version.compile.pass.cpp | 92 ++
.../list.version.compile.pass.cpp | 46 +
.../mdspan.version.compile.pass.cpp | 46 +
.../memory.version.compile.pass.cpp | 138 ++
.../optional.version.compile.pass.cpp | 92 ++
.../queue.version.compile.pass.cpp | 32 +-
.../ranges.version.compile.pass.cpp | 147 ++
.../span.version.compile.pass.cpp | 46 +
.../stack.version.compile.pass.cpp | 46 +
.../stdexcept.version.compile.pass.cpp | 83 +
.../string.version.compile.pass.cpp | 46 +
.../string_view.version.compile.pass.cpp | 46 +
.../unordered_map.version.compile.pass.cpp | 46 +
.../unordered_set.version.compile.pass.cpp | 46 +
.../valarray.version.compile.pass.cpp | 46 +
.../variant.version.compile.pass.cpp | 46 +
.../vector.version.compile.pass.cpp | 46 +
.../version.version.compile.pass.cpp | 1467 ++++++++++++++++-
.../generate_feature_test_macro_components.py | 203 ++-
28 files changed, 3280 insertions(+), 23 deletions(-)
create mode 100644 libcxx/test/std/language.support/support.limits/support.limits.general/stdexcept.version.compile.pass.cpp
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index 336a76d30f73f..0cd36dbc37fed 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -372,6 +372,8 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_as_const`` *unimplemented*
---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_as_input`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_ranges_as_rvalue`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_chunk`` *unimplemented*
@@ -440,24 +442,38 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_algorithms`` ``202306L``
---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_deque`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_exceptions`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_flat_map`` ``202502L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_flat_set`` ``202502L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_forward_list`` ``202502L``
---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_inplace_vector`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_list`` ``202502L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_map`` ``202502L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_new`` ``202406L``
---------------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_queue`` ``202502L``
+ ``__cpp_lib_constexpr_queue`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_set`` ``202502L``
---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_stack`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_unordered_map`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_unordered_set`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_constrained_equality`` ``202411L``
---------------------------------------------------------- -----------------
+ ``__cpp_lib_contracts`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_copyable_function`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_debugging`` ``202403L``
@@ -488,8 +504,50 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_generate_random`` *unimplemented*
---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_array`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_basic_stacktrace`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_basic_string`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_basic_string_view`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_bitset`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_common_iterator`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_counted_iterator`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_deque`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_expected`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_forward_list`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_inplace_vector`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_list`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_mdspan`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_optional`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_shared_ptr_array`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_span`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_valarray`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_vector`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardened_view_interface`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_hazard_pointer`` *unimplemented*
---------------------------------------------------------- -----------------
+ ``__cpp_lib_hive`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_indirect`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_inplace_vector`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_integer_sequence`` ``202511L``
@@ -514,10 +572,14 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_philox_engine`` *unimplemented*
---------------------------------------------------------- -----------------
+ ``__cpp_lib_polymorphic`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_ranges_concat`` ``202403L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_indices`` ``202506L``
---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_reserve_hint`` *unimplemented*
+ ---------------------------------------------------------- -----------------
``__cpp_lib_ratio`` ``202306L``
---------------------------------------------------------- -----------------
``__cpp_lib_raw_memory_algorithms`` ``202411L``
diff --git a/libcxx/include/version b/libcxx/include/version
index c8fd4004d40cd..9e704c1e9ae79 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -72,11 +72,15 @@ __cpp_lib_constexpr_bitset 202207L <bitset>
__cpp_lib_constexpr_charconv 202207L <charconv>
__cpp_lib_constexpr_cmath 202202L <cmath> <cstdlib>
__cpp_lib_constexpr_complex 201711L <complex>
+__cpp_lib_constexpr_deque 202502L <deque>
__cpp_lib_constexpr_dynamic_alloc 201907L <memory>
+__cpp_lib_constexpr_exceptions 202502L <exception> <expected> <format>
+ <optional> <stdexcept> <variant>
__cpp_lib_constexpr_flat_map 202502L <flat_map>
__cpp_lib_constexpr_flat_set 202502L <flat_set>
__cpp_lib_constexpr_forward_list 202502L <forward_list>
__cpp_lib_constexpr_functional 201907L <functional>
+__cpp_lib_constexpr_inplace_vector 202502L <inplace_vector>
__cpp_lib_constexpr_iterator 201811L <iterator>
__cpp_lib_constexpr_list 202502L <list>
__cpp_lib_constexpr_map 202502L <map>
@@ -86,10 +90,13 @@ __cpp_lib_constexpr_new 202406L <new>
__cpp_lib_constexpr_numeric 201911L <numeric>
__cpp_lib_constexpr_queue 202502L <queue>
__cpp_lib_constexpr_set 202502L <set>
+__cpp_lib_constexpr_stack 202502L <stack>
__cpp_lib_constexpr_string 201907L <string>
__cpp_lib_constexpr_string_view 201811L <string_view>
__cpp_lib_constexpr_tuple 201811L <tuple>
__cpp_lib_constexpr_typeinfo 202106L <typeinfo>
+__cpp_lib_constexpr_unordered_map 202502L <unordered_map>
+__cpp_lib_constexpr_unordered_set 202502L <unordered_set>
__cpp_lib_constexpr_utility 201811L <utility>
__cpp_lib_constexpr_vector 201907L <vector>
__cpp_lib_constrained_equality 202411L <expected> <optional> <tuple>
@@ -98,6 +105,7 @@ __cpp_lib_containers_ranges 202202L <deque> <forward
<map> <queue> <set>
<stack> <string> <unordered_map>
<unordered_set> <vector>
+__cpp_lib_contracts 202502L <contracts>
__cpp_lib_copyable_function 202306L <functional>
__cpp_lib_coroutine 201902L <coroutine>
__cpp_lib_debugging 202403L <debugging>
@@ -138,11 +146,32 @@ __cpp_lib_gcd_lcm 201606L <numeric>
__cpp_lib_generate_random 202403L <random>
__cpp_lib_generic_associative_lookup 201304L <map> <set>
__cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set>
+__cpp_lib_hardened_array 202502L <array>
+__cpp_lib_hardened_basic_stacktrace 202506L <stacktrace>
+__cpp_lib_hardened_basic_string 202502L <string>
+__cpp_lib_hardened_basic_string_view 202502L <string_view>
+__cpp_lib_hardened_bitset 202502L <bitset>
+__cpp_lib_hardened_common_iterator 202506L <iterator>
+__cpp_lib_hardened_counted_iterator 202506L <iterator>
+__cpp_lib_hardened_deque 202502L <deque>
+__cpp_lib_hardened_expected 202502L <expected>
+__cpp_lib_hardened_forward_list 202502L <forward_list>
+__cpp_lib_hardened_inplace_vector 202502L <inplace_vector>
+__cpp_lib_hardened_list 202502L <list>
+__cpp_lib_hardened_mdspan 202502L <mdspan>
+__cpp_lib_hardened_optional 202502L <optional>
+__cpp_lib_hardened_shared_ptr_array 202506L <memory>
+__cpp_lib_hardened_span 202502L <span>
+__cpp_lib_hardened_valarray 202502L <valarray>
+__cpp_lib_hardened_vector 202502L <vector>
+__cpp_lib_hardened_view_interface 202506L <ranges>
__cpp_lib_hardware_interference_size 201703L <new>
__cpp_lib_has_unique_object_representations 201606L <type_traits>
__cpp_lib_hazard_pointer 202306L <hazard_pointer>
+__cpp_lib_hive 202502L <hive>
__cpp_lib_hypot 201603L <cmath>
__cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector>
+__cpp_lib_indirect 202502L <memory>
__cpp_lib_initializer_list 202511L <initializer_list>
__cpp_lib_inplace_vector 202406L <inplace_vector>
__cpp_lib_int_pow2 202002L <bit>
@@ -206,6 +235,7 @@ __cpp_lib_out_ptr 202311L <memory>
__cpp_lib_parallel_algorithm 201603L <algorithm> <numeric>
__cpp_lib_philox_engine 202406L <random>
__cpp_lib_pointer_tag_pair 202606L <memory>
+__cpp_lib_polymorphic 202502L <memory>
__cpp_lib_polymorphic_allocator 201902L <memory_resource>
__cpp_lib_print 202207L <ostream> <print>
__cpp_lib_quoted_string_io 201304L <iomanip>
@@ -213,6 +243,7 @@ __cpp_lib_ranges 202406L <algorithm> <fun
<memory> <ranges>
202110L // C++20
__cpp_lib_ranges_as_const 202207L <ranges>
+__cpp_lib_ranges_as_input 202502L <ranges>
__cpp_lib_ranges_as_rvalue 202207L <ranges>
__cpp_lib_ranges_chunk 202202L <ranges>
__cpp_lib_ranges_chunk_by 202202L <ranges>
@@ -225,6 +256,7 @@ __cpp_lib_ranges_indices 202506L <ranges>
__cpp_lib_ranges_iota 202202L <numeric>
__cpp_lib_ranges_join_with 202202L <ranges>
__cpp_lib_ranges_repeat 202207L <ranges>
+__cpp_lib_ranges_reserve_hint 202502L <ranges>
__cpp_lib_ranges_slide 202202L <ranges>
__cpp_lib_ranges_starts_ends_with 202106L <algorithm>
__cpp_lib_ranges_stride 202207L <ranges>
@@ -543,6 +575,7 @@ __cpp_lib_void_t 201411L <type_traits>
# undef __cpp_lib_ranges
# define __cpp_lib_ranges 202406L
// # define __cpp_lib_ranges_as_const 202207L
+// # define __cpp_lib_ranges_as_input 202502L
# define __cpp_lib_ranges_as_rvalue 202207L
// # define __cpp_lib_ranges_chunk 202202L
# define __cpp_lib_ranges_chunk_by 202202L
@@ -583,17 +616,24 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_constant_wrapper 202606L
# undef __cpp_lib_constexpr_algorithms
# define __cpp_lib_constexpr_algorithms 202306L
+// # define __cpp_lib_constexpr_deque 202502L
+// # define __cpp_lib_constexpr_exceptions 202502L
# define __cpp_lib_constexpr_flat_map 202502L
# define __cpp_lib_constexpr_flat_set 202502L
# define __cpp_lib_constexpr_forward_list 202502L
+// # define __cpp_lib_constexpr_inplace_vector 202502L
# define __cpp_lib_constexpr_list 202502L
# define __cpp_lib_constexpr_map 202502L
# if !defined(_LIBCPP_ABI_VCRUNTIME)
# define __cpp_lib_constexpr_new 202406L
# endif
-# define __cpp_lib_constexpr_queue 202502L
+// # define __cpp_lib_constexpr_queue 202502L
# define __cpp_lib_constexpr_set 202502L
+// # define __cpp_lib_constexpr_stack 202502L
+// # define __cpp_lib_constexpr_unordered_map 202502L
+// # define __cpp_lib_constexpr_unordered_set 202502L
# define __cpp_lib_constrained_equality 202411L
+// # define __cpp_lib_contracts 202502L
// # define __cpp_lib_copyable_function 202306L
# if _LIBCPP_AVAILABILITY_HAS_DEBUGGING
# define __cpp_lib_debugging 202403L
@@ -613,7 +653,28 @@ __cpp_lib_void_t 201411L <type_traits>
# endif
# define __cpp_lib_function_ref 202603L
// # define __cpp_lib_generate_random 202403L
+// # define __cpp_lib_hardened_array 202502L
+// # define __cpp_lib_hardened_basic_stacktrace 202506L
+// # define __cpp_lib_hardened_basic_string 202502L
+// # define __cpp_lib_hardened_basic_string_view 202502L
+// # define __cpp_lib_hardened_bitset 202502L
+// # define __cpp_lib_hardened_common_iterator 202506L
+// # define __cpp_lib_hardened_counted_iterator 202506L
+// # define __cpp_lib_hardened_deque 202502L
+// # define __cpp_lib_hardened_expected 202502L
+// # define __cpp_lib_hardened_forward_list 202502L
+// # define __cpp_lib_hardened_inplace_vector 202502L
+// # define __cpp_lib_hardened_list 202502L
+// # define __cpp_lib_hardened_mdspan 202502L
+// # define __cpp_lib_hardened_optional 202502L
+// # define __cpp_lib_hardened_shared_ptr_array 202506L
+// # define __cpp_lib_hardened_span 202502L
+// # define __cpp_lib_hardened_valarray 202502L
+// # define __cpp_lib_hardened_vector 202502L
+// # define __cpp_lib_hardened_view_interface 202506L
// # define __cpp_lib_hazard_pointer 202306L
+// # define __cpp_lib_hive 202502L
+// # define __cpp_lib_indirect 202502L
// # define __cpp_lib_inplace_vector 202406L
# undef __cpp_lib_integer_sequence
# define __cpp_lib_integer_sequence 202511L
@@ -637,8 +698,10 @@ __cpp_lib_void_t 201411L <type_traits>
# undef __cpp_lib_out_ptr
# define __cpp_lib_out_ptr 202311L
// # define __cpp_lib_philox_engine 202406L
+// # define __cpp_lib_polymorphic 202502L
# define __cpp_lib_ranges_concat 202403L
# define __cpp_lib_ranges_indices 202506L
+// # define __cpp_lib_ranges_reserve_hint 202502L
# define __cpp_lib_ratio 202306L
# undef __cpp_lib_raw_memory_algorithms
# define __cpp_lib_raw_memory_algorithms 202411L
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp
index 5f5dc28e5ba22..00521bae49850 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp
@@ -28,6 +28,10 @@
# error "__cpp_lib_freestanding_array should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should not be defined before c++17"
# endif
@@ -46,6 +50,10 @@
# error "__cpp_lib_freestanding_array should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should not be defined before c++17"
# endif
@@ -67,6 +75,10 @@
# error "__cpp_lib_freestanding_array should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++17"
# endif
@@ -91,6 +103,10 @@
# error "__cpp_lib_freestanding_array should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++20"
# endif
@@ -118,6 +134,10 @@
# error "__cpp_lib_freestanding_array should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
@@ -154,6 +174,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_array != 202502L
+# error "__cpp_lib_hardened_array should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++26"
# endif
@@ -190,6 +223,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_array != 202502L
+# error "__cpp_lib_hardened_array should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
index 22c4319270521..75f4ec68769b8 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
@@ -28,6 +28,10 @@
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 14
# ifdef __cpp_lib_bitset
@@ -38,6 +42,10 @@
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 17
# ifdef __cpp_lib_bitset
@@ -48,6 +56,10 @@
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 20
# ifdef __cpp_lib_bitset
@@ -58,6 +70,10 @@
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 23
# ifdef __cpp_lib_bitset
@@ -71,6 +87,10 @@
# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++23"
# endif
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 26
# ifndef __cpp_lib_bitset
@@ -87,6 +107,19 @@
# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_bitset != 202502L
+# error "__cpp_lib_hardened_bitset should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#elif TEST_STD_VER > 26
# ifndef __cpp_lib_bitset
@@ -103,6 +136,19 @@
# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_bitset != 202502L
+# error "__cpp_lib_hardened_bitset should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#endif // TEST_STD_VER > 26
// clang-format on
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
index e8dde05dd7b07..145add07c842f 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
@@ -24,6 +24,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -36,6 +40,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should not be defined before c++17"
# endif
@@ -46,6 +54,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -58,6 +70,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should not be defined before c++17"
# endif
@@ -71,6 +87,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -83,6 +103,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++17"
# endif
@@ -99,6 +123,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -114,6 +142,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++20"
# endif
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++20"
# endif
@@ -130,6 +162,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++23"
# endif
@@ -148,6 +184,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
@@ -164,6 +204,19 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_deque != 202502L
+# error "__cpp_lib_constexpr_deque should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++26"
# endif
@@ -191,6 +244,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_deque != 202502L
+# error "__cpp_lib_hardened_deque should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++26"
# endif
@@ -207,6 +273,19 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_deque != 202502L
+# error "__cpp_lib_constexpr_deque should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++29"
# endif
@@ -234,6 +313,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_deque != 202502L
+# error "__cpp_lib_hardened_deque should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
index 8d15c9297f0d4..6791c6d4ffc2e 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
@@ -20,18 +20,30 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should not be defined before c++17"
# endif
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should not be defined before c++17"
# endif
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should be defined in c++17"
# endif
@@ -41,6 +53,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should be defined in c++20"
# endif
@@ -50,6 +66,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should be defined in c++23"
# endif
@@ -59,6 +79,19 @@
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should be defined in c++26"
# endif
@@ -68,6 +101,19 @@
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp
index 38b36a8eb8653..b9b4ada8c4d22 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp
@@ -20,6 +20,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -32,8 +36,16 @@
# error "__cpp_lib_freestanding_expected should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -46,8 +58,16 @@
# error "__cpp_lib_freestanding_expected should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -60,8 +80,16 @@
# error "__cpp_lib_freestanding_expected should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -74,8 +102,16 @@
# error "__cpp_lib_freestanding_expected should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -91,8 +127,25 @@
# error "__cpp_lib_freestanding_expected should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should be defined in c++26"
# endif
@@ -120,8 +173,34 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_expected != 202502L
+# error "__cpp_lib_hardened_expected should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should be defined in c++29"
# endif
@@ -149,6 +228,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_expected != 202502L
+# error "__cpp_lib_hardened_expected should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#endif // TEST_STD_VER > 26
// clang-format on
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
index af6a25c057c2f..49cd126164096 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
@@ -20,6 +20,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_format
# error "__cpp_lib_format should not be defined before c++20"
# endif
@@ -34,6 +38,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_format
# error "__cpp_lib_format should not be defined before c++20"
# endif
@@ -48,6 +56,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_format
# error "__cpp_lib_format should not be defined before c++20"
# endif
@@ -62,6 +74,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++20"
@@ -88,6 +104,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++23"
@@ -117,6 +137,19 @@
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++26"
@@ -146,6 +179,19 @@
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++29"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
index e2e7c750decd2..39cb8a7ff02d4 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
@@ -40,6 +40,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
@@ -74,6 +78,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
@@ -111,6 +119,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++17"
# endif
@@ -157,6 +169,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++20"
# endif
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++20"
# endif
@@ -209,6 +225,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++23"
# endif
@@ -273,6 +293,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_forward_list != 202502L
+# error "__cpp_lib_hardened_forward_list should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
# endif
@@ -337,6 +370,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_forward_list != 202502L
+# error "__cpp_lib_hardened_forward_list should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
index bb251f001b42a..22dc910ce6214 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
@@ -28,6 +28,14 @@
# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should not be defined before c++14"
# endif
@@ -62,6 +70,14 @@
# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should be defined in c++14"
# endif
@@ -105,6 +121,14 @@
# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should be defined in c++17"
# endif
@@ -154,6 +178,14 @@
# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++20"
# endif
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should be defined in c++20"
# endif
@@ -212,6 +244,14 @@
# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++23"
# endif
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should be defined in c++23"
# endif
@@ -270,6 +310,32 @@
# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_common_iterator != 202506L
+# error "__cpp_lib_hardened_common_iterator should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_counted_iterator != 202506L
+# error "__cpp_lib_hardened_counted_iterator should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should be defined in c++26"
# endif
@@ -328,6 +394,32 @@
# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_common_iterator != 202506L
+# error "__cpp_lib_hardened_common_iterator should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_counted_iterator != 202506L
+# error "__cpp_lib_hardened_counted_iterator should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_make_reverse_iterator
# error "__cpp_lib_make_reverse_iterator should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
index 15aa665c0fea0..481ed3a8b5855 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
@@ -40,6 +40,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
@@ -74,6 +78,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
@@ -111,6 +119,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++17"
# endif
@@ -157,6 +169,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++20"
# endif
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++20"
# endif
@@ -209,6 +225,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++23"
# endif
@@ -273,6 +293,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_list != 202502L
+# error "__cpp_lib_hardened_list should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
# endif
@@ -337,6 +370,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_list != 202502L
+# error "__cpp_lib_hardened_list should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
index 7e8ba062e50c2..e045dded2ab54 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
@@ -28,6 +28,10 @@
# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
@@ -50,6 +54,10 @@
# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
@@ -72,6 +80,10 @@
# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
@@ -94,6 +106,10 @@
# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
@@ -116,6 +132,10 @@
# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should be defined in c++23"
# endif
@@ -153,6 +173,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_mdspan != 202502L
+# error "__cpp_lib_hardened_mdspan should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should be defined in c++26"
# endif
@@ -199,6 +232,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_mdspan != 202502L
+# error "__cpp_lib_hardened_mdspan should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
index 45eac0ce16014..51fc0744d5462 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
@@ -52,6 +52,14 @@
# error "__cpp_lib_enable_shared_from_this should not be defined before c++17"
# endif
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should not be defined before c++26"
# endif
@@ -68,6 +76,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -134,6 +146,14 @@
# error "__cpp_lib_enable_shared_from_this should not be defined before c++17"
# endif
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should not be defined before c++26"
# endif
@@ -153,6 +173,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -231,6 +255,14 @@
# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++17"
# endif
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should not be defined before c++26"
# endif
@@ -250,6 +282,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -349,6 +385,14 @@
# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++20"
# endif
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should not be defined before c++26"
# endif
@@ -368,6 +412,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++20"
# endif
@@ -479,6 +527,14 @@
# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++23"
# endif
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should not be defined before c++26"
# endif
@@ -501,6 +557,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
@@ -612,6 +672,32 @@
# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_shared_ptr_array != 202506L
+# error "__cpp_lib_hardened_shared_ptr_array should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_indirect
+# error "__cpp_lib_indirect should be defined in c++26"
+# endif
+# if __cpp_lib_indirect != 202502L
+# error "__cpp_lib_indirect should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should be defined in c++26"
# endif
@@ -637,6 +723,19 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should be defined in c++26"
+# endif
+# if __cpp_lib_polymorphic != 202502L
+# error "__cpp_lib_polymorphic should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
@@ -751,6 +850,32 @@
# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_shared_ptr_array != 202506L
+# error "__cpp_lib_hardened_shared_ptr_array should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_indirect
+# error "__cpp_lib_indirect should be defined in c++29"
+# endif
+# if __cpp_lib_indirect != 202502L
+# error "__cpp_lib_indirect should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_is_sufficiently_aligned
# error "__cpp_lib_is_sufficiently_aligned should be defined in c++29"
# endif
@@ -785,6 +910,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should be defined in c++29"
+# endif
+# if __cpp_lib_polymorphic != 202502L
+# error "__cpp_lib_polymorphic should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
index 63808fd08ed13..77be442d22a4d 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
@@ -20,6 +20,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -28,6 +32,10 @@
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_optional
# error "__cpp_lib_optional should not be defined before c++17"
# endif
@@ -38,6 +46,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -46,6 +58,10 @@
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_optional
# error "__cpp_lib_optional should not be defined before c++17"
# endif
@@ -56,6 +72,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -64,6 +84,10 @@
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_optional
# error "__cpp_lib_optional should be defined in c++17"
# endif
@@ -77,6 +101,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -85,6 +113,10 @@
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_optional
# error "__cpp_lib_optional should be defined in c++20"
# endif
@@ -98,6 +130,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -106,6 +142,10 @@
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_optional
# error "__cpp_lib_optional should be defined in c++23"
# endif
@@ -119,6 +159,19 @@
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should be defined in c++26"
# endif
@@ -139,6 +192,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_optional != 202502L
+# error "__cpp_lib_hardened_optional should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_optional
# error "__cpp_lib_optional should be defined in c++26"
# endif
@@ -161,6 +227,19 @@
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should be defined in c++29"
# endif
@@ -181,6 +260,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_optional != 202502L
+# error "__cpp_lib_hardened_optional should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_optional
# error "__cpp_lib_optional should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
index 8747e421f84c4..a63cd5c15a015 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
@@ -103,11 +103,17 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++26"
# endif
-# ifndef __cpp_lib_constexpr_queue
-# error "__cpp_lib_constexpr_queue should be defined in c++26"
-# endif
-# if __cpp_lib_constexpr_queue != 202502L
-# error "__cpp_lib_constexpr_queue should have the value 202502L in c++26"
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_queue != 202502L
+# error "__cpp_lib_constexpr_queue should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should not be defined because it is unimplemented in libc++!"
+# endif
# endif
# ifndef __cpp_lib_containers_ranges
@@ -126,11 +132,17 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++29"
# endif
-# ifndef __cpp_lib_constexpr_queue
-# error "__cpp_lib_constexpr_queue should be defined in c++29"
-# endif
-# if __cpp_lib_constexpr_queue != 202502L
-# error "__cpp_lib_constexpr_queue should have the value 202502L in c++29"
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_queue != 202502L
+# error "__cpp_lib_constexpr_queue should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should not be defined because it is unimplemented in libc++!"
+# endif
# endif
# ifndef __cpp_lib_containers_ranges
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
index 1b507cdafb33a..4c992b8c4bcb3 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
@@ -24,6 +24,10 @@
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -32,6 +36,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -64,6 +72,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -90,6 +102,10 @@
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -98,6 +114,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -130,6 +150,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -156,6 +180,10 @@
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -164,6 +192,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -196,6 +228,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -222,6 +258,10 @@
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++20"
# endif
@@ -233,6 +273,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -265,6 +309,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -291,6 +339,10 @@
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
@@ -311,6 +363,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_as_input != 202502L
+# error "__cpp_lib_ranges_as_input should have the value 202502L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should be defined in c++23"
# endif
@@ -367,6 +432,10 @@
# error "__cpp_lib_ranges_repeat should have the value 202207L in c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should be defined in c++23"
@@ -420,6 +489,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_view_interface != 202506L
+# error "__cpp_lib_hardened_view_interface should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
@@ -440,6 +522,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_as_input != 202502L
+# error "__cpp_lib_ranges_as_input should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should be defined in c++26"
# endif
@@ -502,6 +597,19 @@
# error "__cpp_lib_ranges_repeat should have the value 202207L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_reserve_hint != 202502L
+# error "__cpp_lib_ranges_reserve_hint should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should be defined in c++26"
@@ -555,6 +663,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_view_interface != 202506L
+# error "__cpp_lib_hardened_view_interface should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++29"
# endif
@@ -575,6 +696,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should be defined in c++29"
+# endif
+# if __cpp_lib_ranges_as_input != 202502L
+# error "__cpp_lib_ranges_as_input should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should be defined in c++29"
# endif
@@ -637,6 +771,19 @@
# error "__cpp_lib_ranges_repeat should have the value 202207L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should be defined in c++29"
+# endif
+# if __cpp_lib_ranges_reserve_hint != 202502L
+# error "__cpp_lib_ranges_reserve_hint should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should be defined in c++29"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/span.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/span.version.compile.pass.cpp
index 9fc49192a4f52..6f7715c4952dc 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/span.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/span.version.compile.pass.cpp
@@ -20,6 +20,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_span
# error "__cpp_lib_span should not be defined before c++20"
# endif
@@ -30,6 +34,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_span
# error "__cpp_lib_span should not be defined before c++20"
# endif
@@ -40,6 +48,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_span
# error "__cpp_lib_span should not be defined before c++20"
# endif
@@ -50,6 +62,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_span
# error "__cpp_lib_span should be defined in c++20"
# endif
@@ -63,6 +79,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_span
# error "__cpp_lib_span should be defined in c++23"
# endif
@@ -76,6 +96,19 @@
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_span != 202502L
+# error "__cpp_lib_hardened_span should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_span
# error "__cpp_lib_span should be defined in c++26"
# endif
@@ -92,6 +125,19 @@
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_span != 202502L
+# error "__cpp_lib_hardened_span should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_span
# error "__cpp_lib_span should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
index cc06307be967c..f20f3c227f341 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
@@ -24,6 +24,10 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -34,6 +38,10 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -44,6 +52,10 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -54,6 +66,10 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -67,6 +83,10 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++23"
# endif
@@ -83,6 +103,19 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_stack != 202502L
+# error "__cpp_lib_constexpr_stack should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++26"
# endif
@@ -99,6 +132,19 @@
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_stack != 202502L
+# error "__cpp_lib_constexpr_stack should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/stdexcept.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/stdexcept.version.compile.pass.cpp
new file mode 100644
index 0000000000000..4676c73a77f6b
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/stdexcept.version.compile.pass.cpp
@@ -0,0 +1,83 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// WARNING: This test was generated by generate_feature_test_macro_components.py
+// and should not be edited manually.
+
+// <stdexcept>
+
+// Test the feature test macros defined by <stdexcept>
+
+// clang-format off
+
+#include <stdexcept>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 26
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+#elif TEST_STD_VER > 26
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 26
+
+// clang-format on
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
index bcc78a9a4143d..342372d28bf38 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
@@ -44,6 +44,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should not be defined before c++17"
# endif
@@ -102,6 +106,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should not be defined before c++17"
# endif
@@ -166,6 +174,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++17"
# endif
@@ -251,6 +263,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++20"
# endif
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++20"
# endif
@@ -342,6 +358,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
@@ -448,6 +468,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_basic_string != 202502L
+# error "__cpp_lib_hardened_basic_string should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++26"
# endif
@@ -566,6 +599,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_basic_string != 202502L
+# error "__cpp_lib_hardened_basic_string should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp
index 5b3f63883d2e8..aa2b26287ea97 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp
@@ -32,6 +32,10 @@
# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should not be defined before c++20"
# endif
@@ -62,6 +66,10 @@
# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should not be defined before c++20"
# endif
@@ -92,6 +100,10 @@
# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should not be defined before c++20"
# endif
@@ -137,6 +149,10 @@
# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should be defined in c++20"
# endif
@@ -185,6 +201,10 @@
# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should be defined in c++23"
# endif
@@ -245,6 +265,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_basic_string_view != 202502L
+# error "__cpp_lib_hardened_basic_string_view should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should be defined in c++26"
# endif
@@ -308,6 +341,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_basic_string_view != 202502L
+# error "__cpp_lib_hardened_basic_string_view should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
index 5997d155b574f..c6555e4da554a 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
@@ -32,6 +32,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -78,6 +82,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -127,6 +135,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -185,6 +197,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -258,6 +274,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++23"
# endif
@@ -352,6 +372,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_unordered_map != 202502L
+# error "__cpp_lib_constexpr_unordered_map should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++26"
# endif
@@ -446,6 +479,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_unordered_map != 202502L
+# error "__cpp_lib_constexpr_unordered_map should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
index a4f861ce9ae19..abe86bd9a5fd6 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
@@ -32,6 +32,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -66,6 +70,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -103,6 +111,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -146,6 +158,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -204,6 +220,10 @@
# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++23"
# endif
@@ -274,6 +294,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_unordered_set != 202502L
+# error "__cpp_lib_constexpr_unordered_set should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++26"
# endif
@@ -344,6 +377,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_unordered_set != 202502L
+# error "__cpp_lib_constexpr_unordered_set should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/valarray.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/valarray.version.compile.pass.cpp
index 36d84a86901a3..893b2ffd6e0c3 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/valarray.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/valarray.version.compile.pass.cpp
@@ -20,12 +20,20 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_valarray
# error "__cpp_lib_valarray should not be defined before c++14"
# endif
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_valarray
# error "__cpp_lib_valarray should be defined in c++14"
# endif
@@ -35,6 +43,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_valarray
# error "__cpp_lib_valarray should be defined in c++17"
# endif
@@ -44,6 +56,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_valarray
# error "__cpp_lib_valarray should be defined in c++20"
# endif
@@ -53,6 +69,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_valarray
# error "__cpp_lib_valarray should be defined in c++23"
# endif
@@ -62,6 +82,19 @@
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_valarray != 202502L
+# error "__cpp_lib_hardened_valarray should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_valarray
# error "__cpp_lib_valarray should be defined in c++26"
# endif
@@ -71,6 +104,19 @@
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_valarray != 202502L
+# error "__cpp_lib_hardened_valarray should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_valarray
# error "__cpp_lib_valarray should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
index 1fa89b2a7c3f7..c3fadc74c2321 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
@@ -20,6 +20,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -34,6 +38,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -48,6 +56,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -65,6 +77,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -82,6 +98,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should not be defined before c++26"
# endif
@@ -99,6 +119,19 @@
#elif TEST_STD_VER == 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should be defined in c++26"
# endif
@@ -128,6 +161,19 @@
#elif TEST_STD_VER > 26
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constrained_equality
# error "__cpp_lib_constrained_equality should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
index 354a5b1fdd4db..697514cf401e1 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
@@ -40,6 +40,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
@@ -70,6 +74,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
@@ -103,6 +111,10 @@
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++17"
# endif
@@ -148,6 +160,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++20"
# endif
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++20"
# endif
@@ -196,6 +212,10 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++23"
# endif
@@ -253,6 +273,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_vector != 202502L
+# error "__cpp_lib_hardened_vector should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
# endif
@@ -310,6 +343,19 @@
# error "__cpp_lib_erase_if should have the value 202002L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_vector != 202502L
+# error "__cpp_lib_hardened_vector should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++29"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index e7baa3f15218d..0d6b45f824a03 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
@@ -204,10 +204,18 @@
# error "__cpp_lib_constexpr_complex should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should not be defined before c++26"
# endif
@@ -224,6 +232,10 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
# endif
@@ -256,6 +268,10 @@
# error "__cpp_lib_constexpr_set should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should not be defined before c++20"
# endif
@@ -272,6 +288,14 @@
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should not be defined before c++20"
# endif
@@ -288,6 +312,10 @@
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -424,6 +452,82 @@
# error "__cpp_lib_generic_unordered_lookup should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should not be defined before c++17"
# endif
@@ -436,6 +540,10 @@
# error "__cpp_lib_hazard_pointer should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_hypot
# error "__cpp_lib_hypot should not be defined before c++17"
# endif
@@ -444,6 +552,10 @@
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should not be defined before c++14"
# endif
@@ -656,6 +768,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
# endif
@@ -676,6 +792,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -724,6 +844,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -1192,10 +1316,18 @@
# error "__cpp_lib_constexpr_complex should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should not be defined before c++26"
# endif
@@ -1212,6 +1344,10 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
# endif
@@ -1244,6 +1380,10 @@
# error "__cpp_lib_constexpr_set should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should not be defined before c++20"
# endif
@@ -1260,6 +1400,14 @@
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should not be defined before c++20"
# endif
@@ -1276,6 +1424,10 @@
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -1418,6 +1570,82 @@
# error "__cpp_lib_generic_unordered_lookup should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should not be defined before c++17"
# endif
@@ -1430,6 +1658,10 @@
# error "__cpp_lib_hazard_pointer should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_hypot
# error "__cpp_lib_hypot should not be defined before c++17"
# endif
@@ -1438,6 +1670,10 @@
# error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
# endif
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should be defined in c++14"
# endif
@@ -1674,6 +1910,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
# endif
@@ -1703,6 +1943,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -1751,6 +1995,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -2288,10 +2536,18 @@
# error "__cpp_lib_constexpr_complex should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should not be defined before c++26"
# endif
@@ -2308,6 +2564,10 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
# endif
@@ -2340,6 +2600,10 @@
# error "__cpp_lib_constexpr_set should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should not be defined before c++20"
# endif
@@ -2356,6 +2620,14 @@
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should not be defined before c++20"
# endif
@@ -2372,6 +2644,10 @@
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -2538,6 +2814,82 @@
# error "__cpp_lib_generic_unordered_lookup should not be defined before c++20"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should be defined in c++17"
# endif
@@ -2556,6 +2908,10 @@
# error "__cpp_lib_hazard_pointer should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++17"
# endif
@@ -2570,6 +2926,10 @@
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17"
# endif
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should be defined in c++17"
# endif
@@ -2869,6 +3229,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
# endif
@@ -2898,6 +3262,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -2946,6 +3314,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -3615,6 +3987,10 @@
# error "__cpp_lib_constexpr_complex should have the value 201711L in c++20"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++20"
# endif
@@ -3622,6 +3998,10 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should not be defined before c++26"
# endif
@@ -3641,6 +4021,10 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should be defined in c++20"
# endif
@@ -3682,6 +4066,10 @@
# error "__cpp_lib_constexpr_set should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should be defined in c++20"
# endif
@@ -3707,6 +4095,14 @@
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should be defined in c++20"
# endif
@@ -3729,6 +4125,10 @@
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -3928,6 +4328,82 @@
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++20"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should be defined in c++20"
# endif
@@ -3946,6 +4422,10 @@
# error "__cpp_lib_hazard_pointer should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++20"
# endif
@@ -3960,6 +4440,10 @@
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++20"
# endif
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should be defined in c++20"
# endif
@@ -4319,6 +4803,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
# ifndef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should be defined in c++20"
@@ -4360,6 +4848,10 @@
# error "__cpp_lib_ranges_as_const should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
# endif
@@ -4408,6 +4900,10 @@
# error "__cpp_lib_ranges_repeat should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should not be defined before c++23"
# endif
@@ -5167,6 +5663,10 @@
# error "__cpp_lib_constexpr_complex should have the value 201711L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++23"
# endif
@@ -5174,6 +5674,10 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should not be defined before c++26"
# endif
@@ -5193,6 +5697,10 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should be defined in c++23"
# endif
@@ -5234,6 +5742,10 @@
# error "__cpp_lib_constexpr_set should not be defined before c++26"
# endif
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should be defined in c++23"
# endif
@@ -5262,6 +5774,14 @@
# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should be defined in c++23"
# endif
@@ -5287,6 +5807,10 @@
# error "__cpp_lib_containers_ranges should have the value 202202L in c++23"
# endif
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -5510,6 +6034,82 @@
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++23"
# endif
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should be defined in c++23"
# endif
@@ -5528,6 +6128,10 @@
# error "__cpp_lib_hazard_pointer should not be defined before c++26"
# endif
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++23"
# endif
@@ -5542,6 +6146,10 @@
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++23"
# endif
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should be defined in c++23"
# endif
@@ -5937,6 +6545,10 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
# ifndef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should be defined in c++23"
@@ -5996,6 +6608,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_as_input != 202502L
+# error "__cpp_lib_ranges_as_input should have the value 202502L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should be defined in c++23"
# endif
@@ -6080,6 +6705,10 @@
# error "__cpp_lib_ranges_repeat should have the value 202207L in c++23"
# endif
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should be defined in c++23"
@@ -6932,6 +7561,19 @@
# error "__cpp_lib_constexpr_complex should have the value 201711L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_deque != 202502L
+# error "__cpp_lib_constexpr_deque should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++26"
# endif
@@ -6939,6 +7581,19 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should be defined in c++26"
# endif
@@ -6967,6 +7622,19 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_inplace_vector != 202502L
+# error "__cpp_lib_constexpr_inplace_vector should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should be defined in c++26"
# endif
@@ -7015,11 +7683,17 @@
# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++26"
# endif
-# ifndef __cpp_lib_constexpr_queue
-# error "__cpp_lib_constexpr_queue should be defined in c++26"
-# endif
-# if __cpp_lib_constexpr_queue != 202502L
-# error "__cpp_lib_constexpr_queue should have the value 202502L in c++26"
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_queue != 202502L
+# error "__cpp_lib_constexpr_queue should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should not be defined because it is unimplemented in libc++!"
+# endif
# endif
# ifndef __cpp_lib_constexpr_set
@@ -7029,6 +7703,19 @@
# error "__cpp_lib_constexpr_set should have the value 202502L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_stack != 202502L
+# error "__cpp_lib_constexpr_stack should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should be defined in c++26"
# endif
@@ -7057,6 +7744,32 @@
# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_unordered_map != 202502L
+# error "__cpp_lib_constexpr_unordered_map should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_unordered_set != 202502L
+# error "__cpp_lib_constexpr_unordered_set should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should be defined in c++26"
# endif
@@ -7085,6 +7798,19 @@
# error "__cpp_lib_containers_ranges should have the value 202202L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_contracts
+# error "__cpp_lib_contracts should be defined in c++26"
+# endif
+# if __cpp_lib_contracts != 202502L
+# error "__cpp_lib_contracts should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should be defined in c++26"
@@ -7437,6 +8163,253 @@
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_array != 202502L
+# error "__cpp_lib_hardened_array should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_basic_stacktrace != 202506L
+# error "__cpp_lib_hardened_basic_stacktrace should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_basic_string != 202502L
+# error "__cpp_lib_hardened_basic_string should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_basic_string_view != 202502L
+# error "__cpp_lib_hardened_basic_string_view should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_bitset != 202502L
+# error "__cpp_lib_hardened_bitset should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_common_iterator != 202506L
+# error "__cpp_lib_hardened_common_iterator should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_counted_iterator != 202506L
+# error "__cpp_lib_hardened_counted_iterator should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_deque != 202502L
+# error "__cpp_lib_hardened_deque should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_expected != 202502L
+# error "__cpp_lib_hardened_expected should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_forward_list != 202502L
+# error "__cpp_lib_hardened_forward_list should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_inplace_vector != 202502L
+# error "__cpp_lib_hardened_inplace_vector should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_list != 202502L
+# error "__cpp_lib_hardened_list should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_mdspan != 202502L
+# error "__cpp_lib_hardened_mdspan should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_optional != 202502L
+# error "__cpp_lib_hardened_optional should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_shared_ptr_array != 202506L
+# error "__cpp_lib_hardened_shared_ptr_array should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_span != 202502L
+# error "__cpp_lib_hardened_span should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_valarray != 202502L
+# error "__cpp_lib_hardened_valarray should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_vector != 202502L
+# error "__cpp_lib_hardened_vector should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should be defined in c++26"
+# endif
+# if __cpp_lib_hardened_view_interface != 202506L
+# error "__cpp_lib_hardened_view_interface should have the value 202506L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should be defined in c++26"
# endif
@@ -7464,6 +8437,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hive
+# error "__cpp_lib_hive should be defined in c++26"
+# endif
+# if __cpp_lib_hive != 202502L
+# error "__cpp_lib_hive should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++26"
# endif
@@ -7478,6 +8464,19 @@
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_indirect
+# error "__cpp_lib_indirect should be defined in c++26"
+# endif
+# if __cpp_lib_indirect != 202502L
+# error "__cpp_lib_indirect should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should be defined in c++26"
# endif
@@ -7930,6 +8929,19 @@
# error "__cpp_lib_pointer_tag_pair should not be defined before c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should be defined in c++26"
+# endif
+# if __cpp_lib_polymorphic != 202502L
+# error "__cpp_lib_polymorphic should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
# ifndef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should be defined in c++26"
@@ -7989,6 +9001,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_as_input != 202502L
+# error "__cpp_lib_ranges_as_input should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should be defined in c++26"
# endif
@@ -8079,6 +9104,19 @@
# error "__cpp_lib_ranges_repeat should have the value 202207L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_reserve_hint != 202502L
+# error "__cpp_lib_ranges_reserve_hint should have the value 202502L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should be defined in c++26"
@@ -9018,6 +10056,19 @@
# error "__cpp_lib_constexpr_complex should have the value 201711L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_deque != 202502L
+# error "__cpp_lib_constexpr_deque should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_deque
+# error "__cpp_lib_constexpr_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++29"
# endif
@@ -9025,6 +10076,19 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_exceptions != 202502L
+# error "__cpp_lib_constexpr_exceptions should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_exceptions
+# error "__cpp_lib_constexpr_exceptions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_flat_map
# error "__cpp_lib_constexpr_flat_map should be defined in c++29"
# endif
@@ -9053,6 +10117,19 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_inplace_vector != 202502L
+# error "__cpp_lib_constexpr_inplace_vector should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_inplace_vector
+# error "__cpp_lib_constexpr_inplace_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_iterator
# error "__cpp_lib_constexpr_iterator should be defined in c++29"
# endif
@@ -9101,11 +10178,17 @@
# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++29"
# endif
-# ifndef __cpp_lib_constexpr_queue
-# error "__cpp_lib_constexpr_queue should be defined in c++29"
-# endif
-# if __cpp_lib_constexpr_queue != 202502L
-# error "__cpp_lib_constexpr_queue should have the value 202502L in c++29"
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_queue != 202502L
+# error "__cpp_lib_constexpr_queue should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_queue
+# error "__cpp_lib_constexpr_queue should not be defined because it is unimplemented in libc++!"
+# endif
# endif
# ifndef __cpp_lib_constexpr_set
@@ -9115,6 +10198,19 @@
# error "__cpp_lib_constexpr_set should have the value 202502L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_stack != 202502L
+# error "__cpp_lib_constexpr_stack should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_stack
+# error "__cpp_lib_constexpr_stack should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should be defined in c++29"
# endif
@@ -9143,6 +10239,32 @@
# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_unordered_map != 202502L
+# error "__cpp_lib_constexpr_unordered_map should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_map
+# error "__cpp_lib_constexpr_unordered_map should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should be defined in c++29"
+# endif
+# if __cpp_lib_constexpr_unordered_set != 202502L
+# error "__cpp_lib_constexpr_unordered_set should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_unordered_set
+# error "__cpp_lib_constexpr_unordered_set should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should be defined in c++29"
# endif
@@ -9171,6 +10293,19 @@
# error "__cpp_lib_containers_ranges should have the value 202202L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_contracts
+# error "__cpp_lib_contracts should be defined in c++29"
+# endif
+# if __cpp_lib_contracts != 202502L
+# error "__cpp_lib_contracts should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_contracts
+# error "__cpp_lib_contracts should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should be defined in c++29"
@@ -9523,6 +10658,253 @@
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_array != 202502L
+# error "__cpp_lib_hardened_array should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_array
+# error "__cpp_lib_hardened_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_basic_stacktrace != 202506L
+# error "__cpp_lib_hardened_basic_stacktrace should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_stacktrace
+# error "__cpp_lib_hardened_basic_stacktrace should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_basic_string != 202502L
+# error "__cpp_lib_hardened_basic_string should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string
+# error "__cpp_lib_hardened_basic_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_basic_string_view != 202502L
+# error "__cpp_lib_hardened_basic_string_view should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_basic_string_view
+# error "__cpp_lib_hardened_basic_string_view should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_bitset != 202502L
+# error "__cpp_lib_hardened_bitset should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_bitset
+# error "__cpp_lib_hardened_bitset should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_common_iterator != 202506L
+# error "__cpp_lib_hardened_common_iterator should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_common_iterator
+# error "__cpp_lib_hardened_common_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_counted_iterator != 202506L
+# error "__cpp_lib_hardened_counted_iterator should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_counted_iterator
+# error "__cpp_lib_hardened_counted_iterator should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_deque != 202502L
+# error "__cpp_lib_hardened_deque should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_deque
+# error "__cpp_lib_hardened_deque should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_expected != 202502L
+# error "__cpp_lib_hardened_expected should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_expected
+# error "__cpp_lib_hardened_expected should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_forward_list != 202502L
+# error "__cpp_lib_hardened_forward_list should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_forward_list
+# error "__cpp_lib_hardened_forward_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_inplace_vector != 202502L
+# error "__cpp_lib_hardened_inplace_vector should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_inplace_vector
+# error "__cpp_lib_hardened_inplace_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_list != 202502L
+# error "__cpp_lib_hardened_list should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_list
+# error "__cpp_lib_hardened_list should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_mdspan != 202502L
+# error "__cpp_lib_hardened_mdspan should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_mdspan
+# error "__cpp_lib_hardened_mdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_optional != 202502L
+# error "__cpp_lib_hardened_optional should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_optional
+# error "__cpp_lib_hardened_optional should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_shared_ptr_array != 202506L
+# error "__cpp_lib_hardened_shared_ptr_array should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_shared_ptr_array
+# error "__cpp_lib_hardened_shared_ptr_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_span != 202502L
+# error "__cpp_lib_hardened_span should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_span
+# error "__cpp_lib_hardened_span should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_valarray != 202502L
+# error "__cpp_lib_hardened_valarray should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_valarray
+# error "__cpp_lib_hardened_valarray should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_vector != 202502L
+# error "__cpp_lib_hardened_vector should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_vector
+# error "__cpp_lib_hardened_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should be defined in c++29"
+# endif
+# if __cpp_lib_hardened_view_interface != 202506L
+# error "__cpp_lib_hardened_view_interface should have the value 202506L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hardened_view_interface
+# error "__cpp_lib_hardened_view_interface should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_hardware_interference_size
# error "__cpp_lib_hardware_interference_size should be defined in c++29"
# endif
@@ -9550,6 +10932,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hive
+# error "__cpp_lib_hive should be defined in c++29"
+# endif
+# if __cpp_lib_hive != 202502L
+# error "__cpp_lib_hive should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_hive
+# error "__cpp_lib_hive should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++29"
# endif
@@ -9564,6 +10959,19 @@
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_indirect
+# error "__cpp_lib_indirect should be defined in c++29"
+# endif
+# if __cpp_lib_indirect != 202502L
+# error "__cpp_lib_indirect should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_indirect
+# error "__cpp_lib_indirect should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_initializer_list
# error "__cpp_lib_initializer_list should be defined in c++29"
# endif
@@ -10043,6 +11451,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should be defined in c++29"
+# endif
+# if __cpp_lib_polymorphic != 202502L
+# error "__cpp_lib_polymorphic should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic
+# error "__cpp_lib_polymorphic should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
# ifndef __cpp_lib_polymorphic_allocator
# error "__cpp_lib_polymorphic_allocator should be defined in c++29"
@@ -10102,6 +11523,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should be defined in c++29"
+# endif
+# if __cpp_lib_ranges_as_input != 202502L
+# error "__cpp_lib_ranges_as_input should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_ranges_as_input
+# error "__cpp_lib_ranges_as_input should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_as_rvalue
# error "__cpp_lib_ranges_as_rvalue should be defined in c++29"
# endif
@@ -10192,6 +11626,19 @@
# error "__cpp_lib_ranges_repeat should have the value 202207L in c++29"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should be defined in c++29"
+# endif
+# if __cpp_lib_ranges_reserve_hint != 202502L
+# error "__cpp_lib_ranges_reserve_hint should have the value 202502L in c++29"
+# endif
+# else
+# ifdef __cpp_lib_ranges_reserve_hint
+# error "__cpp_lib_ranges_reserve_hint should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_slide
# error "__cpp_lib_ranges_slide should be defined in c++29"
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 86d91f5e9d01d..1703ba2784799 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -373,11 +373,23 @@ def add_version_header(tc):
"values": {"c++20": 201711},
"headers": ["complex"],
},
+ {
+ "name": "__cpp_lib_constexpr_deque",
+ "values": {"c++26": 202502},
+ "headers": ["deque"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_constexpr_dynamic_alloc",
"values": {"c++20": 201907},
"headers": ["memory"],
},
+ {
+ "name": "__cpp_lib_constexpr_exceptions",
+ "values": {"c++26": 202502},
+ "headers": ["exception", "expected", "format", "optional", "stdexcept", "variant"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_constexpr_flat_map",
"values": {"c++26": 202502},
@@ -398,6 +410,12 @@ def add_version_header(tc):
"values": {"c++20": 201907},
"headers": ["functional"],
},
+ {
+ "name": "__cpp_lib_constexpr_inplace_vector",
+ "values": {"c++26": 202502},
+ "headers": ["inplace_vector"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_constexpr_iterator",
"values": {"c++20": 201811},
@@ -434,12 +452,19 @@ def add_version_header(tc):
"name": "__cpp_lib_constexpr_queue",
"values": {"c++26": 202502},
"headers": ["queue"],
+ "unimplemented": True,
},
{
"name": "__cpp_lib_constexpr_set",
"values": {"c++26": 202502},
"headers": ["set"],
},
+ {
+ "name": "__cpp_lib_constexpr_stack",
+ "values": {"c++26": 202502},
+ "headers": ["stack"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_constexpr_string",
"values": {"c++20": 201907},
@@ -460,6 +485,18 @@ def add_version_header(tc):
"values": {"c++23": 202106},
"headers": ["typeinfo"],
},
+ {
+ "name": "__cpp_lib_constexpr_unordered_map",
+ "values": {"c++26": 202502},
+ "headers": ["unordered_map"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_constexpr_unordered_set",
+ "values": {"c++26": 202502},
+ "headers": ["unordered_set"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_constexpr_utility",
"values": {"c++20": 201811},
@@ -494,6 +531,12 @@ def add_version_header(tc):
"vector",
],
},
+ {
+ "name": "__cpp_lib_contracts",
+ "values": {"c++26": 202502},
+ "headers": ["contracts"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_copyable_function",
"values": {"c++26": 202306}, # P2548R6 copyable_function
@@ -738,6 +781,120 @@ def add_version_header(tc):
"name": "__cpp_lib_generic_unordered_lookup",
"values": {"c++20": 201811},
"headers": ["unordered_map", "unordered_set"],
+ },
+ {
+ "name": "__cpp_lib_hardened_array",
+ "values": {"c++26": 202502},
+ "headers": ["array"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_basic_stacktrace",
+ "values": {"c++26": 202506},
+ "headers": ["stacktrace"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_basic_string",
+ "values": {"c++26": 202502},
+ "headers": ["string"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_basic_string_view",
+ "values": {"c++26": 202502},
+ "headers": ["string_view"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_bitset",
+ "values": {"c++26": 202502},
+ "headers": ["bitset"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_common_iterator",
+ "values": {"c++26": 202506},
+ "headers": ["iterator"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_counted_iterator",
+ "values": {"c++26": 202506},
+ "headers": ["iterator"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_deque",
+ "values": {"c++26": 202502},
+ "headers": ["deque"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_expected",
+ "values": {"c++26": 202502},
+ "headers": ["expected"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_forward_list",
+ "values": {"c++26": 202502},
+ "headers": ["forward_list"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_inplace_vector",
+ "values": {"c++26": 202502},
+ "headers": ["inplace_vector"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_list",
+ "values": {"c++26": 202502},
+ "headers": ["list"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_mdspan",
+ "values": {"c++26": 202502},
+ "headers": ["mdspan"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_optional",
+ "values": {"c++26": 202502},
+ "headers": ["optional"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_shared_ptr_array",
+ "values": {"c++26": 202506},
+ "headers": ["memory"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_span",
+ "values": {"c++26": 202502},
+ "headers": ["span"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_valarray",
+ "values": {"c++26": 202502},
+ "headers": ["valarray"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_vector",
+ "values": {"c++26": 202502},
+ "headers": ["vector"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_hardened_view_interface",
+ "values": {"c++26": 202506},
+ "headers": ["ranges"],
+ "unimplemented": True,
},
{
"name": "__cpp_lib_hardware_interference_size",
@@ -758,6 +915,12 @@ def add_version_header(tc):
"headers": ["hazard_pointer"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_hive",
+ "values": {"c++26": 202502},
+ "headers": ["hive"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_hypot",
"values": {"c++17": 201603},
@@ -768,6 +931,12 @@ def add_version_header(tc):
"values": {"c++17": 201505},
"headers": ["forward_list", "list", "vector"],
},
+ {
+ "name": "__cpp_lib_indirect",
+ "values": {"c++26": 202502},
+ "headers": ["memory"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_initializer_list",
"values": {"c++14": 202511},
@@ -1097,6 +1266,12 @@ def add_version_header(tc):
"headers": ["memory"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_polymorphic",
+ "values": {"c++26": 202502},
+ "headers": ["memory"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_polymorphic_allocator",
"values": {"c++20": 201902},
@@ -1141,6 +1316,12 @@ def add_version_header(tc):
},
"headers": ["ranges"],
"unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_ranges_as_input",
+ "values": {"c++23": 202502},
+ "headers": ["ranges"],
+ "unimplemented": True,
},
{
"name": "__cpp_lib_ranges_as_rvalue",
@@ -1203,6 +1384,12 @@ def add_version_header(tc):
"values": {"c++23": 202207},
"headers": ["ranges"],
},
+ {
+ "name": "__cpp_lib_ranges_reserve_hint",
+ "values": {"c++26": 202502},
+ "headers": ["ranges"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_ranges_slide",
"values": {"c++23": 202202},
@@ -1617,7 +1804,21 @@ def add_version_header(tc):
]
]
-assert feature_test_macros == sorted(feature_test_macros, key=lambda tc: tc["name"])
+sorted_feature_test_macros = sorted(feature_test_macros, key=lambda tc: tc["name"])
+out_of_order_macros = [
+ (index, current["name"], following["name"])
+ for index, (current, following) in enumerate(
+ zip(feature_test_macros, feature_test_macros[1:])
+ )
+ if current["name"] > following["name"]
+]
+if out_of_order_macros:
+ print("Adjacent feature_test_macros out of name order:")
+ for index, current, following in out_of_order_macros:
+ print(" [{}] {} > [{}] {}".format(index, current, index + 1, following))
+
+assert feature_test_macros == sorted_feature_test_macros
+
for tc in feature_test_macros:
assert tc["headers"] == sorted(tc["headers"]), tc
assert ("libcxx_guard" in tc) == ("test_suite_guard" in tc), tc
>From 343e9be6ef420301f71bec32a2d591abdf0ab50e Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Mon, 19 Oct 2026 09:43:44 +0300
Subject: [PATCH 2/3] Revert debug component
---
.../generate_feature_test_macro_components.py | 16 +---------------
1 file changed, 1 insertion(+), 15 deletions(-)
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 1703ba2784799..13200d89d3f88 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -1804,21 +1804,7 @@ def add_version_header(tc):
]
]
-sorted_feature_test_macros = sorted(feature_test_macros, key=lambda tc: tc["name"])
-out_of_order_macros = [
- (index, current["name"], following["name"])
- for index, (current, following) in enumerate(
- zip(feature_test_macros, feature_test_macros[1:])
- )
- if current["name"] > following["name"]
-]
-if out_of_order_macros:
- print("Adjacent feature_test_macros out of name order:")
- for index, current, following in out_of_order_macros:
- print(" [{}] {} > [{}] {}".format(index, current, index + 1, following))
-
-assert feature_test_macros == sorted_feature_test_macros
-
+assert feature_test_macros == sorted(feature_test_macros, key=lambda tc: tc["name"])
for tc in feature_test_macros:
assert tc["headers"] == sorted(tc["headers"]), tc
assert ("libcxx_guard" in tc) == ("test_suite_guard" in tc), tc
>From 02e75c59775423a4d7d60150dd446bd92d8dca53 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Mon, 19 Oct 2026 09:46:30 +0300
Subject: [PATCH 3/3] Fix formatting
---
.../utils/generate_feature_test_macro_components.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 13200d89d3f88..1fab3307ade57 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -387,7 +387,14 @@ def add_version_header(tc):
{
"name": "__cpp_lib_constexpr_exceptions",
"values": {"c++26": 202502},
- "headers": ["exception", "expected", "format", "optional", "stdexcept", "variant"],
+ "headers": [
+ "exception",
+ "expected",
+ "format",
+ "optional",
+ "stdexcept",
+ "variant",
+ ],
"unimplemented": True,
},
{
@@ -782,7 +789,7 @@ def add_version_header(tc):
"values": {"c++20": 201811},
"headers": ["unordered_map", "unordered_set"],
},
- {
+ {
"name": "__cpp_lib_hardened_array",
"values": {"c++26": 202502},
"headers": ["array"],
@@ -1317,7 +1324,7 @@ def add_version_header(tc):
"headers": ["ranges"],
"unimplemented": True,
},
- {
+ {
"name": "__cpp_lib_ranges_as_input",
"values": {"c++23": 202502},
"headers": ["ranges"],
More information about the libcxx-commits
mailing list