diff --git a/libcxx/cmake/caches/Generic-cxx26.cmake b/libcxx/cmake/caches/Generic-cxx26.cmake new file mode 100644 --- /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 --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -373,5 +373,7 @@ ``__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 --- /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 `__. + +.. 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 --- /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 --- /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 --- a/libcxx/docs/index.rst +++ b/libcxx/docs/index.rst @@ -44,6 +44,7 @@ Status/Cxx17 Status/Cxx20 Status/Cxx23 + Status/Cxx2c Status/Format Status/Parallelism Status/Ranges @@ -150,6 +151,7 @@ * :ref:`C++17 - In Progress ` * :ref:`C++20 - In Progress ` * :ref:`C++23 - In Progress ` +* :ref:`C++2c - In Progress ` * :ref:`C++ Feature Test Macro Status ` diff --git a/libcxx/include/version b/libcxx/include/version --- a/libcxx/include/version +++ b/libcxx/include/version @@ -433,6 +433,10 @@ # 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 --- a/libcxx/test/libcxx/transitive_includes.sh.cpp +++ b/libcxx/test/libcxx/transitive_includes.sh.cpp @@ -40,7 +40,7 @@ # 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 /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 /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 --- /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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 @@ 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 --- a/libcxx/utils/ci/buildkite-pipeline-clang.yml +++ b/libcxx/utils/ci/buildkite-pipeline-clang.yml @@ -64,14 +64,14 @@ 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 --- a/libcxx/utils/ci/buildkite-pipeline.yml +++ b/libcxx/utils/ci/buildkite-pipeline.yml @@ -110,15 +110,16 @@ 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 @@ 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 @@ # - 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 --- a/libcxx/utils/ci/run-buildbot +++ b/libcxx/utils/ci/run-buildbot @@ -282,6 +282,12 @@ 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 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -819,7 +819,7 @@ } 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 @@ 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 --- a/libcxx/utils/generate_header_inclusion_tests.py +++ b/libcxx/utils/generate_header_inclusion_tests.py @@ -128,6 +128,7 @@ "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 --- 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 @@ '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):