[libcxx-commits] [libcxx] [libc++] Update status after the Kona meeting. (PR #72421)

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Wed Nov 15 10:12:01 PST 2023


https://github.com/mordante created https://github.com/llvm/llvm-project/pull/72421

This updates:
- The status tables
- Feature test macros (including previously missing ones)
- New headers for modules

>From f30472124a2e6d0c54ca1533d183920c168d2a58 Mon Sep 17 00:00:00 2001
From: Mark de Wever <koraq at xs4all.nl>
Date: Wed, 15 Nov 2023 18:52:50 +0100
Subject: [PATCH] [libc++] Update status after the Kona meeting.

This updates:
- The status tables
- Feature test macros (including previously missing ones)
- New headers for modules
---
 libcxx/docs/FeatureTestMacroTable.rst         |  34 ++
 libcxx/docs/Helpers/Styles.rst                |   3 +
 libcxx/docs/Status/Cxx2cIssues.csv            |  24 +-
 libcxx/docs/Status/Cxx2cPapers.csv            |  19 +
 libcxx/include/version                        |  39 +-
 libcxx/modules/std.cppm.in                    |   6 +
 .../.version.compile.pass.cpp                 | 123 ++++
 .../algorithm.version.compile.pass.cpp        |  34 ++
 .../array.version.compile.pass.cpp            |  34 ++
 .../cstring.version.compile.pass.cpp          |  71 +++
 .../expected.version.compile.pass.cpp         |  38 +-
 .../map.version.compile.pass.cpp              |  44 ++
 .../mdspan.version.compile.pass.cpp           |  40 +-
 .../memory.version.compile.pass.cpp           |   5 +-
 .../optional.version.compile.pass.cpp         |  40 +-
 .../ranges.version.compile.pass.cpp           |  43 ++
 .../span.version.compile.pass.cpp             |  38 +-
 .../string_view.version.compile.pass.cpp      |  48 +-
 .../tuple.version.compile.pass.cpp            |  44 ++
 .../unordered_map.version.compile.pass.cpp    |  44 ++
 .../utility.version.compile.pass.cpp          |  44 ++
 .../variant.version.compile.pass.cpp          |  38 +-
 .../version.version.compile.pass.cpp          | 552 +++++++++++++++++-
 .../generate_feature_test_macro_components.py | 107 +++-
 libcxx/utils/libcxx/header_information.py     |   2 +
 25 files changed, 1487 insertions(+), 27 deletions(-)
 create mode 100644 libcxx/test/std/language.support/support.limits/support.limits.general/.version.compile.pass.cpp
 create mode 100644 libcxx/test/std/language.support/support.limits/support.limits.general/cstring.version.compile.pass.cpp

diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index 42bf6eb46212d07..9b4e46404d658ea 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -236,6 +236,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_format``                                *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_format_uchar``                          *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_generic_unordered_lookup``              ``201811L``
     --------------------------------------------------- -----------------
     ``__cpp_lib_int_pow2``                              ``202002L``
@@ -342,6 +344,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_print``                                 *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_as_const``                       *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_ranges_as_rvalue``                      ``202207L``
     --------------------------------------------------- -----------------
     ``__cpp_lib_ranges_chunk``                          *unimplemented*
@@ -378,6 +382,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_to_underlying``                         ``202102L``
     --------------------------------------------------- -----------------
+    ``__cpp_lib_tuple_like``                            *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_unreachable``                           ``202202L``
     --------------------------------------------------- -----------------
     **C++ 26**
@@ -392,18 +398,44 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_copyable_function``                     *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_debugging``                             *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_algorithm``                *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_array``                    *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_cstring``                  *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_expected``                 *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_mdspan``                   *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_optional``                 *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_string_view``              *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_variant``                  *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_fstream_native_handle``                 *unimplemented*
     --------------------------------------------------- -----------------
     ``__cpp_lib_function_ref``                          *unimplemented*
     --------------------------------------------------- -----------------
     ``__cpp_lib_hazard_pointer``                        *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_linalg``                                *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_out_ptr``                               *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_ratio``                                 ``202306L``
     --------------------------------------------------- -----------------
     ``__cpp_lib_rcu``                                   *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_saturation_arithmetic``                 *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_smart_ptr_owner_equality``              *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_span_initializer_list``                 *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_sstream_from_string_view``              *unimplemented*
     --------------------------------------------------- -----------------
     ``__cpp_lib_submdspan``                             *unimplemented*
@@ -412,6 +444,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_to_chars``                              *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_tuple_like``                            *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_within_lifetime``                       *unimplemented*
     =================================================== =================
 
diff --git a/libcxx/docs/Helpers/Styles.rst b/libcxx/docs/Helpers/Styles.rst
index 31352efde608fcf..67560351d734397 100644
--- a/libcxx/docs/Helpers/Styles.rst
+++ b/libcxx/docs/Helpers/Styles.rst
@@ -23,6 +23,7 @@
         .spaceship { background-color: #B0E0E6; }
         .fc { background-color: #8EAF63; white-space:nowrap; }
         .concurrency { background-color: #909090; white-space:nowrap; }
+        .dr { background-color: #FFFF99; }
       </style>
 
 .. role:: notstarted
@@ -45,6 +46,7 @@
 .. role:: spaceship
 .. role:: fc
 .. role:: concurrency
+.. role:: dr
 
 .. |chrono| replace:: :chrono:`chrono`
 .. |format| replace:: :format:`format`
@@ -52,6 +54,7 @@
 .. |spaceship| replace:: :spaceship:`spaceship`
 .. |flat_containers| replace:: :fc:`flat containers`
 .. |concurrency TS| replace:: :concurrency:`concurrency TS`
+.. |DR| replace:: :dr:`Defect Report`
 
 .. |sect| unicode:: U+00A7
 .. |hellip| unicode:: U+2026
diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv
index a928b69ea10c489..fe0f13f6e8cb2c2 100644
--- a/libcxx/docs/Status/Cxx2cIssues.csv
+++ b/libcxx/docs/Status/Cxx2cIssues.csv
@@ -17,6 +17,28 @@
 "`3938 <https://wg21.link/LWG3938>`__","Cannot use ``std::expected`` monadic ops with move-only ``error_type``","Varna June 2023","|Complete|","18.0",""
 "`3940 <https://wg21.link/LWG3940>`__","``std::expected<void, E>::value()`` also needs ``E`` to be copy constructible","Varna June 2023","","",""
 "","","","","",""
+"`2392 <https://wg21.link/LWG2392>`__","""character type"" is used but not defined","Kona November 2023","","",""
+"`3203 <https://wg21.link/LWG3203>`__","``span`` element access invalidation","Kona November 2023","","",""
+"`3305 <https://wg21.link/LWG3305>`__","``any_cast<void>``","Kona November 2023","","",""
+"`3431 <https://wg21.link/LWG3431>`__","``<=>`` for containers should require ``three_way_comparable<T>`` instead of ``<=>``","Kona November 2023","","",""
+"`3749 <https://wg21.link/LWG3749>`__","``common_iterator`` should handle integer-class difference types","Kona November 2023","","",""
+"`3809 <https://wg21.link/LWG3809>`__","Is ``std::subtract_with_carry_engine<uint16_t>`` supposed to work","Kona November 2023","","",""
+"`3892 <https://wg21.link/LWG3892>`__","Incorrect formatting of nested ranges and tuples","Kona November 2023","|Complete|","17.0","|format|"
+"`3897 <https://wg21.link/LWG3897>`__","``inout_ptr`` will not update raw pointer to 0","Kona November 2023","","",""
+"`3946 <https://wg21.link/LWG3946>`__","The definition of ``const_iterator_t`` should be reworked","Kona November 2023","","",""
+"`3947 <https://wg21.link/LWG3947>`__","Unexpected constraints on ``adjacent_transform_view::base()``","Kona November 2023","","","|ranges|"
+"`3948 <https://wg21.link/LWG3948>`__","``possibly-const-range and as-const-pointer`` should be ``noexcept``","Kona November 2023","","","|ranges|"
+"`3949 <https://wg21.link/LWG3949>`__","``std::atomic<bool>``'s trivial destructor dropped in C++17 spec wording","Kona November 2023","","",""
+"`3951 <https://wg21.link/LWG3951>`__","[expected.object.swap]: Using ``value()`` instead of ``has_value()``","Kona November 2023","","",""
+"`3953 <https://wg21.link/LWG3953>`__","``iter_move`` for ``common_iterator`` and ``counted_iterator`` should return ``decltype(auto)``","Kona November 2023","","","|ranges|"
+"`3957 <https://wg21.link/LWG3957>`__","[container.alloc.reqmts] The value category of v should be claimed","Kona November 2023","","",""
+"`3965 <https://wg21.link/LWG3965>`__","Incorrect example in [format.string.escaped] p3 for formatting of combining characters","Kona November 2023","","","|format|"
+"`3970 <https://wg21.link/LWG3970>`__","[mdspan.syn] Missing definition of ``full_extent_t`` and ``full_extent``","Kona November 2023","","",""
+"`3973 <https://wg21.link/LWG3973>`__","Monadic operations should be ADL-proof","Kona November 2023","","",""
+"`3974 <https://wg21.link/LWG3974>`__","``mdspan::operator[]`` should not copy ``OtherIndexTypes``","Kona November 2023","","",""
+"`3987 <https://wg21.link/LWG3987>`__","Including ``<flat_foo>`` doesn't provide ``std::begin``/``end``","Kona November 2023","","","|flat_containers|"
+"`3990 <https://wg21.link/LWG3990>`__","Program-defined specializations of ``std::tuple`` and ``std::variant`` can't be properly supported","Kona November 2023","","",""
+"`4001 <https://wg21.link/LWG4001>`__","``iota_view`` should provide ``empty``","Kona November 2023","","","|ranges|"
+"","","","","",""
 "`3343 <https://wg21.link/LWG3343>`__","Ordering of calls to ``unlock()`` and ``notify_all()`` in Effects element of ``notify_all_at_thread_exit()`` should be reversed","Not Yet Adopted","|Complete|","16.0",""
-"`3892 <https://wg21.link/LWG3892>`__","Incorrect formatting of nested ranges and tuples","Not Yet Adopted","|Complete|","17.0","|format|"
 "","","","","",""
diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv
index 0590e2d487c27bd..eb5398f66d0e0c1 100644
--- a/libcxx/docs/Status/Cxx2cPapers.csv
+++ b/libcxx/docs/Status/Cxx2cPapers.csv
@@ -27,3 +27,22 @@
 "`P2714R1 <https://wg21.link/P2714R1>`__","LWG","Bind front and back to NTTP callables","Varna June 2023","","",""
 "`P2630R4 <https://wg21.link/P2630R4>`__","LWG","``submdspan``","Varna June 2023","","",""
 "","","","","","",""
+"`P0543R3 <https://wg21.link/P0543R3>`__","LWG","Saturation arithmetic","Kona November 2023","","",""
+"`P2407R5 <https://wg21.link/P2407R5>`__","LWG","Freestanding Library: Partial Classes","Kona November 2023","","",""
+"`P2546R5 <https://wg21.link/P2546R5>`__","LWG","Debugging Support","Kona November 2023","","",""
+"`P2905R2 <https://wg21.link/P2905R2>`__","LWG","Runtime format strings","Kona November 2023","","","|format| |DR|"
+"`P2918R2 <https://wg21.link/P2918R2>`__","LWG","Runtime format strings II","Kona November 2023","","","|format|"
+"`P2909R4 <https://wg21.link/P2909R4>`__","LWG","Fix formatting of code units as integers (Dude, where’s my ``char``?)","Kona November 2023","","","|format| |DR|"
+"`P0952R2 <https://wg21.link/P0952R2>`__","LWG","A new specification for ``std::generate_canonical``","Kona November 2023","","",""
+"`P2447R6 <https://wg21.link/P2447R6>`__","LWG","``std::span`` over an initializer list","Kona November 2023","","",""
+"`P2821R5 <https://wg21.link/P2821R5>`__","LWG","``span.at()``","Kona November 2023","","",""
+"`P2868R3 <https://wg21.link/P2868R3>`__","LWG","Remove Deprecated ``std::allocator`` Typedef From C++26","Kona November 2023","","",""
+"`P2870R3 <https://wg21.link/P2870R3>`__","LWG","Remove ``basic_string::reserve()`` From C++26","Kona November 2023","","",""
+"`P2871R3 <https://wg21.link/P2871R3>`__","LWG","Remove Deprecated Unicode Conversion Facets from C++26","Kona November 2023","","",""
+"`P2819R2 <https://wg21.link/P2819R2>`__","LWG","Add tuple protocol to complex","Kona November 2023","","",""
+"`P2937R0 <https://wg21.link/P2937R0>`__","LWG","Freestanding: Remove ``strtok``","Kona November 2023","","",""
+"`P2833R2 <https://wg21.link/P2833R2>`__","LWG","Freestanding Library: inout expected span","Kona November 2023","","",""
+"`P2836R1 <https://wg21.link/P2836R1>`__","LWG","``std::basic_const_iterator`` should follow its underlying type's convertibility","Kona November 2023","","","|DR|"
+"`P2264R7 <https://wg21.link/P2264R7>`__","LWG","Make ``assert()`` macro user friendly for C and C++","Kona November 2023","","",""
+"`P1673R13 <https://wg21.link/P1673R13>`__","LWG","A free function linear algebra interface based on the BLAS","Kona November 2023","","",""
+"","","","","","",""
diff --git a/libcxx/include/version b/libcxx/include/version
index ec0cb0813492383..0db366af9e42e63 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -79,6 +79,7 @@ __cpp_lib_constexpr_utility                             201811L <utility>
 __cpp_lib_constexpr_vector                              201907L <vector>
 __cpp_lib_copyable_function                             202306L <functional>
 __cpp_lib_coroutine                                     201902L <coroutine>
+__cpp_lib_debugging                                     202311L <debugging>
 __cpp_lib_destroying_delete                             201806L <new>
 __cpp_lib_enable_shared_from_this                       201603L <memory>
 __cpp_lib_endian                                        201907L <bit>
@@ -92,8 +93,17 @@ __cpp_lib_expected                                      202211L <expected>
 __cpp_lib_filesystem                                    201703L <filesystem>
 __cpp_lib_format                                        202106L <format>
 __cpp_lib_format_ranges                                 202207L <format>
+__cpp_lib_format_uchar                                  202311L <>
 __cpp_lib_formatters                                    202302L <stacktrace> <thread>
 __cpp_lib_forward_like                                  202207L <utility>
+__cpp_lib_freestanding_algorithm                        202311L <algorithm>
+__cpp_lib_freestanding_array                            202311L <array>
+__cpp_lib_freestanding_cstring                          202306L <cstring>
+__cpp_lib_freestanding_expected                         202311L <expected>
+__cpp_lib_freestanding_mdspan                           202311L <mdspan>
+__cpp_lib_freestanding_optional                         202311L <optional>
+__cpp_lib_freestanding_string_view                      202311L <string_view>
+__cpp_lib_freestanding_variant                          202311L <variant>
 __cpp_lib_fstream_native_handle                         202306L <fstream>
 __cpp_lib_function_ref                                  202306L <functional>
 __cpp_lib_gcd_lcm                                       201606L <numeric>
@@ -124,6 +134,7 @@ __cpp_lib_is_swappable                                  201603L <type_traits>
 __cpp_lib_jthread                                       201911L <stop_token> <thread>
 __cpp_lib_latch                                         201907L <latch>
 __cpp_lib_launder                                       201606L <new>
+__cpp_lib_linalg                                        202311L <linalg>
 __cpp_lib_list_remove_return_type                       201806L <forward_list> <list>
 __cpp_lib_logical_traits                                201510L <type_traits>
 __cpp_lib_make_from_tuple                               201606L <tuple>
@@ -146,13 +157,15 @@ __cpp_lib_not_fn                                        201603L <functional>
 __cpp_lib_null_iterators                                201304L <iterator>
 __cpp_lib_optional                                      202110L <optional>
                                                         201606L // C++17
-__cpp_lib_out_ptr                                       202106L <memory>
+__cpp_lib_out_ptr                                       202311L <memory>
+                                                        202106L // C++23
 __cpp_lib_parallel_algorithm                            201603L <algorithm> <numeric>
 __cpp_lib_polymorphic_allocator                         201902L <memory_resource>
 __cpp_lib_print                                         202207L <ostream> <print>
 __cpp_lib_quoted_string_io                              201304L <iomanip>
 __cpp_lib_ranges                                        202207L <algorithm> <functional> <iterator>
                                                                 <memory> <ranges>
+__cpp_lib_ranges_as_const                               202207L <ranges>
 __cpp_lib_ranges_as_rvalue                              202207L <ranges>
 __cpp_lib_ranges_chunk                                  202202L <ranges>
 __cpp_lib_ranges_chunk_by                               202202L <ranges>
@@ -174,6 +187,7 @@ __cpp_lib_remove_cvref                                  201711L <type_traits>
 __cpp_lib_result_of_sfinae                              201210L <functional> <type_traits>
 __cpp_lib_robust_nonmodifying_seq_ops                   201304L <algorithm>
 __cpp_lib_sample                                        201603L <algorithm>
+__cpp_lib_saturation_arithmetic                         202311L <>
 __cpp_lib_scoped_lock                                   201703L <mutex>
 __cpp_lib_semaphore                                     201907L <semaphore>
 __cpp_lib_shared_mutex                                  201505L <shared_mutex>
@@ -186,6 +200,7 @@ __cpp_lib_smart_ptr_for_overwrite                       202002L <memory>
 __cpp_lib_smart_ptr_owner_equality                      202306L <memory>
 __cpp_lib_source_location                               201907L <source_location>
 __cpp_lib_span                                          202002L <span>
+__cpp_lib_span_initializer_list                         202311L <span>
 __cpp_lib_spanstream                                    202106L <spanstream>
 __cpp_lib_ssize                                         201902L <iterator>
 __cpp_lib_sstream_from_string_view                      202306L <sstream>
@@ -211,6 +226,9 @@ __cpp_lib_transformation_trait_aliases                  201304L <type_traits>
 __cpp_lib_transparent_operators                         201510L <functional> <memory>
                                                         201210L // C++14
 __cpp_lib_tuple_element_t                               201402L <tuple>
+__cpp_lib_tuple_like                                    202311L <map> <tuple> <unordered_map>
+                                                                <utility>
+                                                        202207L // C++23
 __cpp_lib_tuples_by_type                                201304L <tuple> <utility>
 __cpp_lib_type_identity                                 201806L <type_traits>
 __cpp_lib_type_trait_variable_templates                 201510L <type_traits>
@@ -364,6 +382,7 @@ __cpp_lib_within_lifetime                               202306L <type_traits>
 # undef  __cpp_lib_execution
 // # define __cpp_lib_execution                            201902L
 // # define __cpp_lib_format                               202106L
+// # define __cpp_lib_format_uchar                         202311L
 # define __cpp_lib_generic_unordered_lookup             201811L
 # define __cpp_lib_int_pow2                             202002L
 # define __cpp_lib_integer_comparison_functions         202002L
@@ -435,6 +454,7 @@ __cpp_lib_within_lifetime                               202306L <type_traits>
 # define __cpp_lib_optional                             202110L
 // # define __cpp_lib_out_ptr                              202106L
 // # define __cpp_lib_print                                202207L
+// # define __cpp_lib_ranges_as_const                      202207L
 # define __cpp_lib_ranges_as_rvalue                     202207L
 // # define __cpp_lib_ranges_chunk                         202202L
 # define __cpp_lib_ranges_chunk_by                      202202L
@@ -453,6 +473,7 @@ __cpp_lib_within_lifetime                               202306L <type_traits>
 # define __cpp_lib_string_resize_and_overwrite          202110L
 // # define __cpp_lib_to_string                            202306L
 # define __cpp_lib_to_underlying                        202102L
+// # define __cpp_lib_tuple_like                           202207L
 # define __cpp_lib_unreachable                          202202L
 #endif
 
@@ -464,17 +485,33 @@ __cpp_lib_within_lifetime                               202306L <type_traits>
 # define __cpp_lib_bind_front                           202306L
 # define __cpp_lib_bitset                               202306L
 // # define __cpp_lib_copyable_function                    202306L
+// # define __cpp_lib_debugging                            202311L
+// # define __cpp_lib_freestanding_algorithm               202311L
+// # define __cpp_lib_freestanding_array                   202311L
+// # define __cpp_lib_freestanding_cstring                 202306L
+// # define __cpp_lib_freestanding_expected                202311L
+// # define __cpp_lib_freestanding_mdspan                  202311L
+// # define __cpp_lib_freestanding_optional                202311L
+// # define __cpp_lib_freestanding_string_view             202311L
+// # define __cpp_lib_freestanding_variant                 202311L
 // # define __cpp_lib_fstream_native_handle                202306L
 // # define __cpp_lib_function_ref                         202306L
 // # define __cpp_lib_hazard_pointer                       202306L
+// # define __cpp_lib_linalg                               202311L
+# undef  __cpp_lib_out_ptr
+// # define __cpp_lib_out_ptr                              202311L
 # define __cpp_lib_ratio                                202306L
 // # define __cpp_lib_rcu                                  202306L
+// # define __cpp_lib_saturation_arithmetic                202311L
 // # define __cpp_lib_smart_ptr_owner_equality             202306L
+// # define __cpp_lib_span_initializer_list                202311L
 // # define __cpp_lib_sstream_from_string_view             202306L
 // # define __cpp_lib_submdspan                            202306L
 // # define __cpp_lib_text_encoding                        202306L
 # undef  __cpp_lib_to_chars
 // # define __cpp_lib_to_chars                             202306L
+# undef  __cpp_lib_tuple_like
+// # define __cpp_lib_tuple_like                           202311L
 // # define __cpp_lib_within_lifetime                      202306L
 #endif
 
diff --git a/libcxx/modules/std.cppm.in b/libcxx/modules/std.cppm.in
index 09ea531e172e131..ecb06012603253b 100644
--- a/libcxx/modules/std.cppm.in
+++ b/libcxx/modules/std.cppm.in
@@ -168,6 +168,9 @@ module;
 #include <version>
 
 // *** Headers not yet available ***
+#if __has_include(<debugging>)
+#  error "update the header information for <debugging> in libcxx/utils/generate_std_cppm_in.py"
+#endif //   __has_include(<debugging>)
 #if __has_include(<flat_map>)
 #  error "update the header information for <flat_map> in libcxx/utils/generate_std_cppm_in.py"
 #endif //   __has_include(<flat_map>)
@@ -180,6 +183,9 @@ module;
 #if __has_include(<hazard_pointer>)
 #  error "update the header information for <hazard_pointer> in libcxx/utils/generate_std_cppm_in.py"
 #endif //   __has_include(<hazard_pointer>)
+#if __has_include(<linalg>)
+#  error "update the header information for <linalg> in libcxx/utils/generate_std_cppm_in.py"
+#endif //   __has_include(<linalg>)
 #if __has_include(<rcu>)
 #  error "update the header information for <rcu> in libcxx/utils/generate_std_cppm_in.py"
 #endif //   __has_include(<rcu>)
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/.version.compile.pass.cpp
new file mode 100644
index 000000000000000..6aa31c60e863002
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/.version.compile.pass.cpp
@@ -0,0 +1,123 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+// clang-format off
+
+// <>
+
+// Test the feature test macros defined by <>
+
+/*  Constant                           Value
+    __cpp_lib_format_uchar             202311L [C++20]
+    __cpp_lib_saturation_arithmetic    202311L [C++26]
+*/
+
+#include <>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_format_uchar
+#   error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_format_uchar
+#   error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_format_uchar
+#   error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should be defined in c++20"
+#   endif
+#   if __cpp_lib_format_uchar != 202311L
+#     error "__cpp_lib_format_uchar should have the value 202311L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should be defined in c++23"
+#   endif
+#   if __cpp_lib_format_uchar != 202311L
+#     error "__cpp_lib_format_uchar should have the value 202311L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should be defined in c++26"
+#   endif
+#   if __cpp_lib_format_uchar != 202311L
+#     error "__cpp_lib_format_uchar should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_saturation_arithmetic
+#     error "__cpp_lib_saturation_arithmetic should be defined in c++26"
+#   endif
+#   if __cpp_lib_saturation_arithmetic != 202311L
+#     error "__cpp_lib_saturation_arithmetic should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_saturation_arithmetic
+#     error "__cpp_lib_saturation_arithmetic should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+#endif // TEST_STD_VER > 23
+
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
index 1cd58f081952f4b..ec6503ec2375547 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
@@ -18,6 +18,7 @@
 /*  Constant                                 Value
     __cpp_lib_clamp                          201603L [C++17]
     __cpp_lib_constexpr_algorithms           201806L [C++20]
+    __cpp_lib_freestanding_algorithm         202311L [C++26]
     __cpp_lib_parallel_algorithm             201603L [C++17]
     __cpp_lib_ranges                         202207L [C++20]
     __cpp_lib_ranges_starts_ends_with        202106L [C++23]
@@ -39,6 +40,10 @@
 #   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_parallel_algorithm
 #   error "__cpp_lib_parallel_algorithm should not be defined before c++17"
 # endif
@@ -73,6 +78,10 @@
 #   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_parallel_algorithm
 #   error "__cpp_lib_parallel_algorithm should not be defined before c++17"
 # endif
@@ -113,6 +122,10 @@
 #   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_parallel_algorithm
 #     error "__cpp_lib_parallel_algorithm should be defined in c++17"
@@ -168,6 +181,10 @@
 #   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_parallel_algorithm
 #     error "__cpp_lib_parallel_algorithm should be defined in c++20"
@@ -229,6 +246,10 @@
 #   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_parallel_algorithm
 #     error "__cpp_lib_parallel_algorithm should be defined in c++23"
@@ -299,6 +320,19 @@
 #   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_algorithm
+#     error "__cpp_lib_freestanding_algorithm should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_algorithm != 202311L
+#     error "__cpp_lib_freestanding_algorithm should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_algorithm
+#     error "__cpp_lib_freestanding_algorithm should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_parallel_algorithm
 #     error "__cpp_lib_parallel_algorithm should be defined in c++26"
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 1a8f78ed73cf2ff..75b54923940715e 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
@@ -18,6 +18,7 @@
 /*  Constant                                Value
     __cpp_lib_array_constexpr               201603L [C++17]
                                             201811L [C++20]
+    __cpp_lib_freestanding_array            202311L [C++26]
     __cpp_lib_nonmember_container_access    201411L [C++17]
     __cpp_lib_to_array                      201907L [C++20]
 */
@@ -31,6 +32,10 @@
 #   error "__cpp_lib_array_constexpr should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_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
@@ -45,6 +50,10 @@
 #   error "__cpp_lib_array_constexpr should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_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
@@ -62,6 +71,10 @@
 #   error "__cpp_lib_array_constexpr should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_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
@@ -82,6 +95,10 @@
 #   error "__cpp_lib_array_constexpr should have the value 201811L in c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_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
@@ -105,6 +122,10 @@
 #   error "__cpp_lib_array_constexpr should have the value 201811L in c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_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
@@ -128,6 +149,19 @@
 #   error "__cpp_lib_array_constexpr should have the value 201811L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_array
+#     error "__cpp_lib_freestanding_array should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_array != 202311L
+#     error "__cpp_lib_freestanding_array should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_array
+#     error "__cpp_lib_freestanding_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
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cstring.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cstring.version.compile.pass.cpp
new file mode 100644
index 000000000000000..345acf1e599d489
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cstring.version.compile.pass.cpp
@@ -0,0 +1,71 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+// clang-format off
+
+// <cstring>
+
+// Test the feature test macros defined by <cstring>
+
+/*  Constant                          Value
+    __cpp_lib_freestanding_cstring    202306L [C++26]
+*/
+
+#include <cstring>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_cstring
+#     error "__cpp_lib_freestanding_cstring should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_cstring != 202306L
+#     error "__cpp_lib_freestanding_cstring should have the value 202306L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_cstring
+#     error "__cpp_lib_freestanding_cstring should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+#endif // TEST_STD_VER > 23
+
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 771b144a3ed8b84..175e9501eb9586d 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
@@ -15,8 +15,9 @@
 
 // Test the feature test macros defined by <expected>
 
-/*  Constant              Value
-    __cpp_lib_expected    202211L [C++23]
+/*  Constant                           Value
+    __cpp_lib_expected                 202211L [C++23]
+    __cpp_lib_freestanding_expected    202311L [C++26]
 */
 
 #include <expected>
@@ -28,24 +29,40 @@
 #   error "__cpp_lib_expected should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_expected
 #   error "__cpp_lib_expected should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifdef __cpp_lib_expected
 #   error "__cpp_lib_expected should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifdef __cpp_lib_expected
 #   error "__cpp_lib_expected should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 23
 
 # ifndef __cpp_lib_expected
@@ -55,6 +72,10 @@
 #   error "__cpp_lib_expected should have the value 202211L in c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER > 23
 
 # ifndef __cpp_lib_expected
@@ -64,5 +85,18 @@
 #   error "__cpp_lib_expected should have the value 202211L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_expected
+#     error "__cpp_lib_freestanding_expected should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_expected != 202311L
+#     error "__cpp_lib_freestanding_expected should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_expected
+#     error "__cpp_lib_freestanding_expected should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #endif // TEST_STD_VER > 23
 
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
index 2c17d2acf4940f4..23a2df95dca96e9 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
@@ -25,6 +25,8 @@
     __cpp_lib_node_extract                           201606L [C++17]
     __cpp_lib_nonmember_container_access             201411L [C++17]
     __cpp_lib_ranges_to_container                    202202L [C++23]
+    __cpp_lib_tuple_like                             202207L [C++23]
+                                                     202311L [C++26]
 */
 
 #include <map>
@@ -68,6 +70,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -109,6 +115,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -162,6 +172,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -218,6 +232,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 #elif TEST_STD_VER == 23
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -286,6 +304,19 @@
 #   error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++23"
+#   endif
+#   if __cpp_lib_tuple_like != 202207L
+#     error "__cpp_lib_tuple_like should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #elif TEST_STD_VER > 23
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -363,5 +394,18 @@
 #   error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++26"
+#   endif
+#   if __cpp_lib_tuple_like != 202311L
+#     error "__cpp_lib_tuple_like should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #endif // TEST_STD_VER > 23
 
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 a44f2b6a91e5cc3..4ef33823064216d 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
@@ -15,9 +15,10 @@
 
 // Test the feature test macros defined by <mdspan>
 
-/*  Constant               Value
-    __cpp_lib_mdspan       202207L [C++23]
-    __cpp_lib_submdspan    202306L [C++26]
+/*  Constant                         Value
+    __cpp_lib_freestanding_mdspan    202311L [C++26]
+    __cpp_lib_mdspan                 202207L [C++23]
+    __cpp_lib_submdspan              202306L [C++26]
 */
 
 #include <mdspan>
@@ -25,6 +26,10 @@
 
 #if TEST_STD_VER < 14
 
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_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
@@ -35,6 +40,10 @@
 
 #elif TEST_STD_VER == 14
 
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_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
@@ -45,6 +54,10 @@
 
 #elif TEST_STD_VER == 17
 
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_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
@@ -55,6 +68,10 @@
 
 #elif TEST_STD_VER == 20
 
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_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
@@ -65,6 +82,10 @@
 
 #elif TEST_STD_VER == 23
 
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_mdspan
 #   error "__cpp_lib_mdspan should be defined in c++23"
 # endif
@@ -78,6 +99,19 @@
 
 #elif TEST_STD_VER > 23
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_mdspan
+#     error "__cpp_lib_freestanding_mdspan should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_mdspan != 202311L
+#     error "__cpp_lib_freestanding_mdspan should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_mdspan
+#     error "__cpp_lib_freestanding_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
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 94cb49750b3405b..b1f6c76d847398d 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
@@ -27,6 +27,7 @@
     __cpp_lib_enable_shared_from_this             201603L [C++17]
     __cpp_lib_make_unique                         201304L [C++14]
     __cpp_lib_out_ptr                             202106L [C++23]
+                                                  202311L [C++26]
     __cpp_lib_ranges                              202207L [C++20]
     __cpp_lib_raw_memory_algorithms               201606L [C++17]
     __cpp_lib_shared_ptr_arrays                   201611L [C++17]
@@ -625,8 +626,8 @@
 #   ifndef __cpp_lib_out_ptr
 #     error "__cpp_lib_out_ptr should be defined in c++26"
 #   endif
-#   if __cpp_lib_out_ptr != 202106L
-#     error "__cpp_lib_out_ptr should have the value 202106L in c++26"
+#   if __cpp_lib_out_ptr != 202311L
+#     error "__cpp_lib_out_ptr should have the value 202311L in c++26"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_out_ptr
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 9e1fce0de2ab5bc..99716d8f16ad78e 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
@@ -15,9 +15,10 @@
 
 // Test the feature test macros defined by <optional>
 
-/*  Constant              Value
-    __cpp_lib_optional    201606L [C++17]
-                          202110L [C++23]
+/*  Constant                           Value
+    __cpp_lib_freestanding_optional    202311L [C++26]
+    __cpp_lib_optional                 201606L [C++17]
+                                       202110L [C++23]
 */
 
 #include <optional>
@@ -25,18 +26,30 @@
 
 #if TEST_STD_VER < 14
 
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_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
 
 #elif TEST_STD_VER == 14
 
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_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
 
 #elif TEST_STD_VER == 17
 
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_optional
 #   error "__cpp_lib_optional should be defined in c++17"
 # endif
@@ -46,6 +59,10 @@
 
 #elif TEST_STD_VER == 20
 
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_optional
 #   error "__cpp_lib_optional should be defined in c++20"
 # endif
@@ -55,6 +72,10 @@
 
 #elif TEST_STD_VER == 23
 
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_optional
 #   error "__cpp_lib_optional should be defined in c++23"
 # endif
@@ -64,6 +85,19 @@
 
 #elif TEST_STD_VER > 23
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_optional
+#     error "__cpp_lib_freestanding_optional should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_optional != 202311L
+#     error "__cpp_lib_freestanding_optional should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_optional
+#     error "__cpp_lib_freestanding_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
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 582e0c7dfe5e65d..aa3a4964ad492ef 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
@@ -17,6 +17,7 @@
 
 /*  Constant                         Value
     __cpp_lib_ranges                 202207L [C++20]
+    __cpp_lib_ranges_as_const        202207L [C++23]
     __cpp_lib_ranges_as_rvalue       202207L [C++23]
     __cpp_lib_ranges_chunk           202202L [C++23]
     __cpp_lib_ranges_chunk_by        202202L [C++23]
@@ -36,6 +37,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -74,6 +79,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -112,6 +121,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -153,6 +166,10 @@
 #   error "__cpp_lib_ranges should have the value 202207L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -194,6 +211,19 @@
 #   error "__cpp_lib_ranges should have the value 202207L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const should be defined in c++23"
+#   endif
+#   if __cpp_lib_ranges_as_const != 202207L
+#     error "__cpp_lib_ranges_as_const should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const 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
@@ -283,6 +313,19 @@
 #   error "__cpp_lib_ranges should have the value 202207L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const should be defined in c++26"
+#   endif
+#   if __cpp_lib_ranges_as_const != 202207L
+#     error "__cpp_lib_ranges_as_const should have the value 202207L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const 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
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 4ede525c496ac41..355eb1338d945ef 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
@@ -15,8 +15,9 @@
 
 // Test the feature test macros defined by <span>
 
-/*  Constant          Value
-    __cpp_lib_span    202002L [C++20]
+/*  Constant                           Value
+    __cpp_lib_span                     202002L [C++20]
+    __cpp_lib_span_initializer_list    202311L [C++26]
 */
 
 #include <span>
@@ -28,18 +29,30 @@
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_span
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifdef __cpp_lib_span
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_span
@@ -49,6 +62,10 @@
 #   error "__cpp_lib_span should have the value 202002L in c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER == 23
 
 # ifndef __cpp_lib_span
@@ -58,6 +75,10 @@
 #   error "__cpp_lib_span should have the value 202002L in c++23"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 #elif TEST_STD_VER > 23
 
 # ifndef __cpp_lib_span
@@ -67,5 +88,18 @@
 #   error "__cpp_lib_span should have the value 202002L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_span_initializer_list
+#     error "__cpp_lib_span_initializer_list should be defined in c++26"
+#   endif
+#   if __cpp_lib_span_initializer_list != 202311L
+#     error "__cpp_lib_span_initializer_list should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_span_initializer_list
+#     error "__cpp_lib_span_initializer_list should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #endif // TEST_STD_VER > 23
 
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 4bb5d93df5f3389..a86ab2adff6a93a 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
@@ -15,13 +15,14 @@
 
 // Test the feature test macros defined by <string_view>
 
-/*  Constant                           Value
-    __cpp_lib_char8_t                  201907L [C++20]
-    __cpp_lib_constexpr_string_view    201811L [C++20]
-    __cpp_lib_starts_ends_with         201711L [C++20]
-    __cpp_lib_string_contains          202011L [C++23]
-    __cpp_lib_string_view              201606L [C++17]
-                                       201803L [C++20]
+/*  Constant                              Value
+    __cpp_lib_char8_t                     201907L [C++20]
+    __cpp_lib_constexpr_string_view       201811L [C++20]
+    __cpp_lib_freestanding_string_view    202311L [C++26]
+    __cpp_lib_starts_ends_with            201711L [C++20]
+    __cpp_lib_string_contains             202011L [C++23]
+    __cpp_lib_string_view                 201606L [C++17]
+                                          201803L [C++20]
 */
 
 #include <string_view>
@@ -37,6 +38,10 @@
 #   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_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
@@ -59,6 +64,10 @@
 #   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_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
@@ -81,6 +90,10 @@
 #   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_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
@@ -118,6 +131,10 @@
 #   error "__cpp_lib_constexpr_string_view should have the value 201811L in c++20"
 # endif
 
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_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
@@ -158,6 +175,10 @@
 #   error "__cpp_lib_constexpr_string_view should have the value 201811L in c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_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
@@ -201,6 +222,19 @@
 #   error "__cpp_lib_constexpr_string_view should have the value 201811L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_string_view
+#     error "__cpp_lib_freestanding_string_view should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_string_view != 202311L
+#     error "__cpp_lib_freestanding_string_view should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_string_view
+#     error "__cpp_lib_freestanding_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
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
index 86aafdf60230aed..ce17aef3ecdf6f4 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
@@ -21,6 +21,8 @@
     __cpp_lib_make_from_tuple    201606L [C++17]
     __cpp_lib_ranges_zip         202110L [C++23]
     __cpp_lib_tuple_element_t    201402L [C++14]
+    __cpp_lib_tuple_like         202207L [C++23]
+                                 202311L [C++26]
     __cpp_lib_tuples_by_type     201304L [C++14]
 */
 
@@ -49,6 +51,10 @@
 #   error "__cpp_lib_tuple_element_t should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifdef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should not be defined before c++14"
 # endif
@@ -78,6 +84,10 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++14"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++14"
 # endif
@@ -116,6 +126,10 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++17"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++17"
 # endif
@@ -157,6 +171,10 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++20"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++20"
 # endif
@@ -207,6 +225,19 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++23"
+#   endif
+#   if __cpp_lib_tuple_like != 202207L
+#     error "__cpp_lib_tuple_like should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++23"
 # endif
@@ -257,6 +288,19 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++26"
+#   endif
+#   if __cpp_lib_tuple_like != 202311L
+#     error "__cpp_lib_tuple_like should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++26"
 # 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 743f89dddfba0c5..5f7f1805c509fd4 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
@@ -24,6 +24,8 @@
     __cpp_lib_node_extract                           201606L [C++17]
     __cpp_lib_nonmember_container_access             201411L [C++17]
     __cpp_lib_ranges_to_container                    202202L [C++23]
+    __cpp_lib_tuple_like                             202207L [C++23]
+                                                     202311L [C++26]
     __cpp_lib_unordered_map_try_emplace              201411L [C++17]
 */
 
@@ -64,6 +66,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifdef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
@@ -102,6 +108,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifdef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
@@ -149,6 +159,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should be defined in c++17"
 # endif
@@ -205,6 +219,10 @@
 #   error "__cpp_lib_ranges_to_container should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should be defined in c++20"
 # endif
@@ -273,6 +291,19 @@
 #   error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++23"
+#   endif
+#   if __cpp_lib_tuple_like != 202207L
+#     error "__cpp_lib_tuple_like should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should be defined in c++23"
 # endif
@@ -350,6 +381,19 @@
 #   error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++26"
+#   endif
+#   if __cpp_lib_tuple_like != 202311L
+#     error "__cpp_lib_tuple_like should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should be defined in c++26"
 # endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
index 14fd4db333ebbde..dd56f8d5359ddbe 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
@@ -25,6 +25,8 @@
     __cpp_lib_integer_sequence                201304L [C++14]
     __cpp_lib_ranges_zip                      202110L [C++23]
     __cpp_lib_to_underlying                   202102L [C++23]
+    __cpp_lib_tuple_like                      202207L [C++23]
+                                              202311L [C++26]
     __cpp_lib_tuples_by_type                  201304L [C++14]
     __cpp_lib_unreachable                     202202L [C++23]
 */
@@ -70,6 +72,10 @@
 #   error "__cpp_lib_to_underlying should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifdef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should not be defined before c++14"
 # endif
@@ -122,6 +128,10 @@
 #   error "__cpp_lib_to_underlying should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++14"
 # endif
@@ -180,6 +190,10 @@
 #   error "__cpp_lib_to_underlying should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++17"
 # endif
@@ -247,6 +261,10 @@
 #   error "__cpp_lib_to_underlying should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++20"
 # endif
@@ -329,6 +347,19 @@
 #   error "__cpp_lib_to_underlying should have the value 202102L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++23"
+#   endif
+#   if __cpp_lib_tuple_like != 202207L
+#     error "__cpp_lib_tuple_like should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++23"
 # endif
@@ -414,6 +445,19 @@
 #   error "__cpp_lib_to_underlying should have the value 202102L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++26"
+#   endif
+#   if __cpp_lib_tuple_like != 202311L
+#     error "__cpp_lib_tuple_like should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++26"
 # 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 eed646b9b664919..3e65b1445d0ccdd 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
@@ -15,8 +15,9 @@
 
 // Test the feature test macros defined by <variant>
 
-/*  Constant             Value
-    __cpp_lib_variant    202102L [C++17]
+/*  Constant                          Value
+    __cpp_lib_freestanding_variant    202311L [C++26]
+    __cpp_lib_variant                 202102L [C++17]
 */
 
 #include <variant>
@@ -24,18 +25,30 @@
 
 #if TEST_STD_VER < 14
 
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_variant
 #   error "__cpp_lib_variant should not be defined before c++17"
 # endif
 
 #elif TEST_STD_VER == 14
 
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_variant
 #   error "__cpp_lib_variant should not be defined before c++17"
 # endif
 
 #elif TEST_STD_VER == 17
 
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_variant
 #   error "__cpp_lib_variant should be defined in c++17"
 # endif
@@ -45,6 +58,10 @@
 
 #elif TEST_STD_VER == 20
 
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_variant
 #   error "__cpp_lib_variant should be defined in c++20"
 # endif
@@ -54,6 +71,10 @@
 
 #elif TEST_STD_VER == 23
 
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_variant
 #   error "__cpp_lib_variant should be defined in c++23"
 # endif
@@ -63,6 +84,19 @@
 
 #elif TEST_STD_VER > 23
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_variant
+#     error "__cpp_lib_freestanding_variant should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_variant != 202311L
+#     error "__cpp_lib_freestanding_variant should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_variant
+#     error "__cpp_lib_freestanding_variant should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_variant
 #   error "__cpp_lib_variant should be defined in c++26"
 # 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 0c1b8fa997ffd85..1e4ff3b7f864a3f 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
@@ -74,6 +74,7 @@
     __cpp_lib_constexpr_vector                       201907L [C++20]
     __cpp_lib_copyable_function                      202306L [C++26]
     __cpp_lib_coroutine                              201902L [C++20]
+    __cpp_lib_debugging                              202311L [C++26]
     __cpp_lib_destroying_delete                      201806L [C++20]
     __cpp_lib_enable_shared_from_this                201603L [C++17]
     __cpp_lib_endian                                 201907L [C++20]
@@ -85,8 +86,17 @@
     __cpp_lib_filesystem                             201703L [C++17]
     __cpp_lib_format                                 202106L [C++20]
     __cpp_lib_format_ranges                          202207L [C++23]
+    __cpp_lib_format_uchar                           202311L [C++20]
     __cpp_lib_formatters                             202302L [C++23]
     __cpp_lib_forward_like                           202207L [C++23]
+    __cpp_lib_freestanding_algorithm                 202311L [C++26]
+    __cpp_lib_freestanding_array                     202311L [C++26]
+    __cpp_lib_freestanding_cstring                   202306L [C++26]
+    __cpp_lib_freestanding_expected                  202311L [C++26]
+    __cpp_lib_freestanding_mdspan                    202311L [C++26]
+    __cpp_lib_freestanding_optional                  202311L [C++26]
+    __cpp_lib_freestanding_string_view               202311L [C++26]
+    __cpp_lib_freestanding_variant                   202311L [C++26]
     __cpp_lib_fstream_native_handle                  202306L [C++26]
     __cpp_lib_function_ref                           202306L [C++26]
     __cpp_lib_gcd_lcm                                201606L [C++17]
@@ -117,6 +127,7 @@
     __cpp_lib_jthread                                201911L [C++20]
     __cpp_lib_latch                                  201907L [C++20]
     __cpp_lib_launder                                201606L [C++17]
+    __cpp_lib_linalg                                 202311L [C++26]
     __cpp_lib_list_remove_return_type                201806L [C++20]
     __cpp_lib_logical_traits                         201510L [C++17]
     __cpp_lib_make_from_tuple                        201606L [C++17]
@@ -136,11 +147,13 @@
     __cpp_lib_optional                               201606L [C++17]
                                                      202110L [C++23]
     __cpp_lib_out_ptr                                202106L [C++23]
+                                                     202311L [C++26]
     __cpp_lib_parallel_algorithm                     201603L [C++17]
     __cpp_lib_polymorphic_allocator                  201902L [C++20]
     __cpp_lib_print                                  202207L [C++23]
     __cpp_lib_quoted_string_io                       201304L [C++14]
     __cpp_lib_ranges                                 202207L [C++20]
+    __cpp_lib_ranges_as_const                        202207L [C++23]
     __cpp_lib_ranges_as_rvalue                       202207L [C++23]
     __cpp_lib_ranges_chunk                           202202L [C++23]
     __cpp_lib_ranges_chunk_by                        202202L [C++23]
@@ -159,6 +172,7 @@
     __cpp_lib_result_of_sfinae                       201210L [C++14]
     __cpp_lib_robust_nonmodifying_seq_ops            201304L [C++14]
     __cpp_lib_sample                                 201603L [C++17]
+    __cpp_lib_saturation_arithmetic                  202311L [C++26]
     __cpp_lib_scoped_lock                            201703L [C++17]
     __cpp_lib_semaphore                              201907L [C++20]
     __cpp_lib_shared_mutex                           201505L [C++17]
@@ -171,6 +185,7 @@
     __cpp_lib_smart_ptr_owner_equality               202306L [C++26]
     __cpp_lib_source_location                        201907L [C++20]
     __cpp_lib_span                                   202002L [C++20]
+    __cpp_lib_span_initializer_list                  202311L [C++26]
     __cpp_lib_spanstream                             202106L [C++23]
     __cpp_lib_ssize                                  201902L [C++20]
     __cpp_lib_sstream_from_string_view               202306L [C++26]
@@ -196,6 +211,8 @@
     __cpp_lib_transparent_operators                  201210L [C++14]
                                                      201510L [C++17]
     __cpp_lib_tuple_element_t                        201402L [C++14]
+    __cpp_lib_tuple_like                             202207L [C++23]
+                                                     202311L [C++26]
     __cpp_lib_tuples_by_type                         201304L [C++14]
     __cpp_lib_type_identity                          201806L [C++20]
     __cpp_lib_type_trait_variable_templates          201510L [C++17]
@@ -429,6 +446,10 @@
 #   error "__cpp_lib_coroutine should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_debugging
+#   error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_destroying_delete
 #   error "__cpp_lib_destroying_delete should not be defined before c++20"
 # endif
@@ -469,6 +490,10 @@
 #   error "__cpp_lib_format_ranges should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_format_uchar
+#   error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_formatters
 #   error "__cpp_lib_formatters should not be defined before c++23"
 # endif
@@ -477,6 +502,38 @@
 #   error "__cpp_lib_forward_like should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_fstream_native_handle
 #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
 # endif
@@ -597,6 +654,10 @@
 #   error "__cpp_lib_launder should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_linalg
+#   error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_list_remove_return_type
 #   error "__cpp_lib_list_remove_return_type should not be defined before c++20"
 # endif
@@ -689,6 +750,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -761,6 +826,10 @@
 #   error "__cpp_lib_sample should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_scoped_lock
 #   error "__cpp_lib_scoped_lock should not be defined before c++17"
 # endif
@@ -805,6 +874,10 @@
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_spanstream
 #   error "__cpp_lib_spanstream should not be defined before c++23"
 # endif
@@ -893,6 +966,10 @@
 #   error "__cpp_lib_tuple_element_t should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifdef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should not be defined before c++14"
 # endif
@@ -1157,6 +1234,10 @@
 #   error "__cpp_lib_coroutine should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_debugging
+#   error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_destroying_delete
 #   error "__cpp_lib_destroying_delete should not be defined before c++20"
 # endif
@@ -1200,6 +1281,10 @@
 #   error "__cpp_lib_format_ranges should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_format_uchar
+#   error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_formatters
 #   error "__cpp_lib_formatters should not be defined before c++23"
 # endif
@@ -1208,6 +1293,38 @@
 #   error "__cpp_lib_forward_like should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_fstream_native_handle
 #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
 # endif
@@ -1343,6 +1460,10 @@
 #   error "__cpp_lib_launder should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_linalg
+#   error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_list_remove_return_type
 #   error "__cpp_lib_list_remove_return_type should not be defined before c++20"
 # endif
@@ -1447,6 +1568,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -1525,6 +1650,10 @@
 #   error "__cpp_lib_sample should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_scoped_lock
 #   error "__cpp_lib_scoped_lock should not be defined before c++17"
 # endif
@@ -1578,6 +1707,10 @@
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_spanstream
 #   error "__cpp_lib_spanstream should not be defined before c++23"
 # endif
@@ -1678,6 +1811,10 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++14"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++14"
 # endif
@@ -1981,6 +2118,10 @@
 #   error "__cpp_lib_coroutine should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_debugging
+#   error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_destroying_delete
 #   error "__cpp_lib_destroying_delete should not be defined before c++20"
 # endif
@@ -2045,6 +2186,10 @@
 #   error "__cpp_lib_format_ranges should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_format_uchar
+#   error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_formatters
 #   error "__cpp_lib_formatters should not be defined before c++23"
 # endif
@@ -2053,6 +2198,38 @@
 #   error "__cpp_lib_forward_like should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_fstream_native_handle
 #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
 # endif
@@ -2224,6 +2401,10 @@
 #   error "__cpp_lib_launder should have the value 201606L in c++17"
 # endif
 
+# ifdef __cpp_lib_linalg
+#   error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_list_remove_return_type
 #   error "__cpp_lib_list_remove_return_type should not be defined before c++20"
 # endif
@@ -2376,6 +2557,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -2460,6 +2645,10 @@
 #   error "__cpp_lib_sample should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_scoped_lock
 #   error "__cpp_lib_scoped_lock should be defined in c++17"
 # endif
@@ -2531,6 +2720,10 @@
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_spanstream
 #   error "__cpp_lib_spanstream should not be defined before c++23"
 # endif
@@ -2643,6 +2836,10 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++17"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++17"
 # endif
@@ -3081,6 +3278,10 @@
 #   error "__cpp_lib_coroutine should have the value 201902L in c++20"
 # endif
 
+# ifdef __cpp_lib_debugging
+#   error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
 # if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
 #   ifndef __cpp_lib_destroying_delete
 #     error "__cpp_lib_destroying_delete should be defined in c++20"
@@ -3169,6 +3370,19 @@
 #   error "__cpp_lib_format_ranges should not be defined before c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should be defined in c++20"
+#   endif
+#   if __cpp_lib_format_uchar != 202311L
+#     error "__cpp_lib_format_uchar should have the value 202311L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifdef __cpp_lib_formatters
 #   error "__cpp_lib_formatters should not be defined before c++23"
 # endif
@@ -3177,6 +3391,38 @@
 #   error "__cpp_lib_forward_like should not be defined before c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_fstream_native_handle
 #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
 # endif
@@ -3402,6 +3648,10 @@
 #   error "__cpp_lib_launder should have the value 201606L in c++20"
 # endif
 
+# ifdef __cpp_lib_linalg
+#   error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_list_remove_return_type
 #   error "__cpp_lib_list_remove_return_type should be defined in c++20"
 # endif
@@ -3575,6 +3825,10 @@
 #   error "__cpp_lib_ranges should have the value 202207L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_as_const
+#   error "__cpp_lib_ranges_as_const 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
@@ -3662,6 +3916,10 @@
 #   error "__cpp_lib_sample should have the value 201603L in c++20"
 # endif
 
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_scoped_lock
 #   error "__cpp_lib_scoped_lock should be defined in c++20"
 # endif
@@ -3766,6 +4024,10 @@
 #   error "__cpp_lib_span should have the value 202002L in c++20"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_spanstream
 #   error "__cpp_lib_spanstream should not be defined before c++23"
 # endif
@@ -3908,6 +4170,10 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++20"
 # endif
 
+# ifdef __cpp_lib_tuple_like
+#   error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++20"
 # endif
@@ -4397,6 +4663,10 @@
 #   error "__cpp_lib_coroutine should have the value 201902L in c++23"
 # endif
 
+# ifdef __cpp_lib_debugging
+#   error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
 # if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
 #   ifndef __cpp_lib_destroying_delete
 #     error "__cpp_lib_destroying_delete should be defined in c++23"
@@ -4491,6 +4761,19 @@
 #   error "__cpp_lib_format_ranges should have the value 202207L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should be defined in c++23"
+#   endif
+#   if __cpp_lib_format_uchar != 202311L
+#     error "__cpp_lib_format_uchar should have the value 202311L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_formatters
 #     error "__cpp_lib_formatters should be defined in c++23"
@@ -4511,6 +4794,38 @@
 #   error "__cpp_lib_forward_like should have the value 202207L in c++23"
 # endif
 
+# ifdef __cpp_lib_freestanding_algorithm
+#   error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+#   error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+#   error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+#   error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+#   error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+#   error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+#   error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+#   error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
 # ifdef __cpp_lib_fstream_native_handle
 #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
 # endif
@@ -4742,6 +5057,10 @@
 #   error "__cpp_lib_launder should have the value 201606L in c++23"
 # endif
 
+# ifdef __cpp_lib_linalg
+#   error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_list_remove_return_type
 #   error "__cpp_lib_list_remove_return_type should be defined in c++23"
 # endif
@@ -4945,6 +5264,19 @@
 #   error "__cpp_lib_ranges should have the value 202207L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const should be defined in c++23"
+#   endif
+#   if __cpp_lib_ranges_as_const != 202207L
+#     error "__cpp_lib_ranges_as_const should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const 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
@@ -5107,6 +5439,10 @@
 #   error "__cpp_lib_sample should have the value 201603L in c++23"
 # endif
 
+# ifdef __cpp_lib_saturation_arithmetic
+#   error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
 # ifndef __cpp_lib_scoped_lock
 #   error "__cpp_lib_scoped_lock should be defined in c++23"
 # endif
@@ -5211,6 +5547,10 @@
 #   error "__cpp_lib_span should have the value 202002L in c++23"
 # endif
 
+# ifdef __cpp_lib_span_initializer_list
+#   error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_spanstream
 #     error "__cpp_lib_spanstream should be defined in c++23"
@@ -5392,6 +5732,19 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++23"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++23"
+#   endif
+#   if __cpp_lib_tuple_like != 202207L
+#     error "__cpp_lib_tuple_like should have the value 202207L in c++23"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++23"
 # endif
@@ -5905,6 +6258,19 @@
 #   error "__cpp_lib_coroutine should have the value 201902L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_debugging
+#     error "__cpp_lib_debugging should be defined in c++26"
+#   endif
+#   if __cpp_lib_debugging != 202311L
+#     error "__cpp_lib_debugging should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_debugging
+#     error "__cpp_lib_debugging should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
 #   ifndef __cpp_lib_destroying_delete
 #     error "__cpp_lib_destroying_delete should be defined in c++26"
@@ -5999,6 +6365,19 @@
 #   error "__cpp_lib_format_ranges should have the value 202207L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should be defined in c++26"
+#   endif
+#   if __cpp_lib_format_uchar != 202311L
+#     error "__cpp_lib_format_uchar should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_format_uchar
+#     error "__cpp_lib_format_uchar should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_formatters
 #     error "__cpp_lib_formatters should be defined in c++26"
@@ -6019,6 +6398,110 @@
 #   error "__cpp_lib_forward_like should have the value 202207L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_algorithm
+#     error "__cpp_lib_freestanding_algorithm should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_algorithm != 202311L
+#     error "__cpp_lib_freestanding_algorithm should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_algorithm
+#     error "__cpp_lib_freestanding_algorithm should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_array
+#     error "__cpp_lib_freestanding_array should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_array != 202311L
+#     error "__cpp_lib_freestanding_array should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_array
+#     error "__cpp_lib_freestanding_array should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_cstring
+#     error "__cpp_lib_freestanding_cstring should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_cstring != 202306L
+#     error "__cpp_lib_freestanding_cstring should have the value 202306L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_cstring
+#     error "__cpp_lib_freestanding_cstring should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_expected
+#     error "__cpp_lib_freestanding_expected should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_expected != 202311L
+#     error "__cpp_lib_freestanding_expected should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_expected
+#     error "__cpp_lib_freestanding_expected should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_mdspan
+#     error "__cpp_lib_freestanding_mdspan should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_mdspan != 202311L
+#     error "__cpp_lib_freestanding_mdspan should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_mdspan
+#     error "__cpp_lib_freestanding_mdspan should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_optional
+#     error "__cpp_lib_freestanding_optional should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_optional != 202311L
+#     error "__cpp_lib_freestanding_optional should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_optional
+#     error "__cpp_lib_freestanding_optional should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_string_view
+#     error "__cpp_lib_freestanding_string_view should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_string_view != 202311L
+#     error "__cpp_lib_freestanding_string_view should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_string_view
+#     error "__cpp_lib_freestanding_string_view should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_freestanding_variant
+#     error "__cpp_lib_freestanding_variant should be defined in c++26"
+#   endif
+#   if __cpp_lib_freestanding_variant != 202311L
+#     error "__cpp_lib_freestanding_variant should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_freestanding_variant
+#     error "__cpp_lib_freestanding_variant should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_fstream_native_handle
 #     error "__cpp_lib_fstream_native_handle should be defined in c++26"
@@ -6277,6 +6760,19 @@
 #   error "__cpp_lib_launder should have the value 201606L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_linalg
+#     error "__cpp_lib_linalg should be defined in c++26"
+#   endif
+#   if __cpp_lib_linalg != 202311L
+#     error "__cpp_lib_linalg should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_linalg
+#     error "__cpp_lib_linalg should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_list_remove_return_type
 #   error "__cpp_lib_list_remove_return_type should be defined in c++26"
 # endif
@@ -6418,8 +6914,8 @@
 #   ifndef __cpp_lib_out_ptr
 #     error "__cpp_lib_out_ptr should be defined in c++26"
 #   endif
-#   if __cpp_lib_out_ptr != 202106L
-#     error "__cpp_lib_out_ptr should have the value 202106L in c++26"
+#   if __cpp_lib_out_ptr != 202311L
+#     error "__cpp_lib_out_ptr should have the value 202311L in c++26"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_out_ptr
@@ -6480,6 +6976,19 @@
 #   error "__cpp_lib_ranges should have the value 202207L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const should be defined in c++26"
+#   endif
+#   if __cpp_lib_ranges_as_const != 202207L
+#     error "__cpp_lib_ranges_as_const should have the value 202207L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_ranges_as_const
+#     error "__cpp_lib_ranges_as_const 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
@@ -6654,6 +7163,19 @@
 #   error "__cpp_lib_sample should have the value 201603L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_saturation_arithmetic
+#     error "__cpp_lib_saturation_arithmetic should be defined in c++26"
+#   endif
+#   if __cpp_lib_saturation_arithmetic != 202311L
+#     error "__cpp_lib_saturation_arithmetic should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_saturation_arithmetic
+#     error "__cpp_lib_saturation_arithmetic should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_scoped_lock
 #   error "__cpp_lib_scoped_lock should be defined in c++26"
 # endif
@@ -6767,6 +7289,19 @@
 #   error "__cpp_lib_span should have the value 202002L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_span_initializer_list
+#     error "__cpp_lib_span_initializer_list should be defined in c++26"
+#   endif
+#   if __cpp_lib_span_initializer_list != 202311L
+#     error "__cpp_lib_span_initializer_list should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_span_initializer_list
+#     error "__cpp_lib_span_initializer_list should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_spanstream
 #     error "__cpp_lib_spanstream should be defined in c++26"
@@ -6975,6 +7510,19 @@
 #   error "__cpp_lib_tuple_element_t should have the value 201402L in c++26"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should be defined in c++26"
+#   endif
+#   if __cpp_lib_tuple_like != 202311L
+#     error "__cpp_lib_tuple_like should have the value 202311L in c++26"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_tuple_like
+#     error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_tuples_by_type
 #   error "__cpp_lib_tuples_by_type should be defined in c++26"
 # endif
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 98cf995ec223651..d8914522a559cca 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -396,6 +396,12 @@ def add_version_header(tc):
             "values": {"c++20": 201902},
             "headers": ["coroutine"],
         },
+        {
+            "name": "__cpp_lib_debugging",
+            "values": {"c++26": 202311}, # P2546R5 Debugging Support
+            "headers": ["debugging"],
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_destroying_delete",
             "values": {"c++20": 201806},
@@ -459,6 +465,7 @@ def add_version_header(tc):
                 # "c++20": 202110 Not implemented P2372R3 Fixing locale handling in chrono formatters
                 "c++20": 202106,
                 # "c++23": 202207, Not implemented P2419R2 Clarify handling of encodings in localized formatting of chrono types
+                # "c++26": 202311, Not implemented P2918R2 Runtime format strings II
             },
             # Note these three papers are adopted at the June 2023 meeting and have sequential numbering
             # 202304 P2510R3 Formatting pointers (Implemented)
@@ -472,6 +479,12 @@ def add_version_header(tc):
             "values": {"c++23": 202207},
             "headers": ["format"],
         },
+        {
+            "name": "__cpp_lib_format_uchar",
+            "values": {"c++20": 202311}, # DR P2909R4 Fix formatting of code units as integers
+            "headers": [""], # Note not in format
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_formatters",
             "values": {"c++23": 202302},
@@ -483,6 +496,55 @@ def add_version_header(tc):
             "values": {"c++23": 202207},
             "headers": ["utility"],
         },
+        {
+            "name": "__cpp_lib_freestanding_algorithm",
+            "values": {"c++26": 202311}, # P2407R5 Freestanding Library: Partial Classes
+            "headers": ["algorithm"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_array",
+            "values": {"c++26": 202311}, # P2407R5 Freestanding Library: Partial Classes
+            "headers": ["array"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_cstring",
+            "values": {"c++26": 202306}, # P2338R4 Freestanding Library: Character primitives and the C library
+                              # 202311   # P2407R5 Freestanding Library: Partial Classes
+            "headers": ["cstring"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_expected",
+            "values": {"c++26": 202311}, # P2833R2 Freestanding Library: inout expected span
+            "headers": ["expected"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_mdspan",
+            "values": {"c++26": 202311}, # P2833R2 Freestanding Library: inout expected span
+            "headers": ["mdspan"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_optional",
+            "values": {"c++26": 202311}, # P2407R5 Freestanding Library: Partial Classes
+            "headers": ["optional"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_string_view",
+            "values": {"c++26": 202311}, # P2407R5 Freestanding Library: Partial Classes
+            "headers": ["string_view"],
+            "unimplemented": True,
+        },
+        {
+            "name": "__cpp_lib_freestanding_variant",
+            "values": {"c++26": 202311}, # P2407R5 Freestanding Library: Partial Classes
+            "headers": ["variant"],
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_fstream_native_handle",
             "values": {"c++26": 202306}, # P1759R6 Native handles and file streams
@@ -644,6 +706,12 @@ def add_version_header(tc):
             "values": {"c++17": 201606},
             "headers": ["new"],
         },
+        {
+            "name": "__cpp_lib_linalg",
+            "values": {"c++26": 202311}, # P1673 A free function linear algebra interface based on the BLAS
+            "headers": ["linalg"],
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_list_remove_return_type",
             "values": {"c++20": 201806},
@@ -751,7 +819,10 @@ def add_version_header(tc):
         },
         {
             "name": "__cpp_lib_out_ptr",
-            "values": {"c++23": 202106},
+            "values": {
+                "c++23": 202106,
+                "c++26": 202311,  # P2833R2 Freestanding Library: inout expected span
+            },
             "headers": ["memory"],
             "unimplemented": True,
         },
@@ -784,6 +855,13 @@ def add_version_header(tc):
             "values": {"c++20": 202207},
             "headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
         },
+        {
+            "name": "__cpp_lib_ranges_as_const",
+            "values": {"c++23": 202207}, # P2278R4 cbegin should always return a constant iterator
+            #                   202311   # DR P2836R1 std::basic_const_iterator should follow its underlying type’s convertibility
+            "headers": ["ranges"],
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_ranges_as_rvalue",
             "values": {"c++23": 202207},
@@ -895,6 +973,12 @@ def add_version_header(tc):
             "values": {"c++17": 201603},
             "headers": ["algorithm"],
         },
+        {
+            "name": "__cpp_lib_saturation_arithmetic",
+            "values": {"c++26": 202311}, # P0543R3 Saturation arithmetic
+            "headers": [""],             # Note not in <numerics>
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_scoped_lock",
             "values": {"c++17": 201703},
@@ -957,9 +1041,19 @@ def add_version_header(tc):
         },
         {
             "name": "__cpp_lib_span",
-            "values": {"c++20": 202002},
+            "values": {
+                "c++20": 202002,
+                #"c++26": 202311,  # P2821R5 span.at()
+                #         202311   # P2833R2 Freestanding Library: inout expected span
+            },
             "headers": ["span"],
         },
+        {
+            "name": "__cpp_lib_span_initializer_list",
+            "values": {"c++26": 202311}, # P2447R6 std::span over an initializer list
+            "headers": ["span"],
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_spanstream",
             "values": {"c++23": 202106},
@@ -1083,6 +1177,15 @@ def add_version_header(tc):
             "values": {"c++14": 201402},
             "headers": ["tuple"],
         },
+        {
+            "name": "__cpp_lib_tuple_like",
+            "values": {
+                "c++23": 202207, # P2165R4 Compatibility between tuple, pair and tuple-like objects
+                "c++26": 202311, # P2819R2 Add tuple protocol to complex
+            },
+            "headers": ["map", "tuple", "unordered_map", "utility"],
+            "unimplemented": True,
+        },
         {
             "name": "__cpp_lib_tuples_by_type",
             "values": {"c++14": 201304},
diff --git a/libcxx/utils/libcxx/header_information.py b/libcxx/utils/libcxx/header_information.py
index 5fdb027e22b114f..de25fe3c7f97c1a 100644
--- a/libcxx/utils/libcxx/header_information.py
+++ b/libcxx/utils/libcxx/header_information.py
@@ -150,10 +150,12 @@
 # implemented yet. They are used in the generated module input. The C++23 standard
 # modules will fail to build if a header is added but this list is not updated.
 headers_not_available = [
+    "debugging",
     "flat_map",
     "flat_set",
     "generator",
     "hazard_pointer",
+    "linalg",
     "rcu",
     "spanstream",
     "stacktrace",



More information about the libcxx-commits mailing list