[libcxx-commits] [libcxx] a5b4479 - [libc++] Add papers from February 2022 plenary meeting

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Wed Feb 9 01:21:27 PST 2022


Author: Nikolas Klauser
Date: 2022-02-09T10:21:19+01:00
New Revision: a5b4479d3c93bf0dca290db5ee40f35446758f65

URL: https://github.com/llvm/llvm-project/commit/a5b4479d3c93bf0dca290db5ee40f35446758f65
DIFF: https://github.com/llvm/llvm-project/commit/a5b4479d3c93bf0dca290db5ee40f35446758f65.diff

LOG: [libc++] Add papers from February 2022 plenary meeting

Reviewed By: ldionne, Quuxplusone, #libc

Spies: arichardson, libcxx-commits

Differential Revision: https://reviews.llvm.org/D119189

Added: 
    libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.pass.cpp

Modified: 
    libcxx/docs/FeatureTestMacroTable.rst
    libcxx/docs/Status/Cxx2bPapers.csv
    libcxx/include/version
    libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/list.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/map.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/set.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
    libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
    libcxx/utils/generate_feature_test_macro_components.py

Removed: 
    


################################################################################
diff  --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index 3cfcaa662f650..0991609de481d 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -302,8 +302,12 @@ Status
     ------------------------------------------------- -----------------
     ``__cpp_lib_associative_heterogeneous_erasure``   *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_bind_back``                           *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_byteswap``                            ``202110L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_cmath``                     *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_constexpr_typeinfo``                  *unimplemented*
     ------------------------------------------------- -----------------
     ``__cpp_lib_invoke_r``                            *unimplemented*
@@ -316,10 +320,24 @@ Status
     ------------------------------------------------- -----------------
     ``__cpp_lib_out_ptr``                             *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_chunk``                        *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_chunk_by``                     *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_iota``                         *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_join_with``                    *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_slide``                        *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_ranges_starts_ends_with``             *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_to_container``                 *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_ranges_zip``                          *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_reference_from_temporary``            *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_spanstream``                          *unimplemented*
     ------------------------------------------------- -----------------
     ``__cpp_lib_stacktrace``                          *unimplemented*
@@ -331,5 +349,7 @@ Status
     ``__cpp_lib_string_resize_and_overwrite``         ``202110L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_to_underlying``                       ``202102L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_unreachable``                         *unimplemented*
     ================================================= =================
 

diff  --git a/libcxx/docs/Status/Cxx2bPapers.csv b/libcxx/docs/Status/Cxx2bPapers.csv
index f5ab6edad9eaa..d4c9bd54ad34a 100644
--- a/libcxx/docs/Status/Cxx2bPapers.csv
+++ b/libcxx/docs/Status/Cxx2bPapers.csv
@@ -11,7 +11,7 @@
 "`P2212R2 <https://wg21.link/P2212R2>`__","LWG","Relax Requirements for time_point::clock","February 2021","",""
 "`P2259R1 <https://wg21.link/P2259R1>`__","LWG","Repairing input range adaptors and counted_iterator","February 2021","",""
 "","","","","",""
-"`P0401R6 <https://wg21.link/P0401R6>`__","LWG","Providing size feedback in the Allocator interface","June 2021","",
+"`P0401R6 <https://wg21.link/P0401R6>`__","LWG","Providing size feedback in the Allocator interface","June 2021","",""
 "`P0448R4 <https://wg21.link/P0448R4>`__","LWG","A strstream replacement using span<charT> as buffer","June 2021","",""
 "`P1132R8 <https://wg21.link/P1132R8>`__","LWG","out_ptr - a scalable output pointer abstraction","June 2021","",""
 "`P1328R1 <https://wg21.link/P1328R1>`__","LWG","Making std::type_info::operator== constexpr","June 2021","",""
@@ -38,3 +38,16 @@
 "`P2393R1 <https://wg21.link/P2393R1>`__","LWG","Cleaning up ``integer``-class types","October 2021","",""
 "`P2401R0 <https://wg21.link/P2401R0>`__","LWG","Add a conditional ``noexcept`` specification to ``std::exchange``","October 2021","|Complete|","14.0"
 "","","","","",""
+"`P0323R12 <https://wg21.link/P0323R12>`__","LWG","``std::expected``","February 2022","",""
+"`P0533R9 <https://wg21.link/P0533R9>`__","LWG","``constexpr`` for ``<cmath>`` and ``<cstdlib>``","February 2022","",""
+"`P0627R6 <https://wg21.link/P0627R6>`__","LWG","Function to mark unreachable code","February 2022","",""
+"`P1206R7 <https://wg21.link/P1206R7>`__","LWG","``ranges::to``: A function to convert any range to a container","February 2022","",""
+"`P1413R3 <https://wg21.link/P1413R3>`__","LWG","Deprecate ``std::aligned_storage`` and ``std::aligned_union``","February 2022","",""
+"`P2255R3 <https://wg21.link/P2255R3>`__","LWG","A type trait to detect reference binding to temporary","February 2022","",""
+"`P2273R3 <https://wg21.link/P2273R3>`__","LWG","Making ``std::unique_ptr`` constexpr","February 2022","",""
+"`P2387R3 <https://wg21.link/P2387R3>`__","LWG","Pipe support for user-defined range adaptors","February 2022","",""
+"`P2440R1 <https://wg21.link/P2440R1>`__","LWG","``ranges::iota``, ``ranges::shift_left`` and ``ranges::shift_right``","February 2022","",""
+"`P2441R2 <https://wg21.link/P2441R2>`__","LWG","``views::join_view``","February 2022","",""
+"`P2442R1 <https://wg21.link/P2442R1>`__","LWG","Windowing range adaptors: ``views::chunk`` and ``views::slide``","February 2022","",""
+"`P2443R1 <https://wg21.link/P2443R1>`__","LWG","``views::chunk_by``","February 2022","",""
+"","","","","",""

diff  --git a/libcxx/include/version b/libcxx/include/version
index 1dd7a0b3cfa48..21c193393486f 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -38,6 +38,7 @@ __cpp_lib_atomic_shared_ptr                             201711L <atomic>
 __cpp_lib_atomic_value_initialization                   201911L <atomic> <memory>
 __cpp_lib_atomic_wait                                   201907L <atomic>
 __cpp_lib_barrier                                       201907L <barrier>
+__cpp_lib_bind_back                                     202202L <functional>
 __cpp_lib_bind_front                                    201907L <functional>
 __cpp_lib_bit_cast                                      201806L <bit>
 __cpp_lib_bitops                                        201907L <bit>
@@ -55,6 +56,7 @@ __cpp_lib_clamp                                         201603L <algorithm>
 __cpp_lib_complex_udls                                  201309L <complex>
 __cpp_lib_concepts                                      202002L <concepts>
 __cpp_lib_constexpr_algorithms                          201806L <algorithm>
+__cpp_lib_constexpr_cmath                               202202L <cmath> <cstdlib>
 __cpp_lib_constexpr_complex                             201711L <complex>
 __cpp_lib_constexpr_dynamic_alloc                       201907L <memory>
 __cpp_lib_constexpr_functional                          201907L <functional>
@@ -132,9 +134,19 @@ __cpp_lib_polymorphic_allocator                         201902L <memory_resource
 __cpp_lib_quoted_string_io                              201304L <iomanip>
 __cpp_lib_ranges                                        201811L <algorithm> <functional> <iterator>
                                                                 <memory> <ranges>
+__cpp_lib_ranges_chunk                                  202202L <ranges>
+__cpp_lib_ranges_chunk_by                               202202L <ranges>
+__cpp_lib_ranges_iota                                   202202L <numeric>
+__cpp_lib_ranges_join_with                              202202L <ranges>
+__cpp_lib_ranges_slide                                  202202L <ranges>
 __cpp_lib_ranges_starts_ends_with                       202106L <algorithm>
+__cpp_lib_ranges_to_container                           202202L <deque> <forward_list> <list>
+                                                                <map> <priority_queue> <queue>
+                                                                <set> <stack> <string>
+                                                                <unordered_map> <unordered_set> <vector>
 __cpp_lib_ranges_zip                                    202110L <ranges> <tuple> <utility>
 __cpp_lib_raw_memory_algorithms                         201606L <memory>
+__cpp_lib_reference_from_temporary                      202202L <type_traits>
 __cpp_lib_remove_cvref                                  201711L <type_traits>
 __cpp_lib_result_of_sfinae                              201210L <functional> <type_traits>
 __cpp_lib_robust_nonmodifying_seq_ops                   201304L <algorithm>
@@ -174,6 +186,7 @@ __cpp_lib_type_identity                                 201806L <type_traits>
 __cpp_lib_type_trait_variable_templates                 201510L <type_traits>
 __cpp_lib_uncaught_exceptions                           201411L <exception>
 __cpp_lib_unordered_map_try_emplace                     201411L <unordered_map>
+__cpp_lib_unreachable                                   202202L <utility>
 __cpp_lib_unwrap_ref                                    201811L <functional>
 __cpp_lib_variant                                       202102L <variant>
 __cpp_lib_void_t                                        201411L <type_traits>
@@ -363,21 +376,31 @@ __cpp_lib_void_t                                        201411L <type_traits>
 # define __cpp_lib_adaptor_iterator_pair_constructor    202106L
 // # define __cpp_lib_allocate_at_least                    202106L
 // # define __cpp_lib_associative_heterogeneous_erasure    202110L
+// # define __cpp_lib_bind_back                            202202L
 # define __cpp_lib_byteswap                             202110L
+// # define __cpp_lib_constexpr_cmath                      202202L
 // # define __cpp_lib_constexpr_typeinfo                   202106L
 // # define __cpp_lib_invoke_r                             202106L
 # define __cpp_lib_is_scoped_enum                       202011L
 # define __cpp_lib_monadic_optional                     202110L
 // # define __cpp_lib_move_only_function                   202110L
 // # define __cpp_lib_out_ptr                              202106L
+// # define __cpp_lib_ranges_chunk                         202202L
+// # define __cpp_lib_ranges_chunk_by                      202202L
+// # define __cpp_lib_ranges_iota                          202202L
+// # define __cpp_lib_ranges_join_with                     202202L
+// # define __cpp_lib_ranges_slide                         202202L
 // # define __cpp_lib_ranges_starts_ends_with              202106L
+// # define __cpp_lib_ranges_to_container                  202202L
 // # define __cpp_lib_ranges_zip                           202110L
+// # define __cpp_lib_reference_from_temporary             202202L
 // # define __cpp_lib_spanstream                           202106L
 // # define __cpp_lib_stacktrace                           202011L
 // # define __cpp_lib_stdatomic_h                          202011L
 # define __cpp_lib_string_contains                      202011L
 # define __cpp_lib_string_resize_and_overwrite          202110L
 # define __cpp_lib_to_underlying                        202102L
+// # define __cpp_lib_unreachable                          202202L
 #endif
 
 // clang-format on

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
index 5a1017102239d..a641277c22077 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
@@ -16,6 +16,7 @@
 // Test the feature test macros defined by <cmath>
 
 /*  Constant                            Value
+    __cpp_lib_constexpr_cmath           202202L [C++2b]
     __cpp_lib_hypot                     201603L [C++17]
     __cpp_lib_interpolate               201902L [C++20]
     __cpp_lib_math_special_functions    201603L [C++17]
@@ -26,6 +27,10 @@
 
 #if TEST_STD_VER < 14
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_hypot
 #   error "__cpp_lib_hypot should not be defined before c++17"
 # endif
@@ -40,6 +45,10 @@
 
 #elif TEST_STD_VER == 14
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_hypot
 #   error "__cpp_lib_hypot should not be defined before c++17"
 # endif
@@ -54,6 +63,10 @@
 
 #elif TEST_STD_VER == 17
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_hypot
 #   error "__cpp_lib_hypot should be defined in c++17"
 # endif
@@ -80,6 +93,10 @@
 
 #elif TEST_STD_VER == 20
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_hypot
 #   error "__cpp_lib_hypot should be defined in c++20"
 # endif
@@ -109,6 +126,19 @@
 
 #elif TEST_STD_VER > 20
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_cmath
+#     error "__cpp_lib_constexpr_cmath should be defined in c++2b"
+#   endif
+#   if __cpp_lib_constexpr_cmath != 202202L
+#     error "__cpp_lib_constexpr_cmath should have the value 202202L in c++2b"
+#   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++2b"
 # endif

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.pass.cpp
new file mode 100644
index 0000000000000..7b6d56d5b02ff
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cstdlib.version.pass.cpp
@@ -0,0 +1,66 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// WARNING: This test was generated by generate_feature_test_macro_components.py
+// and should not be edited manually.
+//
+// clang-format off
+
+// <cstdlib>
+
+// Test the feature test macros defined by <cstdlib>
+
+/*  Constant                     Value
+    __cpp_lib_constexpr_cmath    202202L [C++2b]
+*/
+
+#include <cstdlib>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
+#elif TEST_STD_VER > 20
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_cmath
+#     error "__cpp_lib_constexpr_cmath should be defined in c++2b"
+#   endif
+#   if __cpp_lib_constexpr_cmath != 202202L
+#     error "__cpp_lib_constexpr_cmath should have the value 202202L in c++2b"
+#   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 > 20
+
+int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.pass.cpp
index ec2036141e873..ddc9a2e1cba74 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.pass.cpp
@@ -19,6 +19,7 @@
     __cpp_lib_allocator_traits_is_always_equal    201411L [C++17]
     __cpp_lib_erase_if                            202002L [C++20]
     __cpp_lib_nonmember_container_access          201411L [C++17]
+    __cpp_lib_ranges_to_container                 202202L [C++2b]
 */
 
 #include <deque>
@@ -38,6 +39,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -52,6 +57,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -72,6 +81,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -95,6 +108,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -118,6 +135,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.pass.cpp
index 2fc1725865183..ff9c1c5d4512e 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.pass.cpp
@@ -21,6 +21,7 @@
     __cpp_lib_incomplete_container_elements       201505L [C++17]
     __cpp_lib_list_remove_return_type             201806L [C++20]
     __cpp_lib_nonmember_container_access          201411L [C++17]
+    __cpp_lib_ranges_to_container                 202202L [C++2b]
 */
 
 #include <forward_list>
@@ -48,6 +49,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -70,6 +75,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -101,6 +110,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -138,6 +151,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -175,6 +192,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
index f8975101ee05a..fb31a376ae72c 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
@@ -16,6 +16,7 @@
 // Test the feature test macros defined by <functional>
 
 /*  Constant                           Value
+    __cpp_lib_bind_back                202202L [C++2b]
     __cpp_lib_bind_front               201907L [C++20]
     __cpp_lib_boyer_moore_searcher     201603L [C++17]
     __cpp_lib_constexpr_functional     201907L [C++20]
@@ -35,6 +36,10 @@
 
 #if TEST_STD_VER < 14
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -81,6 +86,10 @@
 
 #elif TEST_STD_VER == 14
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -133,6 +142,10 @@
 
 #elif TEST_STD_VER == 17
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -200,6 +213,10 @@
 
 #elif TEST_STD_VER == 20
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should be defined in c++20"
 # endif
@@ -285,6 +302,19 @@
 
 #elif TEST_STD_VER > 20
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_bind_back
+#     error "__cpp_lib_bind_back should be defined in c++2b"
+#   endif
+#   if __cpp_lib_bind_back != 202202L
+#     error "__cpp_lib_bind_back should have the value 202202L in c++2b"
+#   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++2b"
 # endif

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.pass.cpp
index 92d0c0f237917..1d9502fc78018 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.pass.cpp
@@ -21,6 +21,7 @@
     __cpp_lib_incomplete_container_elements       201505L [C++17]
     __cpp_lib_list_remove_return_type             201806L [C++20]
     __cpp_lib_nonmember_container_access          201411L [C++17]
+    __cpp_lib_ranges_to_container                 202202L [C++2b]
 */
 
 #include <list>
@@ -48,6 +49,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -70,6 +75,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -101,6 +110,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -138,6 +151,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -175,6 +192,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.pass.cpp
index a68273a9e7f2f..08cb14e2638c7 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.pass.cpp
@@ -23,6 +23,7 @@
     __cpp_lib_map_try_emplace                      201411L [C++17]
     __cpp_lib_node_extract                         201606L [C++17]
     __cpp_lib_nonmember_container_access           201411L [C++17]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
 */
 
 #include <map>
@@ -58,6 +59,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -91,6 +96,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -136,6 +145,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -184,6 +197,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -241,6 +258,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.pass.cpp
index afdb176bea437..c95eac49e45c0 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/numeric.version.pass.cpp
@@ -20,6 +20,7 @@
     __cpp_lib_gcd_lcm               201606L [C++17]
     __cpp_lib_interpolate           201902L [C++20]
     __cpp_lib_parallel_algorithm    201603L [C++17]
+    __cpp_lib_ranges_iota           202202L [C++2b]
 */
 
 #include <numeric>
@@ -43,6 +44,10 @@
 #   error "__cpp_lib_parallel_algorithm should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_constexpr_numeric
@@ -61,6 +66,10 @@
 #   error "__cpp_lib_parallel_algorithm should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifdef __cpp_lib_constexpr_numeric
@@ -91,6 +100,10 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_constexpr_numeric
@@ -127,6 +140,10 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_constexpr_numeric
@@ -163,6 +180,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_iota
+#     error "__cpp_lib_ranges_iota should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_iota != 202202L
+#     error "__cpp_lib_ranges_iota should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.pass.cpp
index 94a0a6b639ccd..772b94bb0cec7 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/queue.version.pass.cpp
@@ -17,6 +17,7 @@
 
 /*  Constant                                       Value
     __cpp_lib_adaptor_iterator_pair_constructor    202106L [C++2b]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
 */
 
 #include <queue>
@@ -28,24 +29,40 @@
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_adaptor_iterator_pair_constructor
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifdef __cpp_lib_adaptor_iterator_pair_constructor
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifdef __cpp_lib_adaptor_iterator_pair_constructor
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_adaptor_iterator_pair_constructor
@@ -55,6 +72,19 @@
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.pass.cpp
index 177d89f35ca24..3e889157ab6a0 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.pass.cpp
@@ -17,9 +17,13 @@
 
 // Test the feature test macros defined by <ranges>
 
-/*  Constant                Value
-    __cpp_lib_ranges        201811L [C++20]
-    __cpp_lib_ranges_zip    202110L [C++2b]
+/*  Constant                      Value
+    __cpp_lib_ranges              201811L [C++20]
+    __cpp_lib_ranges_chunk        202202L [C++2b]
+    __cpp_lib_ranges_chunk_by     202202L [C++2b]
+    __cpp_lib_ranges_join_with    202202L [C++2b]
+    __cpp_lib_ranges_slide        202202L [C++2b]
+    __cpp_lib_ranges_zip          202110L [C++2b]
 */
 
 #include <ranges>
@@ -31,6 +35,22 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -41,6 +61,22 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -51,6 +87,22 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -70,6 +122,22 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -89,6 +157,58 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_chunk
+#     error "__cpp_lib_ranges_chunk should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_chunk != 202202L
+#     error "__cpp_lib_ranges_chunk should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_chunk_by != 202202L
+#     error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_join_with != 202202L
+#     error "__cpp_lib_ranges_join_with should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_slide != 202202L
+#     error "__cpp_lib_ranges_slide should have the value 202202L in c++2b"
+#   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++2b"

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.pass.cpp
index 53825881afb90..d6a22cbc99a1d 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.pass.cpp
@@ -22,6 +22,7 @@
     __cpp_lib_generic_associative_lookup           201304L [C++14]
     __cpp_lib_node_extract                         201606L [C++17]
     __cpp_lib_nonmember_container_access           201411L [C++17]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
 */
 
 #include <set>
@@ -53,6 +54,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -82,6 +87,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -120,6 +129,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -161,6 +174,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -211,6 +228,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.pass.cpp
index d1b1103bc52e4..d72e7428fad21 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/stack.version.pass.cpp
@@ -17,6 +17,7 @@
 
 /*  Constant                                       Value
     __cpp_lib_adaptor_iterator_pair_constructor    202106L [C++2b]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
 */
 
 #include <stack>
@@ -28,24 +29,40 @@
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_adaptor_iterator_pair_constructor
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifdef __cpp_lib_adaptor_iterator_pair_constructor
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifdef __cpp_lib_adaptor_iterator_pair_constructor
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_adaptor_iterator_pair_constructor
@@ -55,6 +72,19 @@
 #   error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
index 21167f64294bf..d8d3c6d023e93 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
@@ -21,6 +21,7 @@
     __cpp_lib_constexpr_string                    201811L [C++20]
     __cpp_lib_erase_if                            202002L [C++20]
     __cpp_lib_nonmember_container_access          201411L [C++17]
+    __cpp_lib_ranges_to_container                 202202L [C++2b]
     __cpp_lib_starts_ends_with                    201711L [C++20]
     __cpp_lib_string_contains                     202011L [C++2b]
     __cpp_lib_string_resize_and_overwrite         202110L [C++2b]
@@ -54,6 +55,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_starts_ends_with
 #   error "__cpp_lib_starts_ends_with should not be defined before c++20"
 # endif
@@ -96,6 +101,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_starts_ends_with
 #   error "__cpp_lib_starts_ends_with should not be defined before c++20"
 # endif
@@ -147,6 +156,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_starts_ends_with
 #   error "__cpp_lib_starts_ends_with should not be defined before c++20"
 # endif
@@ -216,6 +229,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_starts_ends_with
 #   error "__cpp_lib_starts_ends_with should be defined in c++20"
 # endif
@@ -288,6 +305,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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++2b"
 # endif

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
index aeff3ad31a98e..537423f1a0f52 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
@@ -31,6 +31,7 @@
     __cpp_lib_is_scoped_enum                       202011L [C++2b]
     __cpp_lib_is_swappable                         201603L [C++17]
     __cpp_lib_logical_traits                       201510L [C++17]
+    __cpp_lib_reference_from_temporary             202202L [C++2b]
     __cpp_lib_remove_cvref                         201711L [C++20]
     __cpp_lib_result_of_sfinae                     201210L [C++14]
     __cpp_lib_transformation_trait_aliases         201304L [C++14]
@@ -104,6 +105,10 @@
 #   error "__cpp_lib_logical_traits should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
 # endif
@@ -199,6 +204,10 @@
 #   error "__cpp_lib_logical_traits should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
 # endif
@@ -318,6 +327,10 @@
 #   error "__cpp_lib_logical_traits should have the value 201510L in c++17"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
 # endif
@@ -470,6 +483,10 @@
 #   error "__cpp_lib_logical_traits should have the value 201510L in c++20"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should be defined in c++20"
 # endif
@@ -631,6 +648,19 @@
 #   error "__cpp_lib_logical_traits should have the value 201510L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_reference_from_temporary
+#     error "__cpp_lib_reference_from_temporary should be defined in c++2b"
+#   endif
+#   if __cpp_lib_reference_from_temporary != 202202L
+#     error "__cpp_lib_reference_from_temporary should have the value 202202L in c++2b"
+#   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++2b"
 # endif

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.pass.cpp
index e639dffdd5dd2..88b29d0c21544 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.pass.cpp
@@ -22,6 +22,7 @@
     __cpp_lib_generic_unordered_lookup             201811L [C++20]
     __cpp_lib_node_extract                         201606L [C++17]
     __cpp_lib_nonmember_container_access           201411L [C++17]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
     __cpp_lib_unordered_map_try_emplace            201411L [C++17]
 */
 
@@ -54,6 +55,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
@@ -84,6 +89,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
@@ -123,6 +132,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should be defined in c++17"
 # endif
@@ -171,6 +184,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_unordered_map_try_emplace
 #   error "__cpp_lib_unordered_map_try_emplace should be defined in c++20"
 # endif
@@ -228,6 +245,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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++2b"
 # endif

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.pass.cpp
index aed7c73d9e66a..f7f9750135b2a 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.pass.cpp
@@ -22,6 +22,7 @@
     __cpp_lib_generic_unordered_lookup             201811L [C++20]
     __cpp_lib_node_extract                         201606L [C++17]
     __cpp_lib_nonmember_container_access           201411L [C++17]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
 */
 
 #include <unordered_set>
@@ -53,6 +54,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -79,6 +84,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -114,6 +123,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -155,6 +168,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -205,6 +222,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
index 5d4f2c252a3f9..a58721a212a49 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
@@ -24,6 +24,7 @@
     __cpp_lib_ranges_zip                      202110L [C++2b]
     __cpp_lib_to_underlying                   202102L [C++2b]
     __cpp_lib_tuples_by_type                  201304L [C++14]
+    __cpp_lib_unreachable                     202202L [C++2b]
 */
 
 #include <utility>
@@ -63,6 +64,10 @@
 #   error "__cpp_lib_tuples_by_type should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_as_const
@@ -106,6 +111,10 @@
 #   error "__cpp_lib_tuples_by_type should have the value 201304L in c++14"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_as_const
@@ -152,6 +161,10 @@
 #   error "__cpp_lib_tuples_by_type should have the value 201304L in c++17"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_as_const
@@ -210,6 +223,10 @@
 #   error "__cpp_lib_tuples_by_type should have the value 201304L in c++20"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_as_const
@@ -280,6 +297,19 @@
 #   error "__cpp_lib_tuples_by_type should have the value 201304L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_unreachable
+#     error "__cpp_lib_unreachable should be defined in c++2b"
+#   endif
+#   if __cpp_lib_unreachable != 202202L
+#     error "__cpp_lib_unreachable should have the value 202202L in c++2b"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_unreachable
+#     error "__cpp_lib_unreachable should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #endif // TEST_STD_VER > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
index e4fed01f4a08c..c2df66b6c1fbe 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
@@ -21,6 +21,7 @@
     __cpp_lib_erase_if                            202002L [C++20]
     __cpp_lib_incomplete_container_elements       201505L [C++17]
     __cpp_lib_nonmember_container_access          201411L [C++17]
+    __cpp_lib_ranges_to_container                 202202L [C++2b]
 */
 
 #include <vector>
@@ -48,6 +49,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -70,6 +75,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -101,6 +110,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -144,6 +157,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 #elif TEST_STD_VER > 20
 
 # ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -187,6 +204,19 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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 > 20
 
 int main(int, char**) { return 0; }

diff  --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
index ad50bb1c769b3..b43ad5ddeb113 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
@@ -36,6 +36,7 @@
     __cpp_lib_atomic_value_initialization          201911L [C++20]
     __cpp_lib_atomic_wait                          201907L [C++20]
     __cpp_lib_barrier                              201907L [C++20]
+    __cpp_lib_bind_back                            202202L [C++2b]
     __cpp_lib_bind_front                           201907L [C++20]
     __cpp_lib_bit_cast                             201806L [C++20]
     __cpp_lib_bitops                               201907L [C++20]
@@ -51,6 +52,7 @@
     __cpp_lib_complex_udls                         201309L [C++14]
     __cpp_lib_concepts                             202002L [C++20]
     __cpp_lib_constexpr_algorithms                 201806L [C++20]
+    __cpp_lib_constexpr_cmath                      202202L [C++2b]
     __cpp_lib_constexpr_complex                    201711L [C++20]
     __cpp_lib_constexpr_dynamic_alloc              201907L [C++20]
     __cpp_lib_constexpr_functional                 201907L [C++20]
@@ -121,9 +123,16 @@
     __cpp_lib_polymorphic_allocator                201902L [C++20]
     __cpp_lib_quoted_string_io                     201304L [C++14]
     __cpp_lib_ranges                               201811L [C++20]
+    __cpp_lib_ranges_chunk                         202202L [C++2b]
+    __cpp_lib_ranges_chunk_by                      202202L [C++2b]
+    __cpp_lib_ranges_iota                          202202L [C++2b]
+    __cpp_lib_ranges_join_with                     202202L [C++2b]
+    __cpp_lib_ranges_slide                         202202L [C++2b]
     __cpp_lib_ranges_starts_ends_with              202106L [C++2b]
+    __cpp_lib_ranges_to_container                  202202L [C++2b]
     __cpp_lib_ranges_zip                           202110L [C++2b]
     __cpp_lib_raw_memory_algorithms                201606L [C++17]
+    __cpp_lib_reference_from_temporary             202202L [C++2b]
     __cpp_lib_remove_cvref                         201711L [C++20]
     __cpp_lib_result_of_sfinae                     201210L [C++14]
     __cpp_lib_robust_nonmodifying_seq_ops          201304L [C++14]
@@ -163,6 +172,7 @@
     __cpp_lib_type_trait_variable_templates        201510L [C++17]
     __cpp_lib_uncaught_exceptions                  201411L [C++17]
     __cpp_lib_unordered_map_try_emplace            201411L [C++17]
+    __cpp_lib_unreachable                          202202L [C++2b]
     __cpp_lib_unwrap_ref                           201811L [C++20]
     __cpp_lib_variant                              202102L [C++17]
     __cpp_lib_void_t                               201411L [C++17]
@@ -249,6 +259,10 @@
 #   error "__cpp_lib_barrier should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -309,6 +323,10 @@
 #   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_constexpr_complex
 #   error "__cpp_lib_constexpr_complex should not be defined before c++20"
 # endif
@@ -585,10 +603,34 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_starts_ends_with
 #   error "__cpp_lib_ranges_starts_ends_with should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -597,6 +639,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
 # endif
@@ -745,6 +791,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_unwrap_ref
 #   error "__cpp_lib_unwrap_ref should not be defined before c++20"
 # endif
@@ -835,6 +885,10 @@
 #   error "__cpp_lib_barrier should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -901,6 +955,10 @@
 #   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_constexpr_complex
 #   error "__cpp_lib_constexpr_complex should not be defined before c++20"
 # endif
@@ -1207,10 +1265,34 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_starts_ends_with
 #   error "__cpp_lib_ranges_starts_ends_with should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -1219,6 +1301,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
 # endif
@@ -1397,6 +1483,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_unwrap_ref
 #   error "__cpp_lib_unwrap_ref should not be defined before c++20"
 # endif
@@ -1508,6 +1598,10 @@
 #   error "__cpp_lib_barrier should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -1595,6 +1689,10 @@
 #   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_constexpr_complex
 #   error "__cpp_lib_constexpr_complex should not be defined before c++20"
 # endif
@@ -2006,10 +2104,34 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_starts_ends_with
 #   error "__cpp_lib_ranges_starts_ends_with should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -2021,6 +2143,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
 # endif
@@ -2241,6 +2367,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_unwrap_ref
 #   error "__cpp_lib_unwrap_ref should not be defined before c++20"
 # endif
@@ -2421,6 +2551,10 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_bind_back
+#   error "__cpp_lib_bind_back should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should be defined in c++20"
 # endif
@@ -2541,6 +2675,10 @@
 #   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_cmath
+#   error "__cpp_lib_constexpr_cmath should not be defined before c++2b"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_constexpr_complex
 #     error "__cpp_lib_constexpr_complex should be defined in c++20"
@@ -3114,10 +3252,34 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_ranges_chunk
+#   error "__cpp_lib_ranges_chunk should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+#   error "__cpp_lib_ranges_chunk_by should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_iota
+#   error "__cpp_lib_ranges_iota should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+#   error "__cpp_lib_ranges_join_with should not be defined before c++2b"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+#   error "__cpp_lib_ranges_slide should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_starts_ends_with
 #   error "__cpp_lib_ranges_starts_ends_with should not be defined before c++2b"
 # endif
 
+# ifdef __cpp_lib_ranges_to_container
+#   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
+# endif
+
 # ifdef __cpp_lib_ranges_zip
 #   error "__cpp_lib_ranges_zip should not be defined before c++2b"
 # endif
@@ -3129,6 +3291,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++20"
 # endif
 
+# ifdef __cpp_lib_reference_from_temporary
+#   error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_remove_cvref
 #   error "__cpp_lib_remove_cvref should be defined in c++20"
 # endif
@@ -3418,6 +3584,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++20"
 # endif
 
+# ifdef __cpp_lib_unreachable
+#   error "__cpp_lib_unreachable should not be defined before c++2b"
+# endif
+
 # ifndef __cpp_lib_unwrap_ref
 #   error "__cpp_lib_unwrap_ref should be defined in c++20"
 # endif
@@ -3622,6 +3792,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_bind_back
+#     error "__cpp_lib_bind_back should be defined in c++2b"
+#   endif
+#   if __cpp_lib_bind_back != 202202L
+#     error "__cpp_lib_bind_back should have the value 202202L in c++2b"
+#   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++2b"
 # endif
@@ -3745,6 +3928,19 @@
 #   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_cmath
+#     error "__cpp_lib_constexpr_cmath should be defined in c++2b"
+#   endif
+#   if __cpp_lib_constexpr_cmath != 202202L
+#     error "__cpp_lib_constexpr_cmath should have the value 202202L in c++2b"
+#   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
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_constexpr_complex
 #     error "__cpp_lib_constexpr_complex should be defined in c++2b"
@@ -4360,6 +4556,71 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_chunk
+#     error "__cpp_lib_ranges_chunk should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_chunk != 202202L
+#     error "__cpp_lib_ranges_chunk should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_chunk_by != 202202L
+#     error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_iota != 202202L
+#     error "__cpp_lib_ranges_iota should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_join_with != 202202L
+#     error "__cpp_lib_ranges_join_with should have the value 202202L in c++2b"
+#   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++2b"
+#   endif
+#   if __cpp_lib_ranges_slide != 202202L
+#     error "__cpp_lib_ranges_slide should have the value 202202L in c++2b"
+#   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++2b"
@@ -4373,6 +4634,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_ranges_to_container
+#     error "__cpp_lib_ranges_to_container should be defined in c++2b"
+#   endif
+#   if __cpp_lib_ranges_to_container != 202202L
+#     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
+#   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++2b"
@@ -4393,6 +4667,19 @@
 #   error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_reference_from_temporary
+#     error "__cpp_lib_reference_from_temporary should be defined in c++2b"
+#   endif
+#   if __cpp_lib_reference_from_temporary != 202202L
+#     error "__cpp_lib_reference_from_temporary should have the value 202202L in c++2b"
+#   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++2b"
 # endif
@@ -4718,6 +5005,19 @@
 #   error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++2b"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_unreachable
+#     error "__cpp_lib_unreachable should be defined in c++2b"
+#   endif
+#   if __cpp_lib_unreachable != 202202L
+#     error "__cpp_lib_unreachable should have the value 202202L in c++2b"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_unreachable
+#     error "__cpp_lib_unreachable should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_unwrap_ref
 #   error "__cpp_lib_unwrap_ref should be defined in c++2b"
 # endif

diff  --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index bab35787b87dd..90c9643ac99cb 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -148,6 +148,11 @@ def add_version_header(tc):
     "headers": ["barrier"],
     "test_suite_guard": "!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier)",
     "libcxx_guard": "!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier)",
+  }, {
+    "name": "__cpp_lib_bind_back",
+    "values": { "c++2b": 202202 },
+    "headers": ["functional"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_bind_front",
     "values": { "c++20": 201907 },
@@ -212,6 +217,11 @@ def add_version_header(tc):
     "name": "__cpp_lib_constexpr_algorithms",
     "values": { "c++20": 201806 },
     "headers": ["algorithm"],
+  }, {
+    "name": "__cpp_lib_constexpr_cmath",
+    "values": { "c++2b": 202202 },
+    "headers": ["cmath", "cstdlib"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_constexpr_complex",
     "values": { "c++20": 201711 },
@@ -519,11 +529,41 @@ def add_version_header(tc):
     "values": { "c++20": 201811 },
     "headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
     "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_ranges_chunk",
+    "values": { "c++2b": 202202 },
+    "headers": ["ranges"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_ranges_chunk_by",
+    "values": { "c++2b": 202202 },
+    "headers": ["ranges"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_ranges_iota",
+    "values": { "c++2b": 202202 },
+    "headers": ["numeric"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_ranges_join_with",
+    "values": { "c++2b": 202202 },
+    "headers": ["ranges"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_ranges_slide",
+    "values": { "c++2b": 202202 },
+    "headers": ["ranges"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_ranges_starts_ends_with",
     "values": { "c++2b": 202106 },
     "headers": ["algorithm"],
     "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_ranges_to_container",
+    "values": { "c++2b": 202202 },
+    "headers": ["deque", "forward_list", "list", "map", "priority_queue", "queue", "set", "stack", "string", "unordered_map", "unordered_set", "vector"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_ranges_zip",
     "values": { "c++2b": 202110 },
@@ -533,6 +573,11 @@ def add_version_header(tc):
     "name": "__cpp_lib_raw_memory_algorithms",
     "values": { "c++17": 201606 },
     "headers": ["memory"],
+  }, {
+    "name": "__cpp_lib_reference_from_temporary",
+    "values": { "c++2b": 202202 },
+    "headers": ["type_traits"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_remove_cvref",
     "values": { "c++20": 201711 },
@@ -695,6 +740,11 @@ def add_version_header(tc):
     "name": "__cpp_lib_unordered_map_try_emplace",
     "values": { "c++17": 201411 },
     "headers": ["unordered_map"],
+  }, {
+    "name": "__cpp_lib_unreachable",
+    "values": { "c++2b": 202202 },
+    "headers": ["utility"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_unwrap_ref",
     "values": { "c++20": 201811 },


        


More information about the libcxx-commits mailing list