[libcxx-commits] [libcxx] 00c97cb - [libc++] Adds C++26 support.
Mark de Wever via libcxx-commits
libcxx-commits at lists.llvm.org
Tue May 23 22:49:27 PDT 2023
Author: Mark de Wever
Date: 2023-05-24T07:49:19+02:00
New Revision: 00c97cbc570042a49d8b1906c1a6f39106a21259
URL: https://github.com/llvm/llvm-project/commit/00c97cbc570042a49d8b1906c1a6f39106a21259
DIFF: https://github.com/llvm/llvm-project/commit/00c97cbc570042a49d8b1906c1a6f39106a21259.diff
LOG: [libc++] Adds C++26 support.
Clang has been updated to support C++26, this adds the same support for
libc++. At the moment C++23 and C++26 are identical. During the next
plenary in June the first C++26 papers will be voted on.
Note like Clang this patch uses C++26 is the internal part and C++2c in
the user visible part.
Depends on D150795
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D151026
Added:
libcxx/cmake/caches/Generic-cxx26.cmake
libcxx/docs/Status/Cxx2c.rst
libcxx/docs/Status/Cxx2cIssues.csv
libcxx/docs/Status/Cxx2cPapers.csv
libcxx/test/libcxx/transitive_includes/cxx26.csv
Modified:
libcxx/docs/FeatureTestMacroTable.rst
libcxx/docs/index.rst
libcxx/include/version
libcxx/test/libcxx/transitive_includes.sh.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/any.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/charconv.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/chrono.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/coroutine.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/cstddef.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/limits.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/memory_resource.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/mutex.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/new.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/scoped_allocator.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/shared_mutex.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/source_location.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/span.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/stdatomic.h.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/typeinfo.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
libcxx/test/tools/clang_tidy_checks/proper_version_checks.cpp
libcxx/utils/ci/buildkite-pipeline-clang.yml
libcxx/utils/ci/buildkite-pipeline.yml
libcxx/utils/ci/run-buildbot
libcxx/utils/generate_feature_test_macro_components.py
libcxx/utils/generate_header_inclusion_tests.py
libcxx/utils/libcxx/test/params.py
Removed:
################################################################################
diff --git a/libcxx/cmake/caches/Generic-cxx26.cmake b/libcxx/cmake/caches/Generic-cxx26.cmake
new file mode 100644
index 0000000000000..6ba9482af5785
--- /dev/null
+++ b/libcxx/cmake/caches/Generic-cxx26.cmake
@@ -0,0 +1,2 @@
+set(LIBCXX_TEST_PARAMS "std=c++26" CACHE STRING "")
+set(LIBCXXABI_TEST_PARAMS "${LIBCXX_TEST_PARAMS}" CACHE STRING "")
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index dda9756e82ebb..f24e210926473 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -373,5 +373,7 @@ Status
``__cpp_lib_to_underlying`` ``202102L``
------------------------------------------------- -----------------
``__cpp_lib_unreachable`` ``202202L``
- ================================================= =================
+ ------------------------------------------------- -----------------
+ **C++ 26**
+ ===================================================================
diff --git a/libcxx/docs/Status/Cxx2c.rst b/libcxx/docs/Status/Cxx2c.rst
new file mode 100644
index 0000000000000..8f5ca4f96f7ae
--- /dev/null
+++ b/libcxx/docs/Status/Cxx2c.rst
@@ -0,0 +1,48 @@
+.. _cxx2c-status:
+
+================================
+libc++ C++2c Status
+================================
+
+.. include:: ../Helpers/Styles.rst
+
+.. contents::
+ :local:
+
+
+Overview
+================================
+
+In June 2023, the C++ standard committee adopted the first changes to the next version of the C++ standard, known here as "C++2c" (probably to be C++26).
+
+This page shows the status of libc++; the status of clang's support of the language features is `here <https://clang.llvm.org/cxx_status.html#cxx2c>`__.
+
+.. attention:: Features in unreleased drafts of the standard are subject to change.
+
+The groups that have contributed papers:
+
+- CWG - Core Language Working group
+- LWG - Library working group
+- SG1 - Study group #1 (Concurrency working group)
+
+.. note:: "Nothing to do" means that no library changes were needed to implement this change.
+
+.. _paper-status-cxx2c:
+
+Paper Status
+====================================
+
+.. csv-table::
+ :file: Cxx2cPapers.csv
+ :header-rows: 1
+ :widths: auto
+
+.. _issues-status-cxx2c:
+
+Library Working Group Issues Status
+====================================
+
+.. csv-table::
+ :file: Cxx2cIssues.csv
+ :header-rows: 1
+ :widths: auto
diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv
new file mode 100644
index 0000000000000..9599a708f1979
--- /dev/null
+++ b/libcxx/docs/Status/Cxx2cIssues.csv
@@ -0,0 +1,2 @@
+"Issue #","Issue Name","Meeting","Status","First released version","Labels"
+"","","","","",""
diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv
new file mode 100644
index 0000000000000..8b6942024d865
--- /dev/null
+++ b/libcxx/docs/Status/Cxx2cPapers.csv
@@ -0,0 +1,2 @@
+"Paper #","Group","Paper Name","Meeting","Status","First released version","Labels"
+"","","","","","",""
diff --git a/libcxx/docs/index.rst b/libcxx/docs/index.rst
index 773030e6e562c..3830ee7a95a42 100644
--- a/libcxx/docs/index.rst
+++ b/libcxx/docs/index.rst
@@ -44,6 +44,7 @@ Getting Started with libc++
Status/Cxx17
Status/Cxx20
Status/Cxx23
+ Status/Cxx2c
Status/Format
Status/Parallelism
Status/Ranges
@@ -150,6 +151,7 @@ C++ Dialect Support
* :ref:`C++17 - In Progress <cxx17-status>`
* :ref:`C++20 - In Progress <cxx20-status>`
* :ref:`C++23 - In Progress <cxx23-status>`
+* :ref:`C++2c - In Progress <cxx2c-status>`
* :ref:`C++ Feature Test Macro Status <feature-status>`
diff --git a/libcxx/include/version b/libcxx/include/version
index 4cb74e29cbf2f..d26680902b098 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -433,6 +433,10 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_unreachable 202202L
#endif
+#if _LIBCPP_STD_VER >= 26
+
+#endif
+
// clang-format on
#endif // _LIBCPP_VERSIONH
diff --git a/libcxx/test/libcxx/transitive_includes.sh.cpp b/libcxx/test/libcxx/transitive_includes.sh.cpp
index 62e955e461970..11d15f3042588 100644
--- a/libcxx/test/libcxx/transitive_includes.sh.cpp
+++ b/libcxx/test/libcxx/transitive_includes.sh.cpp
@@ -40,7 +40,7 @@ import re
# To re-generate the list of expected headers, temporarily set this to True, re-generate
# the file and run this test.
# Note that this needs to be done for all supported language versions of libc++:
-# for std in c++03 c++11 c++14 c++17 c++20 c++23; do <build>/bin/llvm-lit --param std=$std ${path_to_this_file}; done
+# for std in c++03 c++11 c++14 c++17 c++20 c++23 c++26; do <build>/bin/llvm-lit --param std=$std ${path_to_this_file}; done
regenerate_expected_results = False
# Used because the sequence of tokens RUN : can't appear anywhere or it'll confuse Lit.
RUN = "RUN"
diff --git a/libcxx/test/libcxx/transitive_includes/cxx26.csv b/libcxx/test/libcxx/transitive_includes/cxx26.csv
new file mode 100644
index 0000000000000..0a386315e72a9
--- /dev/null
+++ b/libcxx/test/libcxx/transitive_includes/cxx26.csv
@@ -0,0 +1,652 @@
+algorithm climits
+algorithm cstddef
+algorithm cstdint
+algorithm cstring
+algorithm ctime
+algorithm execution
+algorithm initializer_list
+algorithm iosfwd
+algorithm limits
+algorithm new
+algorithm ratio
+algorithm version
+any cstddef
+any cstdint
+any cstring
+any initializer_list
+any limits
+any new
+any typeinfo
+any version
+array compare
+array cstddef
+array initializer_list
+array limits
+array stdexcept
+array version
+atomic cstddef
+atomic cstdint
+atomic cstdlib
+atomic cstring
+atomic ctime
+atomic iosfwd
+atomic limits
+atomic ratio
+atomic version
+barrier cstddef
+barrier cstdint
+barrier cstring
+barrier ctime
+barrier iosfwd
+barrier limits
+barrier new
+barrier ratio
+barrier version
+bit cstdint
+bit limits
+bit version
+bitset climits
+bitset cstddef
+bitset cstdint
+bitset cstring
+bitset initializer_list
+bitset iosfwd
+bitset limits
+bitset new
+bitset stdexcept
+bitset string
+bitset version
+ccomplex complex
+charconv cerrno
+charconv cmath
+charconv cstddef
+charconv cstdint
+charconv initializer_list
+charconv limits
+chrono array
+chrono cmath
+chrono compare
+chrono cstddef
+chrono cstdint
+chrono cstdlib
+chrono ctime
+chrono initializer_list
+chrono limits
+chrono locale
+chrono new
+chrono optional
+chrono ostream
+chrono ratio
+chrono sstream
+chrono stdexcept
+chrono string
+chrono string_view
+chrono tuple
+chrono version
+cinttypes cstdint
+cmath version
+codecvt cctype
+codecvt clocale
+codecvt cstddef
+codecvt cstdint
+codecvt cstdlib
+codecvt cstring
+codecvt cwchar
+codecvt mutex
+codecvt string
+codecvt version
+compare cmath
+compare cstddef
+compare cstdint
+compare limits
+compare version
+complex cmath
+complex iosfwd
+complex sstream
+complex stdexcept
+complex version
+concepts cstddef
+concepts version
+condition_variable cerrno
+condition_variable cstddef
+condition_variable ctime
+condition_variable iosfwd
+condition_variable limits
+condition_variable new
+condition_variable ratio
+condition_variable stdexcept
+condition_variable string
+condition_variable typeinfo
+condition_variable version
+coroutine compare
+coroutine cstddef
+coroutine cstdint
+coroutine cstring
+coroutine limits
+coroutine version
+cstddef version
+ctgmath ccomplex
+ctgmath cmath
+cwchar cwctype
+cwctype cctype
+deque compare
+deque cstddef
+deque cstdint
+deque cstring
+deque initializer_list
+deque limits
+deque new
+deque stdexcept
+deque tuple
+deque version
+exception cstddef
+exception cstdlib
+exception version
+execution cstddef
+execution version
+expected cstddef
+expected initializer_list
+expected new
+expected version
+experimental/deque deque
+experimental/deque experimental/memory_resource
+experimental/forward_list experimental/memory_resource
+experimental/forward_list forward_list
+experimental/iterator cstddef
+experimental/iterator iosfwd
+experimental/iterator iterator
+experimental/list experimental/memory_resource
+experimental/list list
+experimental/map experimental/memory_resource
+experimental/map map
+experimental/memory_resource cstddef
+experimental/memory_resource experimental/utility
+experimental/memory_resource limits
+experimental/memory_resource new
+experimental/memory_resource stdexcept
+experimental/memory_resource tuple
+experimental/propagate_const cstddef
+experimental/regex experimental/memory_resource
+experimental/regex experimental/string
+experimental/regex regex
+experimental/set experimental/memory_resource
+experimental/set set
+experimental/simd array
+experimental/simd cstddef
+experimental/simd tuple
+experimental/string experimental/memory_resource
+experimental/string string
+experimental/type_traits initializer_list
+experimental/type_traits type_traits
+experimental/unordered_map experimental/memory_resource
+experimental/unordered_map unordered_map
+experimental/unordered_set experimental/memory_resource
+experimental/unordered_set unordered_set
+experimental/utility utility
+experimental/vector experimental/memory_resource
+experimental/vector vector
+filesystem compare
+filesystem cstddef
+filesystem cstdint
+filesystem ctime
+filesystem iomanip
+filesystem iosfwd
+filesystem limits
+filesystem locale
+filesystem new
+filesystem ratio
+filesystem string
+filesystem string_view
+filesystem version
+format array
+format cmath
+format cstddef
+format cstdint
+format cstdlib
+format initializer_list
+format limits
+format locale
+format new
+format optional
+format queue
+format stack
+format stdexcept
+format string
+format string_view
+format tuple
+format version
+forward_list compare
+forward_list cstddef
+forward_list cstdint
+forward_list cstring
+forward_list initializer_list
+forward_list limits
+forward_list new
+forward_list stdexcept
+forward_list tuple
+forward_list version
+fstream cctype
+fstream clocale
+fstream cstddef
+fstream cstdint
+fstream cstdio
+fstream cstdlib
+fstream cstring
+fstream cwchar
+fstream filesystem
+fstream initializer_list
+fstream istream
+fstream mutex
+fstream ostream
+fstream string
+fstream typeinfo
+fstream version
+functional array
+functional cstddef
+functional cstdint
+functional cstring
+functional initializer_list
+functional iosfwd
+functional limits
+functional memory
+functional new
+functional stdexcept
+functional tuple
+functional typeinfo
+functional unordered_map
+functional vector
+functional version
+future cerrno
+future cstddef
+future cstdint
+future cstdlib
+future cstring
+future initializer_list
+future iosfwd
+future limits
+future mutex
+future new
+future ratio
+future stdexcept
+future string
+future thread
+future typeinfo
+future version
+initializer_list cstddef
+iomanip istream
+iomanip version
+ios cctype
+ios clocale
+ios cstddef
+ios cstdint
+ios cstdlib
+ios cstring
+ios cwchar
+ios iosfwd
+ios mutex
+ios string
+ios version
+iosfwd version
+iostream ios
+iostream istream
+iostream ostream
+iostream streambuf
+iostream version
+istream cstddef
+istream iosfwd
+istream ostream
+istream version
+iterator compare
+iterator concepts
+iterator cstddef
+iterator initializer_list
+iterator iosfwd
+iterator limits
+iterator variant
+iterator version
+latch cstddef
+latch cstdint
+latch cstring
+latch ctime
+latch iosfwd
+latch limits
+latch ratio
+latch version
+limits version
+list compare
+list cstddef
+list cstdint
+list cstring
+list initializer_list
+list limits
+list new
+list stdexcept
+list tuple
+list version
+locale cctype
+locale cerrno
+locale clocale
+locale cstddef
+locale cstdint
+locale cstdio
+locale cstdlib
+locale cstring
+locale ctime
+locale cwchar
+locale initializer_list
+locale ios
+locale iosfwd
+locale limits
+locale mutex
+locale new
+locale streambuf
+locale string
+locale version
+map compare
+map cstddef
+map initializer_list
+map limits
+map new
+map optional
+map stdexcept
+map tuple
+map version
+mdspan array
+mdspan cinttypes
+mdspan concepts
+mdspan cstddef
+mdspan limits
+mdspan span
+memory compare
+memory cstddef
+memory cstdint
+memory cstring
+memory initializer_list
+memory iosfwd
+memory limits
+memory new
+memory stdexcept
+memory tuple
+memory typeinfo
+memory version
+memory_resource cstddef
+memory_resource cstdint
+memory_resource limits
+memory_resource mutex
+memory_resource new
+memory_resource stdexcept
+memory_resource tuple
+memory_resource version
+mutex cerrno
+mutex cstddef
+mutex cstdint
+mutex ctime
+mutex iosfwd
+mutex limits
+mutex new
+mutex ratio
+mutex stdexcept
+mutex string
+mutex tuple
+mutex typeinfo
+mutex version
+new cstddef
+new cstdlib
+new version
+numbers version
+numeric cmath
+numeric cstddef
+numeric limits
+numeric version
+optional compare
+optional cstddef
+optional cstdint
+optional cstring
+optional initializer_list
+optional limits
+optional new
+optional stdexcept
+optional version
+ostream bitset
+ostream cerrno
+ostream cstddef
+ostream cstdint
+ostream cstring
+ostream initializer_list
+ostream ios
+ostream iosfwd
+ostream limits
+ostream locale
+ostream new
+ostream stdexcept
+ostream streambuf
+ostream string
+ostream typeinfo
+ostream version
+queue compare
+queue cstddef
+queue deque
+queue initializer_list
+queue limits
+queue vector
+queue version
+random cmath
+random cstddef
+random cstdint
+random initializer_list
+random iosfwd
+random limits
+random numeric
+random string
+random vector
+random version
+ranges compare
+ranges cstddef
+ranges initializer_list
+ranges iosfwd
+ranges iterator
+ranges limits
+ranges new
+ranges optional
+ranges span
+ranges tuple
+ranges variant
+ranges version
+ratio climits
+ratio cstdint
+ratio version
+regex cctype
+regex clocale
+regex compare
+regex cstddef
+regex cstdint
+regex cstdlib
+regex cstring
+regex cwchar
+regex deque
+regex initializer_list
+regex limits
+regex mutex
+regex stdexcept
+regex string
+regex vector
+regex version
+scoped_allocator cstddef
+scoped_allocator limits
+scoped_allocator new
+scoped_allocator tuple
+scoped_allocator version
+semaphore cstddef
+semaphore cstdint
+semaphore cstring
+semaphore ctime
+semaphore iosfwd
+semaphore limits
+semaphore ratio
+semaphore version
+set compare
+set cstddef
+set initializer_list
+set limits
+set new
+set optional
+set stdexcept
+set tuple
+set version
+shared_mutex cerrno
+shared_mutex cstddef
+shared_mutex ctime
+shared_mutex iosfwd
+shared_mutex limits
+shared_mutex ratio
+shared_mutex stdexcept
+shared_mutex string
+shared_mutex version
+source_location cstdint
+source_location version
+span array
+span cstddef
+span initializer_list
+span limits
+span version
+sstream cstddef
+sstream istream
+sstream ostream
+sstream string
+sstream version
+stack compare
+stack cstddef
+stack deque
+stack initializer_list
+stack version
+stdexcept iosfwd
+streambuf cstdint
+streambuf ios
+streambuf iosfwd
+streambuf version
+string climits
+string compare
+string cstddef
+string cstdint
+string cstdio
+string cstring
+string cwchar
+string initializer_list
+string iosfwd
+string limits
+string new
+string stdexcept
+string string_view
+string tuple
+string version
+string_view compare
+string_view cstddef
+string_view cstdint
+string_view cstdio
+string_view cstring
+string_view cwchar
+string_view initializer_list
+string_view iosfwd
+string_view limits
+string_view stdexcept
+string_view version
+strstream istream
+strstream ostream
+strstream version
+system_error cerrno
+system_error compare
+system_error cstddef
+system_error stdexcept
+system_error string
+system_error version
+thread array
+thread cerrno
+thread compare
+thread cstddef
+thread cstdint
+thread cstdlib
+thread ctime
+thread iosfwd
+thread limits
+thread locale
+thread new
+thread ratio
+thread stdexcept
+thread string
+thread string_view
+thread tuple
+thread version
+tuple compare
+tuple cstddef
+tuple version
+type_traits cstddef
+type_traits cstdint
+type_traits version
+typeindex compare
+typeindex typeinfo
+typeindex version
+typeinfo cstddef
+typeinfo cstdint
+unordered_map cmath
+unordered_map compare
+unordered_map cstddef
+unordered_map cstdint
+unordered_map cstring
+unordered_map initializer_list
+unordered_map limits
+unordered_map new
+unordered_map optional
+unordered_map stdexcept
+unordered_map tuple
+unordered_map version
+unordered_set cmath
+unordered_set compare
+unordered_set cstddef
+unordered_set cstdint
+unordered_set cstring
+unordered_set initializer_list
+unordered_set limits
+unordered_set new
+unordered_set optional
+unordered_set stdexcept
+unordered_set tuple
+unordered_set version
+utility compare
+utility cstddef
+utility initializer_list
+utility limits
+utility version
+valarray cmath
+valarray cstddef
+valarray cstdint
+valarray initializer_list
+valarray limits
+valarray new
+valarray version
+variant compare
+variant cstddef
+variant cstdint
+variant cstring
+variant initializer_list
+variant limits
+variant new
+variant tuple
+variant version
+vector array
+vector cerrno
+vector climits
+vector compare
+vector cstddef
+vector cstdint
+vector cstdlib
+vector cstring
+vector initializer_list
+vector iosfwd
+vector limits
+vector locale
+vector new
+vector stdexcept
+vector string
+vector string_view
+vector tuple
+vector version
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 68bc144980f1a..d93c636150ad9 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
@@ -213,7 +213,7 @@
# error "__cpp_lib_shift should have the value 201806L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_clamp
# error "__cpp_lib_clamp should be defined in c++23"
@@ -283,5 +283,75 @@
# error "__cpp_lib_shift should have the value 201806L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_clamp
+# error "__cpp_lib_clamp should be defined in c++26"
+# endif
+# if __cpp_lib_clamp != 201603L
+# error "__cpp_lib_clamp should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_algorithms != 201806L
+# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should be defined in c++26"
+# endif
+# if __cpp_lib_parallel_algorithm != 201603L
+# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202106L
+# error "__cpp_lib_ranges should have the value 202106L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_starts_ends_with != 202106L
+# error "__cpp_lib_ranges_starts_ends_with should have the value 202106L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_robust_nonmodifying_seq_ops
+# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++26"
+# endif
+# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
+# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_sample
+# error "__cpp_lib_sample should be defined in c++26"
+# endif
+# if __cpp_lib_sample != 201603L
+# error "__cpp_lib_sample should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_shift
+# error "__cpp_lib_shift should be defined in c++26"
+# endif
+# if __cpp_lib_shift != 201806L
+# error "__cpp_lib_shift should have the value 201806L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/any.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/any.version.compile.pass.cpp
index bc3392f99ce5c..937d581c75cc5 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/any.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/any.version.compile.pass.cpp
@@ -52,7 +52,7 @@
# error "__cpp_lib_any should have the value 201606L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_any
# error "__cpp_lib_any should be defined in c++23"
@@ -61,5 +61,14 @@
# error "__cpp_lib_any should have the value 201606L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_any
+# error "__cpp_lib_any should be defined in c++26"
+# endif
+# if __cpp_lib_any != 201606L
+# error "__cpp_lib_any should have the value 201606L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
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 e7da783e394c8..1a8f78ed73cf2 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
@@ -96,7 +96,7 @@
# error "__cpp_lib_to_array should have the value 201907L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_array_constexpr
# error "__cpp_lib_array_constexpr should be defined in c++23"
@@ -119,5 +119,28 @@
# error "__cpp_lib_to_array should have the value 201907L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_array_constexpr
+# error "__cpp_lib_array_constexpr should be defined in c++26"
+# endif
+# if __cpp_lib_array_constexpr != 201811L
+# error "__cpp_lib_array_constexpr should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_to_array
+# error "__cpp_lib_to_array should be defined in c++26"
+# endif
+# if __cpp_lib_to_array != 201907L
+# error "__cpp_lib_to_array should have the value 201907L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
index d27f8c4b0bfd3..ebb7efb5eb593 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
@@ -242,7 +242,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_atomic_flag_test
# error "__cpp_lib_atomic_flag_test should be defined in c++23"
@@ -337,5 +337,100 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_atomic_flag_test
+# error "__cpp_lib_atomic_flag_test should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_flag_test != 201907L
+# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_atomic_is_always_lock_free
+# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_is_always_lock_free != 201603L
+# error "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_atomic_lock_free_type_aliases
+# error "__cpp_lib_atomic_lock_free_type_aliases should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_lock_free_type_aliases != 201907L
+# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_ref != 201806L
+# error "__cpp_lib_atomic_ref should have the value 201806L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_shared_ptr != 201711L
+# error "__cpp_lib_atomic_shared_ptr should have the value 201711L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_atomic_value_initialization
+# error "__cpp_lib_atomic_value_initialization should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_value_initialization != 201911L
+# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++26"
+# endif
+
+# if !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_wait != 201907L
+# error "__cpp_lib_atomic_wait should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should not be defined when the requirement '!defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.compile.pass.cpp
index 79d317550d0e4..33e8a3c23a9e5 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
# ifndef __cpp_lib_barrier
@@ -72,5 +72,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_barrier
+# error "__cpp_lib_barrier should be defined in c++26"
+# endif
+# if __cpp_lib_barrier != 201907L
+# error "__cpp_lib_barrier should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_barrier
+# error "__cpp_lib_barrier should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.compile.pass.cpp
index 5e7080be7ed04..b858ff65545d5 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.compile.pass.cpp
@@ -132,7 +132,7 @@
# error "__cpp_lib_int_pow2 should have the value 202002L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_bit_cast
# error "__cpp_lib_bit_cast should be defined in c++23"
@@ -175,5 +175,48 @@
# error "__cpp_lib_int_pow2 should have the value 202002L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_bit_cast
+# error "__cpp_lib_bit_cast should be defined in c++26"
+# endif
+# if __cpp_lib_bit_cast != 201806L
+# error "__cpp_lib_bit_cast should have the value 201806L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_bitops
+# error "__cpp_lib_bitops should be defined in c++26"
+# endif
+# if __cpp_lib_bitops != 201907L
+# error "__cpp_lib_bitops should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_bitops
+# error "__cpp_lib_bitops should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_byteswap
+# error "__cpp_lib_byteswap should be defined in c++26"
+# endif
+# if __cpp_lib_byteswap != 202110L
+# error "__cpp_lib_byteswap should have the value 202110L in c++26"
+# endif
+
+# ifndef __cpp_lib_endian
+# error "__cpp_lib_endian should be defined in c++26"
+# endif
+# if __cpp_lib_endian != 201907L
+# error "__cpp_lib_endian should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_int_pow2
+# error "__cpp_lib_int_pow2 should be defined in c++26"
+# endif
+# if __cpp_lib_int_pow2 != 202002L
+# error "__cpp_lib_int_pow2 should have the value 202002L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
index f1bf15a09489a..bd1f5feddac0d 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
@@ -46,7 +46,7 @@
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should be defined in c++23"
@@ -55,5 +55,14 @@
# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_constexpr_bitset
+# error "__cpp_lib_constexpr_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_bitset != 202207L
+# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/charconv.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/charconv.version.compile.pass.cpp
index b81b6fbccb279..8263ae8f819bb 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/charconv.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/charconv.version.compile.pass.cpp
@@ -81,7 +81,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_constexpr_charconv
# error "__cpp_lib_constexpr_charconv should be defined in c++23"
@@ -103,5 +103,27 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_constexpr_charconv
+# error "__cpp_lib_constexpr_charconv should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_charconv != 202207L
+# error "__cpp_lib_constexpr_charconv should have the value 202207L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars should be defined in c++26"
+# endif
+# if __cpp_lib_to_chars != 201611L
+# error "__cpp_lib_to_chars should have the value 201611L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars 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/chrono.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/chrono.version.compile.pass.cpp
index e960c6d6fd450..0aaec6d1910aa 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/chrono.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/chrono.version.compile.pass.cpp
@@ -78,7 +78,7 @@
# error "__cpp_lib_chrono_udls should have the value 201304L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_chrono
# error "__cpp_lib_chrono should be defined in c++23"
@@ -94,5 +94,21 @@
# error "__cpp_lib_chrono_udls should have the value 201304L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_chrono
+# error "__cpp_lib_chrono should be defined in c++26"
+# endif
+# if __cpp_lib_chrono != 201611L
+# error "__cpp_lib_chrono should have the value 201611L in c++26"
+# endif
+
+# ifndef __cpp_lib_chrono_udls
+# error "__cpp_lib_chrono_udls should be defined in c++26"
+# endif
+# if __cpp_lib_chrono_udls != 201304L
+# error "__cpp_lib_chrono_udls should have the value 201304L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp
index 5ba7cbb2e417d..898a73c985917 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp
@@ -124,7 +124,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_constexpr_cmath
@@ -166,5 +166,47 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_cmath != 202202L
+# error "__cpp_lib_constexpr_cmath should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_hypot
+# error "__cpp_lib_hypot should be defined in c++26"
+# endif
+# if __cpp_lib_hypot != 201603L
+# error "__cpp_lib_hypot should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_interpolate
+# error "__cpp_lib_interpolate should be defined in c++26"
+# endif
+# if __cpp_lib_interpolate != 201902L
+# error "__cpp_lib_interpolate should have the value 201902L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions should be defined in c++26"
+# endif
+# if __cpp_lib_math_special_functions != 201603L
+# error "__cpp_lib_math_special_functions should have the value 201603L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions 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/compare.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp
index b2b36226448a2..f521c53250b63 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp
@@ -55,7 +55,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
@@ -70,5 +70,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison should be defined in c++26"
+# endif
+# if __cpp_lib_three_way_comparison != 201907L
+# error "__cpp_lib_three_way_comparison should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison 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/complex.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.compile.pass.cpp
index 2c2ce830f7b68..3718a9e222f98 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.compile.pass.cpp
@@ -75,7 +75,7 @@
# error "__cpp_lib_constexpr_complex should have the value 201711L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_complex_udls
# error "__cpp_lib_complex_udls should be defined in c++23"
@@ -91,5 +91,21 @@
# error "__cpp_lib_constexpr_complex should have the value 201711L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_complex_udls
+# error "__cpp_lib_complex_udls should be defined in c++26"
+# endif
+# if __cpp_lib_complex_udls != 201309L
+# error "__cpp_lib_complex_udls should have the value 201309L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_complex
+# error "__cpp_lib_constexpr_complex should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_complex != 201711L
+# error "__cpp_lib_constexpr_complex should have the value 201711L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.compile.pass.cpp
index f4e18cd31525d..aa82b9ef87b87 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.compile.pass.cpp
@@ -49,7 +49,7 @@
# error "__cpp_lib_concepts should have the value 202002L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_concepts
# error "__cpp_lib_concepts should be defined in c++23"
@@ -58,5 +58,14 @@
# error "__cpp_lib_concepts should have the value 202002L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_concepts
+# error "__cpp_lib_concepts should be defined in c++26"
+# endif
+# if __cpp_lib_concepts != 202002L
+# error "__cpp_lib_concepts should have the value 202002L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/coroutine.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/coroutine.version.compile.pass.cpp
index 3c3be2c07b9d1..eedc05f1a6c6b 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/coroutine.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/coroutine.version.compile.pass.cpp
@@ -49,7 +49,7 @@
# error "__cpp_lib_coroutine should have the value 201902L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should be defined in c++23"
@@ -58,5 +58,14 @@
# error "__cpp_lib_coroutine should have the value 201902L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_coroutine
+# error "__cpp_lib_coroutine should be defined in c++26"
+# endif
+# if __cpp_lib_coroutine != 201902L
+# error "__cpp_lib_coroutine should have the value 201902L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cstddef.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cstddef.version.compile.pass.cpp
index 89cf6cad3e550..8365f4e5efd70 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/cstddef.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cstddef.version.compile.pass.cpp
@@ -52,7 +52,7 @@
# error "__cpp_lib_byte should have the value 201603L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_byte
# error "__cpp_lib_byte should be defined in c++23"
@@ -61,5 +61,14 @@
# error "__cpp_lib_byte should have the value 201603L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_byte
+# error "__cpp_lib_byte should be defined in c++26"
+# endif
+# if __cpp_lib_byte != 201603L
+# error "__cpp_lib_byte should have the value 201603L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp
index b310054d5190e..610c8c0265216 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp
@@ -46,7 +46,7 @@
# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_constexpr_cmath
@@ -61,5 +61,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_cmath != 202202L
+# error "__cpp_lib_constexpr_cmath should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath 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/deque.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
index 6bd37b5b528ef..4a70a98b4f4c0 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
@@ -112,7 +112,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -148,5 +148,41 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/exception.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
index 91fc9ae77cc30..f8a4da7fd1bd5 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/exception.version.compile.pass.cpp
@@ -52,7 +52,7 @@
# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_uncaught_exceptions
# error "__cpp_lib_uncaught_exceptions should be defined in c++23"
@@ -61,5 +61,14 @@
# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_uncaught_exceptions
+# error "__cpp_lib_uncaught_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_uncaught_exceptions != 201411L
+# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.compile.pass.cpp
index 20337cb6c3545..047248573de40 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.compile.pass.cpp
@@ -65,7 +65,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_execution
@@ -80,5 +80,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_execution
+# error "__cpp_lib_execution should be defined in c++26"
+# endif
+# if __cpp_lib_execution != 201902L
+# error "__cpp_lib_execution should have the value 201902L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_execution
+# error "__cpp_lib_execution 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 9b5564b9e75db..771b144a3ed8b 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
@@ -46,7 +46,7 @@
# error "__cpp_lib_expected should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_expected
# error "__cpp_lib_expected should be defined in c++23"
@@ -55,5 +55,14 @@
# error "__cpp_lib_expected should have the value 202211L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_expected
+# error "__cpp_lib_expected should be defined in c++26"
+# endif
+# if __cpp_lib_expected != 202211L
+# error "__cpp_lib_expected should have the value 202211L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
index d7faa807d9253..010986a0a1b30 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
@@ -92,7 +92,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
@@ -120,5 +120,33 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM)
+# ifndef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should be defined in c++26"
+# endif
+# if __cpp_lib_filesystem != 201703L
+# error "__cpp_lib_filesystem should have the value 201703L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
index dd6a2f8664d1e..59450b843ceb1 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
@@ -74,7 +74,7 @@
# error "__cpp_lib_format_ranges should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_format
@@ -102,5 +102,33 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format
+# error "__cpp_lib_format should be defined in c++26"
+# endif
+# if __cpp_lib_format != 202106L
+# error "__cpp_lib_format should have the value 202106L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format
+# error "__cpp_lib_format should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
+# ifndef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_format_ranges != 202207L
+# error "__cpp_lib_format_ranges should have the value 202207L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
index eb883ba429ab6..f21cbbf6e9131 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
@@ -155,7 +155,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -205,5 +205,55 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++26"
+# endif
+
+# ifndef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should be defined in c++26"
+# endif
+# if __cpp_lib_list_remove_return_type != 201806L
+# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/functional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
index 0d47275e9edc8..79cb615c518f3 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
@@ -282,7 +282,7 @@
# error "__cpp_lib_unwrap_ref should have the value 201811L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_bind_back
@@ -380,5 +380,103 @@
# error "__cpp_lib_unwrap_ref should have the value 201811L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_bind_back
+# error "__cpp_lib_bind_back should be defined in c++26"
+# endif
+# if __cpp_lib_bind_back != 202202L
+# error "__cpp_lib_bind_back should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_bind_back
+# error "__cpp_lib_bind_back should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should be defined in c++26"
+# endif
+# if __cpp_lib_bind_front != 201907L
+# error "__cpp_lib_bind_front should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_boyer_moore_searcher
+# error "__cpp_lib_boyer_moore_searcher should be defined in c++26"
+# endif
+# if __cpp_lib_boyer_moore_searcher != 201603L
+# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_functional != 201907L
+# error "__cpp_lib_constexpr_functional should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_invoke
+# error "__cpp_lib_invoke should be defined in c++26"
+# endif
+# if __cpp_lib_invoke != 201411L
+# error "__cpp_lib_invoke should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_invoke_r
+# error "__cpp_lib_invoke_r should be defined in c++26"
+# endif
+# if __cpp_lib_invoke_r != 202106L
+# error "__cpp_lib_invoke_r should have the value 202106L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should be defined in c++26"
+# endif
+# if __cpp_lib_move_only_function != 202110L
+# error "__cpp_lib_move_only_function should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_not_fn
+# error "__cpp_lib_not_fn should be defined in c++26"
+# endif
+# if __cpp_lib_not_fn != 201603L
+# error "__cpp_lib_not_fn should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202106L
+# error "__cpp_lib_ranges should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_result_of_sfinae
+# error "__cpp_lib_result_of_sfinae should be defined in c++26"
+# endif
+# if __cpp_lib_result_of_sfinae != 201210L
+# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++26"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+# error "__cpp_lib_transparent_operators should be defined in c++26"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+# error "__cpp_lib_transparent_operators should have the value 201510L in c++26"
+# endif
+
+# ifndef __cpp_lib_unwrap_ref
+# error "__cpp_lib_unwrap_ref should be defined in c++26"
+# endif
+# if __cpp_lib_unwrap_ref != 201811L
+# error "__cpp_lib_unwrap_ref should have the value 201811L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.compile.pass.cpp
index 99bff07360b4d..b678e6804e959 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/iomanip.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# error "__cpp_lib_quoted_string_io should have the value 201304L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_quoted_string_io
# error "__cpp_lib_quoted_string_io should be defined in c++23"
@@ -66,5 +66,14 @@
# error "__cpp_lib_quoted_string_io should have the value 201304L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should be defined in c++26"
+# endif
+# if __cpp_lib_quoted_string_io != 201304L
+# error "__cpp_lib_quoted_string_io should have the value 201304L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.compile.pass.cpp
index 5e8ae2f279097..fe3e6490386de 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/istream.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
@@ -72,5 +72,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
index 8170376a203bc..2a292dc8d7d79 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp
@@ -208,7 +208,7 @@
# error "__cpp_lib_ssize should have the value 201902L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_array_constexpr
# error "__cpp_lib_array_constexpr should be defined in c++23"
@@ -266,5 +266,63 @@
# error "__cpp_lib_ssize should have the value 201902L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_array_constexpr
+# error "__cpp_lib_array_constexpr should be defined in c++26"
+# endif
+# if __cpp_lib_array_constexpr != 201811L
+# error "__cpp_lib_array_constexpr should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_iterator
+# error "__cpp_lib_constexpr_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_iterator != 201811L
+# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_make_reverse_iterator
+# error "__cpp_lib_make_reverse_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_make_reverse_iterator != 201402L
+# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++26"
+# endif
+
+# ifndef __cpp_lib_move_iterator_concept
+# error "__cpp_lib_move_iterator_concept should be defined in c++26"
+# endif
+# if __cpp_lib_move_iterator_concept != 202207L
+# error "__cpp_lib_move_iterator_concept should have the value 202207L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_null_iterators
+# error "__cpp_lib_null_iterators should be defined in c++26"
+# endif
+# if __cpp_lib_null_iterators != 201304L
+# error "__cpp_lib_null_iterators should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202106L
+# error "__cpp_lib_ranges should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_ssize
+# error "__cpp_lib_ssize should be defined in c++26"
+# endif
+# if __cpp_lib_ssize != 201902L
+# error "__cpp_lib_ssize should have the value 201902L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.compile.pass.cpp
index e470ac1de8a93..47633f8c1b2e4 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
# ifndef __cpp_lib_latch
@@ -72,5 +72,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_latch
+# error "__cpp_lib_latch should be defined in c++26"
+# endif
+# if __cpp_lib_latch != 201907L
+# error "__cpp_lib_latch should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_latch
+# error "__cpp_lib_latch should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/limits.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/limits.version.compile.pass.cpp
index c460216f6fb48..70baec07a3972 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/limits.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/limits.version.compile.pass.cpp
@@ -55,7 +55,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
@@ -70,5 +70,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
index 8dd05cd5fc79a..df136743fc6ed 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
@@ -155,7 +155,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -205,5 +205,55 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++26"
+# endif
+
+# ifndef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should be defined in c++26"
+# endif
+# if __cpp_lib_list_remove_return_type != 201806L
+# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/locale.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.compile.pass.cpp
index 8756760fe186f..2674123a2c38a 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/locale.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
@@ -72,5 +72,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# 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 4179d5c7624b8..28d10cd3e7f1f 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
@@ -201,7 +201,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -271,5 +271,75 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_erasure != 202110L
+# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup should be defined in c++26"
+# endif
+# if __cpp_lib_generic_associative_lookup != 201304L
+# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_map_try_emplace
+# error "__cpp_lib_map_try_emplace should be defined in c++26"
+# endif
+# if __cpp_lib_map_try_emplace != 201411L
+# error "__cpp_lib_map_try_emplace should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++26"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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 91924fdb834d0..c2da617f42cc1 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
@@ -46,7 +46,7 @@
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_mdspan
@@ -61,5 +61,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should be defined in c++26"
+# endif
+# if __cpp_lib_mdspan != 202207L
+# error "__cpp_lib_mdspan should have the value 202207L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan 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/memory.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
index 8bbc2cea99244..7db7c956d3751 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
@@ -402,7 +402,7 @@
# error "__cpp_lib_transparent_operators should have the value 201510L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_addressof_constexpr
# error "__cpp_lib_addressof_constexpr should be defined in c++23"
@@ -535,5 +535,138 @@
# error "__cpp_lib_transparent_operators should have the value 201510L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_addressof_constexpr
+# error "__cpp_lib_addressof_constexpr should be defined in c++26"
+# endif
+# if __cpp_lib_addressof_constexpr != 201603L
+# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_allocate_at_least
+# error "__cpp_lib_allocate_at_least should be defined in c++26"
+# endif
+# if __cpp_lib_allocate_at_least != 202106L
+# error "__cpp_lib_allocate_at_least should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_assume_aligned
+# error "__cpp_lib_assume_aligned should be defined in c++26"
+# endif
+# if __cpp_lib_assume_aligned != 201811L
+# error "__cpp_lib_assume_aligned should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_atomic_value_initialization
+# error "__cpp_lib_atomic_value_initialization should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_value_initialization != 201911L
+# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_dynamic_alloc
+# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_dynamic_alloc != 201907L
+# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_memory
+# error "__cpp_lib_constexpr_memory should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_memory != 202202L
+# error "__cpp_lib_constexpr_memory should have the value 202202L in c++26"
+# endif
+
+# ifndef __cpp_lib_enable_shared_from_this
+# error "__cpp_lib_enable_shared_from_this should be defined in c++26"
+# endif
+# if __cpp_lib_enable_shared_from_this != 201603L
+# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_make_unique
+# error "__cpp_lib_make_unique should be defined in c++26"
+# endif
+# if __cpp_lib_make_unique != 201304L
+# error "__cpp_lib_make_unique should have the value 201304L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# 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"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_out_ptr
+# error "__cpp_lib_out_ptr should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202106L
+# error "__cpp_lib_ranges should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_raw_memory_algorithms
+# error "__cpp_lib_raw_memory_algorithms should be defined in c++26"
+# endif
+# if __cpp_lib_raw_memory_algorithms != 201606L
+# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_shared_ptr_arrays
+# error "__cpp_lib_shared_ptr_arrays should be defined in c++26"
+# endif
+# if __cpp_lib_shared_ptr_arrays != 201707L
+# error "__cpp_lib_shared_ptr_arrays should have the value 201707L in c++26"
+# endif
+
+# ifndef __cpp_lib_shared_ptr_weak_type
+# error "__cpp_lib_shared_ptr_weak_type should be defined in c++26"
+# endif
+# if __cpp_lib_shared_ptr_weak_type != 201606L
+# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++26"
+# endif
+# if __cpp_lib_smart_ptr_for_overwrite != 202002L
+# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_to_address
+# error "__cpp_lib_to_address should be defined in c++26"
+# endif
+# if __cpp_lib_to_address != 201711L
+# error "__cpp_lib_to_address should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+# error "__cpp_lib_transparent_operators should be defined in c++26"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+# error "__cpp_lib_transparent_operators should have the value 201510L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/memory_resource.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory_resource.version.compile.pass.cpp
index 4fad499c3f101..f4c9b3d257958 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/memory_resource.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/memory_resource.version.compile.pass.cpp
@@ -72,7 +72,7 @@
# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_memory_resource
# error "__cpp_lib_memory_resource should be defined in c++23"
@@ -88,5 +88,21 @@
# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should be defined in c++26"
+# endif
+# if __cpp_lib_memory_resource != 201603L
+# error "__cpp_lib_memory_resource should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should be defined in c++26"
+# endif
+# if __cpp_lib_polymorphic_allocator != 201902L
+# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/mutex.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/mutex.version.compile.pass.cpp
index bb129fb8cc4c1..e86239f534790 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/mutex.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/mutex.version.compile.pass.cpp
@@ -54,7 +54,7 @@
# error "__cpp_lib_scoped_lock should have the value 201703L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_scoped_lock
# error "__cpp_lib_scoped_lock should be defined in c++23"
@@ -63,5 +63,14 @@
# error "__cpp_lib_scoped_lock should have the value 201703L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should be defined in c++26"
+# endif
+# if __cpp_lib_scoped_lock != 201703L
+# error "__cpp_lib_scoped_lock should have the value 201703L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/new.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/new.version.compile.pass.cpp
index db6d195394951..a4392c4f277b2 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/new.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/new.version.compile.pass.cpp
@@ -113,7 +113,7 @@
# error "__cpp_lib_launder should have the value 201606L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
# ifndef __cpp_lib_destroying_delete
@@ -148,5 +148,40 @@
# error "__cpp_lib_launder should have the value 201606L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# 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"
+# endif
+# if __cpp_lib_destroying_delete != 201806L
+# error "__cpp_lib_destroying_delete should have the value 201806L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should not be defined when the requirement 'TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L' is not met!"
+# endif
+# endif
+
+# if defined(__GCC_DESTRUCTIVE_SIZE) && defined(__GCC_CONSTRUCTIVE_SIZE)
+# ifndef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should be defined in c++26"
+# endif
+# if __cpp_lib_hardware_interference_size != 201703L
+# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should not be defined when the requirement 'defined(__GCC_DESTRUCTIVE_SIZE) && defined(__GCC_CONSTRUCTIVE_SIZE)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_launder
+# error "__cpp_lib_launder should be defined in c++26"
+# endif
+# if __cpp_lib_launder != 201606L
+# error "__cpp_lib_launder should have the value 201606L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.compile.pass.cpp
index f2fde2020c930..2e80a8eac103f 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.compile.pass.cpp
@@ -49,7 +49,7 @@
# error "__cpp_lib_math_constants should have the value 201907L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_math_constants
# error "__cpp_lib_math_constants should be defined in c++23"
@@ -58,5 +58,14 @@
# error "__cpp_lib_math_constants should have the value 201907L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_math_constants
+# error "__cpp_lib_math_constants should be defined in c++26"
+# endif
+# if __cpp_lib_math_constants != 201907L
+# error "__cpp_lib_math_constants should have the value 201907L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.compile.pass.cpp
index 1494c5e21ef06..60004b06c5ff5 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.compile.pass.cpp
@@ -144,7 +144,7 @@
# error "__cpp_lib_ranges_iota should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_constexpr_numeric
# error "__cpp_lib_constexpr_numeric should be defined in c++23"
@@ -193,5 +193,54 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_constexpr_numeric
+# error "__cpp_lib_constexpr_numeric should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_numeric != 201911L
+# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++26"
+# endif
+
+# ifndef __cpp_lib_gcd_lcm
+# error "__cpp_lib_gcd_lcm should be defined in c++26"
+# endif
+# if __cpp_lib_gcd_lcm != 201606L
+# error "__cpp_lib_gcd_lcm should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_interpolate
+# error "__cpp_lib_interpolate should be defined in c++26"
+# endif
+# if __cpp_lib_interpolate != 201902L
+# error "__cpp_lib_interpolate should have the value 201902L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should be defined in c++26"
+# endif
+# if __cpp_lib_parallel_algorithm != 201603L
+# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_iota != 202202L
+# error "__cpp_lib_ranges_iota should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota 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/optional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
index ace7cae571706..9e1fce0de2ab5 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
@@ -53,7 +53,7 @@
# error "__cpp_lib_optional should have the value 201606L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_optional
# error "__cpp_lib_optional should be defined in c++23"
@@ -62,5 +62,14 @@
# error "__cpp_lib_optional should have the value 202110L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_optional
+# error "__cpp_lib_optional should be defined in c++26"
+# endif
+# if __cpp_lib_optional != 202110L
+# error "__cpp_lib_optional should have the value 202110L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp
index 43711e1feeb03..234653cb774cb 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
@@ -72,5 +72,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
index 07644467f07bc..78801b8cc275f 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.compile.pass.cpp
@@ -63,7 +63,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++23"
@@ -85,5 +85,27 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_adaptor_iterator_pair_constructor
+# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++26"
+# endif
+# if __cpp_lib_adaptor_iterator_pair_constructor != 202106L
+# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/ranges.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
index ab5cdb1505dab..88e059dcacff9 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
@@ -151,7 +151,7 @@
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
@@ -232,5 +232,86 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202106L
+# error "__cpp_lib_ranges should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_ranges_as_rvalue
+# error "__cpp_lib_ranges_as_rvalue should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_as_rvalue != 202207L
+# error "__cpp_lib_ranges_as_rvalue should have the value 202207L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_chunk != 202202L
+# error "__cpp_lib_ranges_chunk should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_chunk_by != 202202L
+# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_join_with
+# error "__cpp_lib_ranges_join_with should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_join_with != 202202L
+# error "__cpp_lib_ranges_join_with should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_join_with
+# error "__cpp_lib_ranges_join_with should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_slide != 202202L
+# error "__cpp_lib_ranges_slide should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_zip != 202110L
+# error "__cpp_lib_ranges_zip should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip 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/regex.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.compile.pass.cpp
index f392165dcd421..5aa8ae0eba72c 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/regex.version.compile.pass.cpp
@@ -54,7 +54,7 @@
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
@@ -63,5 +63,14 @@
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/scoped_allocator.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/scoped_allocator.version.compile.pass.cpp
index 8e84a2ab394a6..7e254ccb1ff4f 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/scoped_allocator.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/scoped_allocator.version.compile.pass.cpp
@@ -52,7 +52,7 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -61,5 +61,14 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.compile.pass.cpp
index 4ebfbf068a6b8..f7d0ab2263d59 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.compile.pass.cpp
@@ -57,7 +57,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
# ifndef __cpp_lib_semaphore
@@ -72,5 +72,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should be defined in c++26"
+# endif
+# if __cpp_lib_semaphore != 201907L
+# error "__cpp_lib_semaphore should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
index 43e43a039dc0c..23f93805cc169 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
@@ -178,7 +178,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -241,5 +241,68 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_erasure != 202110L
+# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup should be defined in c++26"
+# endif
+# if __cpp_lib_generic_associative_lookup != 201304L
+# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++26"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/shared_mutex.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/shared_mutex.version.compile.pass.cpp
index 73abfa137d440..be00ed79d0c49 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/shared_mutex.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/shared_mutex.version.compile.pass.cpp
@@ -110,7 +110,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)
# ifndef __cpp_lib_shared_mutex
@@ -138,5 +138,33 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)
+# ifndef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should be defined in c++26"
+# endif
+# if __cpp_lib_shared_mutex != 201505L
+# error "__cpp_lib_shared_mutex should have the value 201505L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)
+# ifndef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should be defined in c++26"
+# endif
+# if __cpp_lib_shared_timed_mutex != 201402L
+# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/source_location.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/source_location.version.compile.pass.cpp
index 1b8a875ec38ab..b0ccf795bb724 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/source_location.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/source_location.version.compile.pass.cpp
@@ -55,7 +55,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
@@ -70,5 +70,20 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
+# ifndef __cpp_lib_source_location
+# error "__cpp_lib_source_location should be defined in c++26"
+# endif
+# if __cpp_lib_source_location != 201907L
+# error "__cpp_lib_source_location should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_source_location
+# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
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 7d8cd87da0f0f..4ede525c496ac 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
@@ -49,7 +49,7 @@
# error "__cpp_lib_span should have the value 202002L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_span
# error "__cpp_lib_span should be defined in c++23"
@@ -58,5 +58,14 @@
# error "__cpp_lib_span should have the value 202002L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_span
+# error "__cpp_lib_span should be defined in c++26"
+# endif
+# if __cpp_lib_span != 202002L
+# error "__cpp_lib_span should have the value 202002L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
index 4a3d76ba0c256..373fcb432961d 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.compile.pass.cpp
@@ -63,7 +63,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++23"
@@ -85,5 +85,27 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_adaptor_iterator_pair_constructor
+# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++26"
+# endif
+# if __cpp_lib_adaptor_iterator_pair_constructor != 202106L
+# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/stdatomic.h.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/stdatomic.h.version.compile.pass.cpp
index bd9a1f7d45472..c25137adbc156 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/stdatomic.h.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/stdatomic.h.version.compile.pass.cpp
@@ -48,7 +48,7 @@
# error "__cpp_lib_stdatomic_h should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_stdatomic_h
# error "__cpp_lib_stdatomic_h should be defined in c++23"
@@ -57,5 +57,14 @@
# error "__cpp_lib_stdatomic_h should have the value 202011L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_stdatomic_h
+# error "__cpp_lib_stdatomic_h should be defined in c++26"
+# endif
+# if __cpp_lib_stdatomic_h != 202011L
+# error "__cpp_lib_stdatomic_h should have the value 202011L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
index 9dc03f923936a..e869fedbdaaf2 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
@@ -262,7 +262,7 @@
# error "__cpp_lib_string_view should have the value 201803L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -353,5 +353,96 @@
# error "__cpp_lib_string_view should have the value 201803L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_constexpr_string
+# error "__cpp_lib_constexpr_string should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_string != 201907L
+# error "__cpp_lib_constexpr_string should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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
+# if __cpp_lib_starts_ends_with != 201711L
+# error "__cpp_lib_starts_ends_with should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_contains
+# error "__cpp_lib_string_contains should be defined in c++26"
+# endif
+# if __cpp_lib_string_contains != 202011L
+# error "__cpp_lib_string_contains should have the value 202011L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_resize_and_overwrite
+# error "__cpp_lib_string_resize_and_overwrite should be defined in c++26"
+# endif
+# if __cpp_lib_string_resize_and_overwrite != 202110L
+# error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_udls
+# error "__cpp_lib_string_udls should be defined in c++26"
+# endif
+# if __cpp_lib_string_udls != 201304L
+# error "__cpp_lib_string_udls should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_view
+# error "__cpp_lib_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_string_view != 201803L
+# error "__cpp_lib_string_view should have the value 201803L in c++26"
+# 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 08fe83d9b2c97..4bb5d93df5f33 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
@@ -136,7 +136,7 @@
# error "__cpp_lib_string_view should have the value 201803L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
@@ -179,5 +179,48 @@
# error "__cpp_lib_string_view should have the value 201803L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_constexpr_string_view
+# error "__cpp_lib_constexpr_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_string_view != 201811L
+# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_starts_ends_with
+# error "__cpp_lib_starts_ends_with should be defined in c++26"
+# endif
+# if __cpp_lib_starts_ends_with != 201711L
+# error "__cpp_lib_starts_ends_with should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_contains
+# error "__cpp_lib_string_contains should be defined in c++26"
+# endif
+# if __cpp_lib_string_contains != 202011L
+# error "__cpp_lib_string_contains should have the value 202011L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_view
+# error "__cpp_lib_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_string_view != 201803L
+# error "__cpp_lib_string_view should have the value 201803L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.compile.pass.cpp
index bfa5de2e9b1d7..c8fa0daf142d4 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.compile.pass.cpp
@@ -74,7 +74,7 @@
# endif
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_formatters
@@ -102,5 +102,33 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_formatters
+# error "__cpp_lib_formatters should be defined in c++26"
+# endif
+# if __cpp_lib_formatters != 202302L
+# error "__cpp_lib_formatters should have the value 202302L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_formatters
+# error "__cpp_lib_formatters should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_jthread
+# error "__cpp_lib_jthread should be defined in c++26"
+# endif
+# if __cpp_lib_jthread != 201911L
+# error "__cpp_lib_jthread should have the value 201911L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_jthread
+# error "__cpp_lib_jthread 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/tuple.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
index 0beb09db8d591..86aafdf60230a 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
@@ -164,7 +164,7 @@
# error "__cpp_lib_tuples_by_type should have the value 201304L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_apply
# error "__cpp_lib_apply should be defined in c++23"
@@ -214,5 +214,55 @@
# error "__cpp_lib_tuples_by_type should have the value 201304L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_apply
+# error "__cpp_lib_apply should be defined in c++26"
+# endif
+# if __cpp_lib_apply != 201603L
+# error "__cpp_lib_apply should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_tuple
+# error "__cpp_lib_constexpr_tuple should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_tuple != 201811L
+# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_make_from_tuple
+# error "__cpp_lib_make_from_tuple should be defined in c++26"
+# endif
+# if __cpp_lib_make_from_tuple != 201606L
+# error "__cpp_lib_make_from_tuple should have the value 201606L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_zip != 202110L
+# error "__cpp_lib_ranges_zip should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_tuple_element_t
+# error "__cpp_lib_tuple_element_t should be defined in c++26"
+# endif
+# if __cpp_lib_tuple_element_t != 201402L
+# error "__cpp_lib_tuple_element_t should have the value 201402L in c++26"
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++26"
+# endif
+# if __cpp_lib_tuples_by_type != 201304L
+# error "__cpp_lib_tuples_by_type should have the value 201304L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
index 67b02a5db15f7..a851b1bbb19d4 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
@@ -529,7 +529,7 @@
# error "__cpp_lib_void_t should have the value 201411L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should be defined in c++23"
@@ -703,5 +703,179 @@
# error "__cpp_lib_void_t should have the value 201411L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_bool_constant
+# error "__cpp_lib_bool_constant should be defined in c++26"
+# endif
+# if __cpp_lib_bool_constant != 201505L
+# error "__cpp_lib_bool_constant should have the value 201505L in c++26"
+# endif
+
+# ifndef __cpp_lib_bounded_array_traits
+# error "__cpp_lib_bounded_array_traits should be defined in c++26"
+# endif
+# if __cpp_lib_bounded_array_traits != 201902L
+# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++26"
+# endif
+
+# ifndef __cpp_lib_has_unique_object_representations
+# error "__cpp_lib_has_unique_object_representations should be defined in c++26"
+# endif
+# if __cpp_lib_has_unique_object_representations != 201606L
+# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_integral_constant_callable
+# error "__cpp_lib_integral_constant_callable should be defined in c++26"
+# endif
+# if __cpp_lib_integral_constant_callable != 201304L
+# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_aggregate
+# error "__cpp_lib_is_aggregate should be defined in c++26"
+# endif
+# if __cpp_lib_is_aggregate != 201703L
+# error "__cpp_lib_is_aggregate should have the value 201703L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_constant_evaluated
+# error "__cpp_lib_is_constant_evaluated should be defined in c++26"
+# endif
+# if __cpp_lib_is_constant_evaluated != 201811L
+# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_final
+# error "__cpp_lib_is_final should be defined in c++26"
+# endif
+# if __cpp_lib_is_final != 201402L
+# error "__cpp_lib_is_final should have the value 201402L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_invocable
+# error "__cpp_lib_is_invocable should be defined in c++26"
+# endif
+# if __cpp_lib_is_invocable != 201703L
+# error "__cpp_lib_is_invocable should have the value 201703L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should be defined in c++26"
+# endif
+# if __cpp_lib_is_layout_compatible != 201907L
+# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_is_nothrow_convertible
+# error "__cpp_lib_is_nothrow_convertible should be defined in c++26"
+# endif
+# if __cpp_lib_is_nothrow_convertible != 201806L
+# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_null_pointer
+# error "__cpp_lib_is_null_pointer should be defined in c++26"
+# endif
+# if __cpp_lib_is_null_pointer != 201309L
+# error "__cpp_lib_is_null_pointer should have the value 201309L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should be defined in c++26"
+# endif
+# if __cpp_lib_is_pointer_interconvertible != 201907L
+# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_is_scoped_enum
+# error "__cpp_lib_is_scoped_enum should be defined in c++26"
+# endif
+# if __cpp_lib_is_scoped_enum != 202011L
+# error "__cpp_lib_is_scoped_enum should have the value 202011L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_swappable
+# error "__cpp_lib_is_swappable should be defined in c++26"
+# endif
+# if __cpp_lib_is_swappable != 201603L
+# error "__cpp_lib_is_swappable should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_logical_traits
+# error "__cpp_lib_logical_traits should be defined in c++26"
+# endif
+# if __cpp_lib_logical_traits != 201510L
+# error "__cpp_lib_logical_traits should have the value 201510L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should be defined in c++26"
+# endif
+# if __cpp_lib_reference_from_temporary != 202202L
+# error "__cpp_lib_reference_from_temporary should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_remove_cvref
+# error "__cpp_lib_remove_cvref should be defined in c++26"
+# endif
+# if __cpp_lib_remove_cvref != 201711L
+# error "__cpp_lib_remove_cvref should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_result_of_sfinae
+# error "__cpp_lib_result_of_sfinae should be defined in c++26"
+# endif
+# if __cpp_lib_result_of_sfinae != 201210L
+# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++26"
+# endif
+
+# ifndef __cpp_lib_transformation_trait_aliases
+# error "__cpp_lib_transformation_trait_aliases should be defined in c++26"
+# endif
+# if __cpp_lib_transformation_trait_aliases != 201304L
+# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_type_identity
+# error "__cpp_lib_type_identity should be defined in c++26"
+# endif
+# if __cpp_lib_type_identity != 201806L
+# error "__cpp_lib_type_identity should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_type_trait_variable_templates
+# error "__cpp_lib_type_trait_variable_templates should be defined in c++26"
+# endif
+# if __cpp_lib_type_trait_variable_templates != 201510L
+# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++26"
+# endif
+
+# ifndef __cpp_lib_void_t
+# error "__cpp_lib_void_t should be defined in c++26"
+# endif
+# if __cpp_lib_void_t != 201411L
+# error "__cpp_lib_void_t should have the value 201411L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/typeinfo.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/typeinfo.version.compile.pass.cpp
index a68f6ba03fe77..aa67917587bfa 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/typeinfo.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/typeinfo.version.compile.pass.cpp
@@ -46,7 +46,7 @@
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_constexpr_typeinfo
# error "__cpp_lib_constexpr_typeinfo should be defined in c++23"
@@ -55,5 +55,14 @@
# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_constexpr_typeinfo
+# error "__cpp_lib_constexpr_typeinfo should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_typeinfo != 202106L
+# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
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 4e3c7f911c9e4..0e5b5985df60e 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
@@ -195,7 +195,7 @@
# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -265,5 +265,75 @@
# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_erasure != 202110L
+# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_generic_unordered_lookup
+# error "__cpp_lib_generic_unordered_lookup should be defined in c++26"
+# endif
+# if __cpp_lib_generic_unordered_lookup != 201811L
+# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++26"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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
+# if __cpp_lib_unordered_map_try_emplace != 201411L
+# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
index 3302f7f5bdb36..8a3a8afd5b473 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
@@ -172,7 +172,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -235,5 +235,68 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_erasure != 202110L
+# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_generic_unordered_lookup
+# error "__cpp_lib_generic_unordered_lookup should be defined in c++26"
+# endif
+# if __cpp_lib_generic_unordered_lookup != 201811L
+# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++26"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/utility.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
index b0e4014bdff47..14fd4db333ebb 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
@@ -258,7 +258,7 @@
# error "__cpp_lib_unreachable should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_as_const
# error "__cpp_lib_as_const should be defined in c++23"
@@ -343,5 +343,90 @@
# error "__cpp_lib_unreachable should have the value 202202L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_as_const
+# error "__cpp_lib_as_const should be defined in c++26"
+# endif
+# if __cpp_lib_as_const != 201510L
+# error "__cpp_lib_as_const should have the value 201510L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_algorithms != 201806L
+# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_utility
+# error "__cpp_lib_constexpr_utility should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_utility != 201811L
+# error "__cpp_lib_constexpr_utility should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_exchange_function
+# error "__cpp_lib_exchange_function should be defined in c++26"
+# endif
+# if __cpp_lib_exchange_function != 201304L
+# error "__cpp_lib_exchange_function should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_forward_like
+# error "__cpp_lib_forward_like should be defined in c++26"
+# endif
+# if __cpp_lib_forward_like != 202207L
+# error "__cpp_lib_forward_like should have the value 202207L in c++26"
+# endif
+
+# ifndef __cpp_lib_integer_comparison_functions
+# error "__cpp_lib_integer_comparison_functions should be defined in c++26"
+# endif
+# if __cpp_lib_integer_comparison_functions != 202002L
+# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_integer_sequence
+# error "__cpp_lib_integer_sequence should be defined in c++26"
+# endif
+# if __cpp_lib_integer_sequence != 201304L
+# error "__cpp_lib_integer_sequence should have the value 201304L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_zip != 202110L
+# error "__cpp_lib_ranges_zip should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_to_underlying
+# error "__cpp_lib_to_underlying should be defined in c++26"
+# endif
+# if __cpp_lib_to_underlying != 202102L
+# error "__cpp_lib_to_underlying should have the value 202102L in c++26"
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++26"
+# endif
+# if __cpp_lib_tuples_by_type != 201304L
+# error "__cpp_lib_tuples_by_type should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_unreachable
+# error "__cpp_lib_unreachable should be defined in c++26"
+# endif
+# if __cpp_lib_unreachable != 202202L
+# error "__cpp_lib_unreachable should have the value 202202L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
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 02e69c6d6df89..eed646b9b6649 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
@@ -52,7 +52,7 @@
# error "__cpp_lib_variant should have the value 202102L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_variant
# error "__cpp_lib_variant should be defined in c++23"
@@ -61,5 +61,14 @@
# error "__cpp_lib_variant should have the value 202102L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_variant
+# error "__cpp_lib_variant should be defined in c++26"
+# endif
+# if __cpp_lib_variant != 202102L
+# error "__cpp_lib_variant should have the value 202102L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
index 9c4206065d76f..b81267176ab34 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
@@ -155,7 +155,7 @@
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
@@ -205,5 +205,55 @@
# endif
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_vector
+# error "__cpp_lib_constexpr_vector should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_vector != 201907L
+# error "__cpp_lib_constexpr_vector should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container 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/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index e31837e1e2ab1..429930b62a9f8 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
@@ -3685,7 +3685,7 @@
# error "__cpp_lib_void_t should have the value 201411L in c++20"
# endif
-#elif TEST_STD_VER > 20
+#elif TEST_STD_VER == 23
# ifndef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++23"
@@ -5105,5 +5105,1425 @@
# error "__cpp_lib_void_t should have the value 201411L in c++23"
# endif
-#endif // TEST_STD_VER > 20
+#elif TEST_STD_VER > 23
+
+# ifndef __cpp_lib_adaptor_iterator_pair_constructor
+# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++26"
+# endif
+# if __cpp_lib_adaptor_iterator_pair_constructor != 202106L
+# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_addressof_constexpr
+# error "__cpp_lib_addressof_constexpr should be defined in c++26"
+# endif
+# if __cpp_lib_addressof_constexpr != 201603L
+# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_allocate_at_least
+# error "__cpp_lib_allocate_at_least should be defined in c++26"
+# endif
+# if __cpp_lib_allocate_at_least != 202106L
+# error "__cpp_lib_allocate_at_least should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
+# endif
+# if __cpp_lib_allocator_traits_is_always_equal != 201411L
+# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_any
+# error "__cpp_lib_any should be defined in c++26"
+# endif
+# if __cpp_lib_any != 201606L
+# error "__cpp_lib_any should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_apply
+# error "__cpp_lib_apply should be defined in c++26"
+# endif
+# if __cpp_lib_apply != 201603L
+# error "__cpp_lib_apply should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_array_constexpr
+# error "__cpp_lib_array_constexpr should be defined in c++26"
+# endif
+# if __cpp_lib_array_constexpr != 201811L
+# error "__cpp_lib_array_constexpr should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_as_const
+# error "__cpp_lib_as_const should be defined in c++26"
+# endif
+# if __cpp_lib_as_const != 201510L
+# error "__cpp_lib_as_const should have the value 201510L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_erasure != 202110L
+# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_assume_aligned
+# error "__cpp_lib_assume_aligned should be defined in c++26"
+# endif
+# if __cpp_lib_assume_aligned != 201811L
+# error "__cpp_lib_assume_aligned should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_atomic_flag_test
+# error "__cpp_lib_atomic_flag_test should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_flag_test != 201907L
+# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_atomic_is_always_lock_free
+# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_is_always_lock_free != 201603L
+# error "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_atomic_lock_free_type_aliases
+# error "__cpp_lib_atomic_lock_free_type_aliases should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_lock_free_type_aliases != 201907L
+# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_ref != 201806L
+# error "__cpp_lib_atomic_ref should have the value 201806L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_shared_ptr != 201711L
+# error "__cpp_lib_atomic_shared_ptr should have the value 201711L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_atomic_value_initialization
+# error "__cpp_lib_atomic_value_initialization should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_value_initialization != 201911L
+# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++26"
+# endif
+
+# if !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_wait != 201907L
+# error "__cpp_lib_atomic_wait should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should not be defined when the requirement '!defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_barrier
+# error "__cpp_lib_barrier should be defined in c++26"
+# endif
+# if __cpp_lib_barrier != 201907L
+# error "__cpp_lib_barrier should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_barrier
+# error "__cpp_lib_barrier should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_bind_back
+# error "__cpp_lib_bind_back should be defined in c++26"
+# endif
+# if __cpp_lib_bind_back != 202202L
+# error "__cpp_lib_bind_back should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_bind_back
+# error "__cpp_lib_bind_back should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should be defined in c++26"
+# endif
+# if __cpp_lib_bind_front != 201907L
+# error "__cpp_lib_bind_front should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_bit_cast
+# error "__cpp_lib_bit_cast should be defined in c++26"
+# endif
+# if __cpp_lib_bit_cast != 201806L
+# error "__cpp_lib_bit_cast should have the value 201806L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_bitops
+# error "__cpp_lib_bitops should be defined in c++26"
+# endif
+# if __cpp_lib_bitops != 201907L
+# error "__cpp_lib_bitops should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_bitops
+# error "__cpp_lib_bitops should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_bool_constant
+# error "__cpp_lib_bool_constant should be defined in c++26"
+# endif
+# if __cpp_lib_bool_constant != 201505L
+# error "__cpp_lib_bool_constant should have the value 201505L in c++26"
+# endif
+
+# ifndef __cpp_lib_bounded_array_traits
+# error "__cpp_lib_bounded_array_traits should be defined in c++26"
+# endif
+# if __cpp_lib_bounded_array_traits != 201902L
+# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++26"
+# endif
+
+# ifndef __cpp_lib_boyer_moore_searcher
+# error "__cpp_lib_boyer_moore_searcher should be defined in c++26"
+# endif
+# if __cpp_lib_boyer_moore_searcher != 201603L
+# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_byte
+# error "__cpp_lib_byte should be defined in c++26"
+# endif
+# if __cpp_lib_byte != 201603L
+# error "__cpp_lib_byte should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_byteswap
+# error "__cpp_lib_byteswap should be defined in c++26"
+# endif
+# if __cpp_lib_byteswap != 202110L
+# error "__cpp_lib_byteswap should have the value 202110L in c++26"
+# endif
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++26"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_chrono
+# error "__cpp_lib_chrono should be defined in c++26"
+# endif
+# if __cpp_lib_chrono != 201611L
+# error "__cpp_lib_chrono should have the value 201611L in c++26"
+# endif
+
+# ifndef __cpp_lib_chrono_udls
+# error "__cpp_lib_chrono_udls should be defined in c++26"
+# endif
+# if __cpp_lib_chrono_udls != 201304L
+# error "__cpp_lib_chrono_udls should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_clamp
+# error "__cpp_lib_clamp should be defined in c++26"
+# endif
+# if __cpp_lib_clamp != 201603L
+# error "__cpp_lib_clamp should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_complex_udls
+# error "__cpp_lib_complex_udls should be defined in c++26"
+# endif
+# if __cpp_lib_complex_udls != 201309L
+# error "__cpp_lib_complex_udls should have the value 201309L in c++26"
+# endif
+
+# ifndef __cpp_lib_concepts
+# error "__cpp_lib_concepts should be defined in c++26"
+# endif
+# if __cpp_lib_concepts != 202002L
+# error "__cpp_lib_concepts should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_algorithms != 201806L
+# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_bitset
+# error "__cpp_lib_constexpr_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_bitset != 202207L
+# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_charconv
+# error "__cpp_lib_constexpr_charconv should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_charconv != 202207L
+# error "__cpp_lib_constexpr_charconv should have the value 202207L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_cmath != 202202L
+# error "__cpp_lib_constexpr_cmath should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_constexpr_complex
+# error "__cpp_lib_constexpr_complex should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_complex != 201711L
+# error "__cpp_lib_constexpr_complex should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_dynamic_alloc
+# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_dynamic_alloc != 201907L
+# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_functional != 201907L
+# error "__cpp_lib_constexpr_functional should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_iterator
+# error "__cpp_lib_constexpr_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_iterator != 201811L
+# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_memory
+# error "__cpp_lib_constexpr_memory should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_memory != 202202L
+# error "__cpp_lib_constexpr_memory should have the value 202202L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_numeric
+# error "__cpp_lib_constexpr_numeric should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_numeric != 201911L
+# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_string
+# error "__cpp_lib_constexpr_string should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_string != 201907L
+# error "__cpp_lib_constexpr_string should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_string_view
+# error "__cpp_lib_constexpr_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_string_view != 201811L
+# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_tuple
+# error "__cpp_lib_constexpr_tuple should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_tuple != 201811L
+# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_typeinfo
+# error "__cpp_lib_constexpr_typeinfo should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_typeinfo != 202106L
+# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_utility
+# error "__cpp_lib_constexpr_utility should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_utility != 201811L
+# error "__cpp_lib_constexpr_utility should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_vector
+# error "__cpp_lib_constexpr_vector should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_vector != 201907L
+# error "__cpp_lib_constexpr_vector should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_coroutine
+# error "__cpp_lib_coroutine should be defined in c++26"
+# endif
+# if __cpp_lib_coroutine != 201902L
+# error "__cpp_lib_coroutine should have the value 201902L in 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++26"
+# endif
+# if __cpp_lib_destroying_delete != 201806L
+# error "__cpp_lib_destroying_delete should have the value 201806L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should not be defined when the requirement 'TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_enable_shared_from_this
+# error "__cpp_lib_enable_shared_from_this should be defined in c++26"
+# endif
+# if __cpp_lib_enable_shared_from_this != 201603L
+# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_endian
+# error "__cpp_lib_endian should be defined in c++26"
+# endif
+# if __cpp_lib_endian != 201907L
+# error "__cpp_lib_endian should have the value 201907L in c++26"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++26"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_exchange_function
+# error "__cpp_lib_exchange_function should be defined in c++26"
+# endif
+# if __cpp_lib_exchange_function != 201304L
+# error "__cpp_lib_exchange_function should have the value 201304L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_execution
+# error "__cpp_lib_execution should be defined in c++26"
+# endif
+# if __cpp_lib_execution != 201902L
+# error "__cpp_lib_execution should have the value 201902L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_execution
+# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_expected
+# error "__cpp_lib_expected should be defined in c++26"
+# endif
+# if __cpp_lib_expected != 202211L
+# error "__cpp_lib_expected should have the value 202211L in c++26"
+# endif
+
+# if !defined(_LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM)
+# ifndef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should be defined in c++26"
+# endif
+# if __cpp_lib_filesystem != 201703L
+# error "__cpp_lib_filesystem should have the value 201703L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format
+# error "__cpp_lib_format should be defined in c++26"
+# endif
+# if __cpp_lib_format != 202106L
+# error "__cpp_lib_format should have the value 202106L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format
+# error "__cpp_lib_format should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
+# ifndef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_format_ranges != 202207L
+# error "__cpp_lib_format_ranges should have the value 202207L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_formatters
+# error "__cpp_lib_formatters should be defined in c++26"
+# endif
+# if __cpp_lib_formatters != 202302L
+# error "__cpp_lib_formatters should have the value 202302L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_formatters
+# error "__cpp_lib_formatters should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_forward_like
+# error "__cpp_lib_forward_like should be defined in c++26"
+# endif
+# if __cpp_lib_forward_like != 202207L
+# error "__cpp_lib_forward_like should have the value 202207L in c++26"
+# endif
+
+# ifndef __cpp_lib_gcd_lcm
+# error "__cpp_lib_gcd_lcm should be defined in c++26"
+# endif
+# if __cpp_lib_gcd_lcm != 201606L
+# error "__cpp_lib_gcd_lcm should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup should be defined in c++26"
+# endif
+# if __cpp_lib_generic_associative_lookup != 201304L
+# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_generic_unordered_lookup
+# error "__cpp_lib_generic_unordered_lookup should be defined in c++26"
+# endif
+# if __cpp_lib_generic_unordered_lookup != 201811L
+# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++26"
+# endif
+
+# if defined(__GCC_DESTRUCTIVE_SIZE) && defined(__GCC_CONSTRUCTIVE_SIZE)
+# ifndef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should be defined in c++26"
+# endif
+# if __cpp_lib_hardware_interference_size != 201703L
+# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should not be defined when the requirement 'defined(__GCC_DESTRUCTIVE_SIZE) && defined(__GCC_CONSTRUCTIVE_SIZE)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_has_unique_object_representations
+# error "__cpp_lib_has_unique_object_representations should be defined in c++26"
+# endif
+# if __cpp_lib_has_unique_object_representations != 201606L
+# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_hypot
+# error "__cpp_lib_hypot should be defined in c++26"
+# endif
+# if __cpp_lib_hypot != 201603L
+# error "__cpp_lib_hypot should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++26"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++26"
+# endif
+
+# ifndef __cpp_lib_int_pow2
+# error "__cpp_lib_int_pow2 should be defined in c++26"
+# endif
+# if __cpp_lib_int_pow2 != 202002L
+# error "__cpp_lib_int_pow2 should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_integer_comparison_functions
+# error "__cpp_lib_integer_comparison_functions should be defined in c++26"
+# endif
+# if __cpp_lib_integer_comparison_functions != 202002L
+# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++26"
+# endif
+
+# ifndef __cpp_lib_integer_sequence
+# error "__cpp_lib_integer_sequence should be defined in c++26"
+# endif
+# if __cpp_lib_integer_sequence != 201304L
+# error "__cpp_lib_integer_sequence should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_integral_constant_callable
+# error "__cpp_lib_integral_constant_callable should be defined in c++26"
+# endif
+# if __cpp_lib_integral_constant_callable != 201304L
+# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_interpolate
+# error "__cpp_lib_interpolate should be defined in c++26"
+# endif
+# if __cpp_lib_interpolate != 201902L
+# error "__cpp_lib_interpolate should have the value 201902L in c++26"
+# endif
+
+# ifndef __cpp_lib_invoke
+# error "__cpp_lib_invoke should be defined in c++26"
+# endif
+# if __cpp_lib_invoke != 201411L
+# error "__cpp_lib_invoke should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_invoke_r
+# error "__cpp_lib_invoke_r should be defined in c++26"
+# endif
+# if __cpp_lib_invoke_r != 202106L
+# error "__cpp_lib_invoke_r should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_aggregate
+# error "__cpp_lib_is_aggregate should be defined in c++26"
+# endif
+# if __cpp_lib_is_aggregate != 201703L
+# error "__cpp_lib_is_aggregate should have the value 201703L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_constant_evaluated
+# error "__cpp_lib_is_constant_evaluated should be defined in c++26"
+# endif
+# if __cpp_lib_is_constant_evaluated != 201811L
+# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_final
+# error "__cpp_lib_is_final should be defined in c++26"
+# endif
+# if __cpp_lib_is_final != 201402L
+# error "__cpp_lib_is_final should have the value 201402L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_invocable
+# error "__cpp_lib_is_invocable should be defined in c++26"
+# endif
+# if __cpp_lib_is_invocable != 201703L
+# error "__cpp_lib_is_invocable should have the value 201703L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should be defined in c++26"
+# endif
+# if __cpp_lib_is_layout_compatible != 201907L
+# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_is_nothrow_convertible
+# error "__cpp_lib_is_nothrow_convertible should be defined in c++26"
+# endif
+# if __cpp_lib_is_nothrow_convertible != 201806L
+# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_null_pointer
+# error "__cpp_lib_is_null_pointer should be defined in c++26"
+# endif
+# if __cpp_lib_is_null_pointer != 201309L
+# error "__cpp_lib_is_null_pointer should have the value 201309L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should be defined in c++26"
+# endif
+# if __cpp_lib_is_pointer_interconvertible != 201907L
+# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_is_scoped_enum
+# error "__cpp_lib_is_scoped_enum should be defined in c++26"
+# endif
+# if __cpp_lib_is_scoped_enum != 202011L
+# error "__cpp_lib_is_scoped_enum should have the value 202011L in c++26"
+# endif
+
+# ifndef __cpp_lib_is_swappable
+# error "__cpp_lib_is_swappable should be defined in c++26"
+# endif
+# if __cpp_lib_is_swappable != 201603L
+# error "__cpp_lib_is_swappable should have the value 201603L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_jthread
+# error "__cpp_lib_jthread should be defined in c++26"
+# endif
+# if __cpp_lib_jthread != 201911L
+# error "__cpp_lib_jthread should have the value 201911L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_jthread
+# error "__cpp_lib_jthread should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_latch
+# error "__cpp_lib_latch should be defined in c++26"
+# endif
+# if __cpp_lib_latch != 201907L
+# error "__cpp_lib_latch should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_latch
+# error "__cpp_lib_latch should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_launder
+# error "__cpp_lib_launder should be defined in c++26"
+# endif
+# if __cpp_lib_launder != 201606L
+# error "__cpp_lib_launder should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should be defined in c++26"
+# endif
+# if __cpp_lib_list_remove_return_type != 201806L
+# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_logical_traits
+# error "__cpp_lib_logical_traits should be defined in c++26"
+# endif
+# if __cpp_lib_logical_traits != 201510L
+# error "__cpp_lib_logical_traits should have the value 201510L in c++26"
+# endif
+
+# ifndef __cpp_lib_make_from_tuple
+# error "__cpp_lib_make_from_tuple should be defined in c++26"
+# endif
+# if __cpp_lib_make_from_tuple != 201606L
+# error "__cpp_lib_make_from_tuple should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_make_reverse_iterator
+# error "__cpp_lib_make_reverse_iterator should be defined in c++26"
+# endif
+# if __cpp_lib_make_reverse_iterator != 201402L
+# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++26"
+# endif
+
+# ifndef __cpp_lib_make_unique
+# error "__cpp_lib_make_unique should be defined in c++26"
+# endif
+# if __cpp_lib_make_unique != 201304L
+# error "__cpp_lib_make_unique should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_map_try_emplace
+# error "__cpp_lib_map_try_emplace should be defined in c++26"
+# endif
+# if __cpp_lib_map_try_emplace != 201411L
+# error "__cpp_lib_map_try_emplace should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_math_constants
+# error "__cpp_lib_math_constants should be defined in c++26"
+# endif
+# if __cpp_lib_math_constants != 201907L
+# error "__cpp_lib_math_constants should have the value 201907L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions should be defined in c++26"
+# endif
+# if __cpp_lib_math_special_functions != 201603L
+# error "__cpp_lib_math_special_functions should have the value 201603L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should be defined in c++26"
+# endif
+# if __cpp_lib_mdspan != 202207L
+# error "__cpp_lib_mdspan should have the value 202207L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should be defined in c++26"
+# endif
+# if __cpp_lib_memory_resource != 201603L
+# error "__cpp_lib_memory_resource should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_move_iterator_concept
+# error "__cpp_lib_move_iterator_concept should be defined in c++26"
+# endif
+# if __cpp_lib_move_iterator_concept != 202207L
+# error "__cpp_lib_move_iterator_concept should have the value 202207L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should be defined in c++26"
+# endif
+# if __cpp_lib_move_only_function != 202110L
+# error "__cpp_lib_move_only_function should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++26"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++26"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++26"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_not_fn
+# error "__cpp_lib_not_fn should be defined in c++26"
+# endif
+# if __cpp_lib_not_fn != 201603L
+# error "__cpp_lib_not_fn should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_null_iterators
+# error "__cpp_lib_null_iterators should be defined in c++26"
+# endif
+# if __cpp_lib_null_iterators != 201304L
+# error "__cpp_lib_null_iterators should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_optional
+# error "__cpp_lib_optional should be defined in c++26"
+# endif
+# if __cpp_lib_optional != 202110L
+# error "__cpp_lib_optional should have the value 202110L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# 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"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_out_ptr
+# error "__cpp_lib_out_ptr 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"
+# endif
+# if __cpp_lib_parallel_algorithm != 201603L
+# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should be defined in c++26"
+# endif
+# if __cpp_lib_polymorphic_allocator != 201902L
+# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++26"
+# endif
+
+# ifndef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should be defined in c++26"
+# endif
+# if __cpp_lib_quoted_string_io != 201304L
+# error "__cpp_lib_quoted_string_io should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202106L
+# error "__cpp_lib_ranges should have the value 202106L in c++26"
+# endif
+
+# ifndef __cpp_lib_ranges_as_rvalue
+# error "__cpp_lib_ranges_as_rvalue should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_as_rvalue != 202207L
+# error "__cpp_lib_ranges_as_rvalue should have the value 202207L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_chunk != 202202L
+# error "__cpp_lib_ranges_chunk should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_chunk_by != 202202L
+# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_iota != 202202L
+# error "__cpp_lib_ranges_iota should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_join_with
+# error "__cpp_lib_ranges_join_with should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_join_with != 202202L
+# error "__cpp_lib_ranges_join_with should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_join_with
+# error "__cpp_lib_ranges_join_with should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_slide != 202202L
+# error "__cpp_lib_ranges_slide should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_starts_ends_with != 202106L
+# error "__cpp_lib_ranges_starts_ends_with should have the value 202106L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_zip != 202110L
+# error "__cpp_lib_ranges_zip should have the value 202110L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_raw_memory_algorithms
+# error "__cpp_lib_raw_memory_algorithms should be defined in c++26"
+# endif
+# if __cpp_lib_raw_memory_algorithms != 201606L
+# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should be defined in c++26"
+# endif
+# if __cpp_lib_reference_from_temporary != 202202L
+# error "__cpp_lib_reference_from_temporary should have the value 202202L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_remove_cvref
+# error "__cpp_lib_remove_cvref should be defined in c++26"
+# endif
+# if __cpp_lib_remove_cvref != 201711L
+# error "__cpp_lib_remove_cvref should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_result_of_sfinae
+# error "__cpp_lib_result_of_sfinae should be defined in c++26"
+# endif
+# if __cpp_lib_result_of_sfinae != 201210L
+# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++26"
+# endif
+
+# ifndef __cpp_lib_robust_nonmodifying_seq_ops
+# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++26"
+# endif
+# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
+# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_sample
+# error "__cpp_lib_sample should be defined in c++26"
+# endif
+# if __cpp_lib_sample != 201603L
+# error "__cpp_lib_sample should have the value 201603L in c++26"
+# endif
+
+# ifndef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should be defined in c++26"
+# endif
+# if __cpp_lib_scoped_lock != 201703L
+# error "__cpp_lib_scoped_lock should have the value 201703L in c++26"
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)
+# ifndef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should be defined in c++26"
+# endif
+# if __cpp_lib_semaphore != 201907L
+# error "__cpp_lib_semaphore should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)
+# ifndef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should be defined in c++26"
+# endif
+# if __cpp_lib_shared_mutex != 201505L
+# error "__cpp_lib_shared_mutex should have the value 201505L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shared_ptr_arrays
+# error "__cpp_lib_shared_ptr_arrays should be defined in c++26"
+# endif
+# if __cpp_lib_shared_ptr_arrays != 201707L
+# error "__cpp_lib_shared_ptr_arrays should have the value 201707L in c++26"
+# endif
+
+# ifndef __cpp_lib_shared_ptr_weak_type
+# error "__cpp_lib_shared_ptr_weak_type should be defined in c++26"
+# endif
+# if __cpp_lib_shared_ptr_weak_type != 201606L
+# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++26"
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)
+# ifndef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should be defined in c++26"
+# endif
+# if __cpp_lib_shared_timed_mutex != 201402L
+# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shift
+# error "__cpp_lib_shift should be defined in c++26"
+# endif
+# if __cpp_lib_shift != 201806L
+# error "__cpp_lib_shift should have the value 201806L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++26"
+# endif
+# if __cpp_lib_smart_ptr_for_overwrite != 202002L
+# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
+# ifndef __cpp_lib_source_location
+# error "__cpp_lib_source_location should be defined in c++26"
+# endif
+# if __cpp_lib_source_location != 201907L
+# error "__cpp_lib_source_location should have the value 201907L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_source_location
+# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_span
+# error "__cpp_lib_span should be defined in c++26"
+# endif
+# if __cpp_lib_span != 202002L
+# error "__cpp_lib_span should have the value 202002L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_spanstream
+# error "__cpp_lib_spanstream should be defined in c++26"
+# endif
+# if __cpp_lib_spanstream != 202106L
+# error "__cpp_lib_spanstream should have the value 202106L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_spanstream
+# error "__cpp_lib_spanstream should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ssize
+# error "__cpp_lib_ssize should be defined in c++26"
+# endif
+# if __cpp_lib_ssize != 201902L
+# error "__cpp_lib_ssize should have the value 201902L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_stacktrace
+# error "__cpp_lib_stacktrace should be defined in c++26"
+# endif
+# if __cpp_lib_stacktrace != 202011L
+# error "__cpp_lib_stacktrace should have the value 202011L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_stacktrace
+# error "__cpp_lib_stacktrace 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
+# if __cpp_lib_starts_ends_with != 201711L
+# error "__cpp_lib_starts_ends_with should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_stdatomic_h
+# error "__cpp_lib_stdatomic_h should be defined in c++26"
+# endif
+# if __cpp_lib_stdatomic_h != 202011L
+# error "__cpp_lib_stdatomic_h should have the value 202011L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_contains
+# error "__cpp_lib_string_contains should be defined in c++26"
+# endif
+# if __cpp_lib_string_contains != 202011L
+# error "__cpp_lib_string_contains should have the value 202011L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_resize_and_overwrite
+# error "__cpp_lib_string_resize_and_overwrite should be defined in c++26"
+# endif
+# if __cpp_lib_string_resize_and_overwrite != 202110L
+# error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_udls
+# error "__cpp_lib_string_udls should be defined in c++26"
+# endif
+# if __cpp_lib_string_udls != 201304L
+# error "__cpp_lib_string_udls should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_string_view
+# error "__cpp_lib_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_string_view != 201803L
+# error "__cpp_lib_string_view should have the value 201803L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should be defined in c++26"
+# endif
+# if __cpp_lib_syncbuf != 201803L
+# error "__cpp_lib_syncbuf should have the value 201803L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison should be defined in c++26"
+# endif
+# if __cpp_lib_three_way_comparison != 201907L
+# error "__cpp_lib_three_way_comparison should have the value 201907L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_to_address
+# error "__cpp_lib_to_address should be defined in c++26"
+# endif
+# if __cpp_lib_to_address != 201711L
+# error "__cpp_lib_to_address should have the value 201711L in c++26"
+# endif
+
+# ifndef __cpp_lib_to_array
+# error "__cpp_lib_to_array should be defined in c++26"
+# endif
+# if __cpp_lib_to_array != 201907L
+# error "__cpp_lib_to_array should have the value 201907L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars should be defined in c++26"
+# endif
+# if __cpp_lib_to_chars != 201611L
+# error "__cpp_lib_to_chars should have the value 201611L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_to_underlying
+# error "__cpp_lib_to_underlying should be defined in c++26"
+# endif
+# if __cpp_lib_to_underlying != 202102L
+# error "__cpp_lib_to_underlying should have the value 202102L in c++26"
+# endif
+
+# ifndef __cpp_lib_transformation_trait_aliases
+# error "__cpp_lib_transformation_trait_aliases should be defined in c++26"
+# endif
+# if __cpp_lib_transformation_trait_aliases != 201304L
+# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+# error "__cpp_lib_transparent_operators should be defined in c++26"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+# error "__cpp_lib_transparent_operators should have the value 201510L in c++26"
+# endif
+
+# ifndef __cpp_lib_tuple_element_t
+# error "__cpp_lib_tuple_element_t should be defined in c++26"
+# endif
+# if __cpp_lib_tuple_element_t != 201402L
+# error "__cpp_lib_tuple_element_t should have the value 201402L in c++26"
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++26"
+# endif
+# if __cpp_lib_tuples_by_type != 201304L
+# error "__cpp_lib_tuples_by_type should have the value 201304L in c++26"
+# endif
+
+# ifndef __cpp_lib_type_identity
+# error "__cpp_lib_type_identity should be defined in c++26"
+# endif
+# if __cpp_lib_type_identity != 201806L
+# error "__cpp_lib_type_identity should have the value 201806L in c++26"
+# endif
+
+# ifndef __cpp_lib_type_trait_variable_templates
+# error "__cpp_lib_type_trait_variable_templates should be defined in c++26"
+# endif
+# if __cpp_lib_type_trait_variable_templates != 201510L
+# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++26"
+# endif
+
+# ifndef __cpp_lib_uncaught_exceptions
+# error "__cpp_lib_uncaught_exceptions should be defined in c++26"
+# endif
+# if __cpp_lib_uncaught_exceptions != 201411L
+# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_unordered_map_try_emplace
+# error "__cpp_lib_unordered_map_try_emplace should be defined in c++26"
+# endif
+# if __cpp_lib_unordered_map_try_emplace != 201411L
+# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++26"
+# endif
+
+# ifndef __cpp_lib_unreachable
+# error "__cpp_lib_unreachable should be defined in c++26"
+# endif
+# if __cpp_lib_unreachable != 202202L
+# error "__cpp_lib_unreachable should have the value 202202L in c++26"
+# endif
+
+# ifndef __cpp_lib_unwrap_ref
+# error "__cpp_lib_unwrap_ref should be defined in c++26"
+# endif
+# if __cpp_lib_unwrap_ref != 201811L
+# error "__cpp_lib_unwrap_ref should have the value 201811L in c++26"
+# endif
+
+# ifndef __cpp_lib_variant
+# error "__cpp_lib_variant should be defined in c++26"
+# endif
+# if __cpp_lib_variant != 202102L
+# error "__cpp_lib_variant should have the value 202102L in c++26"
+# endif
+
+# ifndef __cpp_lib_void_t
+# error "__cpp_lib_void_t should be defined in c++26"
+# endif
+# if __cpp_lib_void_t != 201411L
+# error "__cpp_lib_void_t should have the value 201411L in c++26"
+# endif
+
+#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/tools/clang_tidy_checks/proper_version_checks.cpp b/libcxx/test/tools/clang_tidy_checks/proper_version_checks.cpp
index 2abc5ceeecfb8..15093a4357bb7 100644
--- a/libcxx/test/tools/clang_tidy_checks/proper_version_checks.cpp
+++ b/libcxx/test/tools/clang_tidy_checks/proper_version_checks.cpp
@@ -50,10 +50,10 @@ class proper_version_checks_callbacks : public clang::PPCallbacks {
check_.diag(location, "_LIBCPP_STD_VER >= 11 is always true. Did you mean '#ifndef _LIBCPP_CXX03_LANG'?");
else if (condition.starts_with("_LIBCPP_STD_VER >= ") &&
- std::ranges::none_of(std::array{"14", "17", "20", "23"}, [&](auto val) {
+ std::ranges::none_of(std::array{"14", "17", "20", "23", "26"}, [&](auto val) {
return condition.find(val) != std::string_view::npos;
}))
- check_.diag(location, "Not a valid value for _LIBCPP_STD_VER. Use 14, 17, 20 or 23");
+ check_.diag(location, "Not a valid value for _LIBCPP_STD_VER. Use 14, 17, 20, 23, or 26");
}
clang::Preprocessor& preprocessor_;
diff --git a/libcxx/utils/ci/buildkite-pipeline-clang.yml b/libcxx/utils/ci/buildkite-pipeline-clang.yml
index c471f36e90ca6..40bb80aa8d30e 100644
--- a/libcxx/utils/ci/buildkite-pipeline-clang.yml
+++ b/libcxx/utils/ci/buildkite-pipeline-clang.yml
@@ -64,14 +64,14 @@ steps:
limit: 2
timeout_in_minutes: 120
- - label: "C++23"
+ - label: "C++26"
commands:
- "buildkite-agent artifact download install.tar.xz ."
- "tar -xvf install.tar.xz"
- "export CC=$(pwd)/install/bin/clang"
- "export CXX=$(pwd)/install/bin/clang++"
- "chmod +x install/bin/clang install/bin/clang++"
- - "libcxx/utils/ci/run-buildbot generic-cxx23"
+ - "libcxx/utils/ci/run-buildbot generic-cxx26"
artifact_paths:
- "**/test-results.xml"
- "**/crash_diagnostics/*"
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 3d53df7944e27..ecfb8e9595d86 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -110,15 +110,16 @@ steps:
limit: 2
timeout_in_minutes: 120
- - label: "C++23"
- command: "libcxx/utils/ci/run-buildbot generic-cxx23"
+ - label: "C++26"
+ command: "libcxx/utils/ci/run-buildbot generic-cxx26"
artifact_paths:
- "**/test-results.xml"
- "**/*.abilist"
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -136,7 +137,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -187,6 +189,24 @@ steps:
#
- wait
+ - label: "C++23"
+ command: "libcxx/utils/ci/run-buildbot generic-cxx23"
+ artifact_paths:
+ - "**/test-results.xml"
+ - "**/*.abilist"
+ env:
+ CC: "clang-${LLVM_HEAD_VERSION}"
+ CXX: "clang++-${LLVM_HEAD_VERSION}"
+ ENABLE_CLANG_TIDY: "On"
+ agents:
+ queue: "libcxx-builders"
+ os: "linux"
+ retry:
+ automatic:
+ - exit_status: -1 # Agent was lost
+ limit: 2
+ timeout_in_minutes: 120
+
- label: "C++20"
command: "libcxx/utils/ci/run-buildbot generic-cxx20"
artifact_paths:
@@ -308,7 +328,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -326,7 +347,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -344,7 +366,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -362,7 +385,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -402,7 +426,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -420,7 +445,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -438,7 +464,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -456,7 +483,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -474,7 +502,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -492,7 +521,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -512,7 +542,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -530,7 +561,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -548,7 +580,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -566,7 +599,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -584,7 +618,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -602,7 +637,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -620,7 +656,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -638,7 +675,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -656,7 +694,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -674,7 +713,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
@@ -693,7 +733,8 @@ steps:
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
- ENABLE_CLANG_TIDY: "On"
+ # TODO(LLVM-17) enable clang-tidy.
+ # ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 7878a1b0832fb..420dfde5645a6 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -282,6 +282,12 @@ generic-cxx23)
check-runtimes
check-abi-list
;;
+generic-cxx26)
+ clean
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx26.cmake"
+ check-runtimes
+ check-abi-list
+;;
#
# Other compiler support
#
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 0ced059600716..7ae77d7f27f13 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -819,7 +819,7 @@ def add_version_header(tc):
}
def get_std_dialects():
- std_dialects = ['c++14', 'c++17', 'c++20', 'c++23']
+ std_dialects = ['c++14', 'c++17', 'c++20', 'c++23', 'c++26']
return list(std_dialects)
def get_first_std(d):
@@ -1167,15 +1167,18 @@ def create_table(grid, indent):
row = grid[row_i]
line = indent_str + ' '.join([pad_cell(row[i], col_widths[i]) for i in range(0, len(row))])
result.append(line.rstrip())
- is_cxx_header = row[0].startswith('**')
if row_i == len(grid) - 1:
header_flag = 2
- separator = indent_str + add_divider(col_widths, 1 if is_cxx_header else header_flag)
+ if row[0].startswith('**'):
+ header_flag += 1
+ separator = indent_str + add_divider(col_widths, header_flag)
result.append(separator.rstrip())
header_flag = 0
return '\n'.join(result)
def add_divider(widths, header_flag):
+ if header_flag == 3:
+ return '='.join(['='*w for w in widths])
if header_flag == 2:
return ' '.join(['='*w for w in widths])
if header_flag == 1:
diff --git a/libcxx/utils/generate_header_inclusion_tests.py b/libcxx/utils/generate_header_inclusion_tests.py
index 729e3e0bda70b..56e30bd657d7d 100755
--- a/libcxx/utils/generate_header_inclusion_tests.py
+++ b/libcxx/utils/generate_header_inclusion_tests.py
@@ -128,6 +128,7 @@ def get_unsupported_line(includee):
"17": ['UNSUPPORTED: c++03, c++11, c++14'],
"20": ['UNSUPPORTED: c++03, c++11, c++14, c++17'],
"23": ['UNSUPPORTED: c++03, c++11, c++14, c++17, c++20'],
+ "26": ['UNSUPPORTED: c++03, c++11, c++14, c++17, c++20, c++23'],
}[v]
diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py
index c7fb116a948de..52269ace7b4b7 100644
--- a/libcxx/utils/libcxx/test/params.py
+++ b/libcxx/utils/libcxx/test/params.py
@@ -55,7 +55,7 @@
'-Wno-unused-local-typedef',
]
-_allStandards = ['c++03', 'c++11', 'c++14', 'c++17', 'c++20', 'c++23']
+_allStandards = ['c++03', 'c++11', 'c++14', 'c++17', 'c++20', 'c++23', 'c++26']
def getStdFlag(cfg, std):
fallbacks = {
'c++11': 'c++0x',
@@ -64,7 +64,7 @@ def getStdFlag(cfg, std):
'c++20': 'c++2a',
'c++23': 'c++2b',
}
- # TODO LLVM 17 Remove this clang-tidy-16 work-around
+ # TODO(LLVM-17) Remove this clang-tidy-16 work-around
if std == 'c++23':
std = 'c++2b'
if hasCompileFlag(cfg, '-std='+std):
More information about the libcxx-commits
mailing list