[libcxx-commits] [libcxx] [libc++] Make forward_list constexpr as part of P3372R3 (PR #129435)
Peng Liu via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Jun 4 09:06:41 PDT 2025
https://github.com/winner245 updated https://github.com/llvm/llvm-project/pull/129435
>From b0088937dde8bd6bdec6ae79d9e0f7bdf7a13b90 Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Fri, 28 Feb 2025 17:23:27 -0500
Subject: [PATCH 1/7] Make forward_list constexpr as part of P3372R3
---
libcxx/docs/FeatureTestMacroTable.rst | 4 +
libcxx/include/__memory/allocation_guard.h | 20 +-
libcxx/include/forward_list | 471 +-
libcxx/include/version | 2 +
.../forwardlist/compare.three_way.pass.cpp | 7 +-
.../sequences/forwardlist/empty.pass.cpp | 13 +-
.../forwardlist.access/front.pass.cpp | 16 +-
.../forwardlist.cons/alloc.compile.fail.cpp | 13 +-
.../forwardlist.cons/alloc.pass.cpp | 13 +-
.../forwardlist.cons/assign_copy.pass.cpp | 13 +-
.../forwardlist.cons/assign_init.pass.cpp | 13 +-
.../forwardlist.cons/assign_move.pass.cpp | 13 +-
.../forwardlist.cons/assign_op_init.pass.cpp | 13 +-
.../forwardlist.cons/assign_range.pass.cpp | 13 +-
.../assign_size_value.pass.cpp | 13 +-
.../forwardlist.cons/copy.pass.cpp | 13 +-
.../forwardlist.cons/copy_alloc.pass.cpp | 13 +-
.../forwardlist.cons/default.pass.cpp | 13 +-
.../forwardlist.cons/from_range.pass.cpp | 19 +-
.../forwardlist.cons/init.pass.cpp | 13 +-
.../forwardlist.cons/init_alloc.pass.cpp | 13 +-
.../forwardlist.cons/move.pass.cpp | 13 +-
.../forwardlist.cons/move_alloc.pass.cpp | 13 +-
.../forwardlist.cons/range.pass.cpp | 13 +-
.../forwardlist.cons/range_alloc.pass.cpp | 13 +-
.../forwardlist.cons/size.pass.cpp | 4 +-
.../forwardlist.cons/size_value.pass.cpp | 13 +-
.../size_value_alloc.pass.cpp | 13 +-
.../forwardlist.erasure/erase.pass.cpp | 18 +-
.../forwardlist.erasure/erase_if.pass.cpp | 18 +-
.../forwardlist.iter/before_begin.pass.cpp | 17 +-
.../forwardlist.iter/iterators.pass.cpp | 27 +-
.../assign_range.pass.cpp | 19 +-
.../forwardlist.modifiers/clear.pass.cpp | 13 +-
.../emplace_after.pass.cpp | 13 +-
.../emplace_front.pass.cpp | 13 +-
.../erase_after_many.pass.cpp | 13 +-
.../erase_after_one.pass.cpp | 13 +-
.../insert_after_const.pass.cpp | 13 +-
.../insert_after_init.pass.cpp | 13 +-
.../insert_after_range.pass.cpp | 13 +-
.../insert_after_rv.pass.cpp | 13 +-
.../insert_after_size_value.pass.cpp | 13 +-
.../insert_range_after.pass.cpp | 23 +-
.../forwardlist.modifiers/pop_front.pass.cpp | 13 +-
.../prepend_range.pass.cpp | 19 +-
.../push_front_const.pass.cpp | 13 +-
.../push_front_exception_safety.pass.cpp | 2 +-
.../push_front_rv.pass.cpp | 13 +-
.../resize_size.pass.cpp | 17 +-
.../resize_size_value.pass.cpp | 15 +-
.../forwardlist.ops/merge_lvalue.pass.cpp | 17 +-
.../merge_lvalue_pred.pass.cpp | 17 +-
.../forwardlist.ops/merge_rvalue.pass.cpp | 17 +-
.../merge_rvalue_pred.pass.cpp | 17 +-
.../forwardlist.ops/remove.pass.cpp | 27 +-
.../forwardlist.ops/remove_if.pass.cpp | 25 +-
.../forwardlist.ops/reverse.pass.cpp | 19 +-
.../splice_after_flist.pass.cpp | 23 +-
.../forwardlist.ops/splice_after_one.pass.cpp | 25 +-
.../splice_after_range.pass.cpp | 27 +-
.../forwardlist.ops/unique.pass.cpp | 15 +-
.../forwardlist.ops/unique_pred.pass.cpp | 25 +-
.../forwardlist.spec/equal.pass.cpp | 17 +-
.../forwardlist.spec/member_swap.pass.cpp | 13 +-
.../forwardlist.spec/non_member_swap.pass.cpp | 13 +-
.../forwardlist.spec/relational.pass.cpp | 21 +-
.../forwardlist.spec/swap_noexcept.pass.cpp | 4 +-
.../forwardlist/get_allocator.pass.cpp | 13 +-
.../sequences/forwardlist/incomplete.pass.cpp | 17 +-
.../sequences/forwardlist/max_size.pass.cpp | 13 +-
.../version.version.compile.pass.cpp | 6650 +++++++++++++++++
libcxx/test/support/counting_predicates.h | 54 +-
.../generate_feature_test_macro_components.py | 5 +
74 files changed, 7777 insertions(+), 444 deletions(-)
mode change 100755 => 100644 libcxx/utils/generate_feature_test_macro_components.py
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index a89d4038785cd..aac4ee22989a1 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -418,7 +418,11 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_bitset`` ``202306L``
---------------------------------------------------------- -----------------
+<<<<<<< HEAD
``__cpp_lib_constexpr_algorithms`` ``202306L``
+=======
+ ``__cpp_lib_constexpr_forward_list`` ``202502L``
+>>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_new`` ``202406L``
---------------------------------------------------------- -----------------
diff --git a/libcxx/include/__memory/allocation_guard.h b/libcxx/include/__memory/allocation_guard.h
index 66edcd92ed618..2fc485f4ed0ed 100644
--- a/libcxx/include/__memory/allocation_guard.h
+++ b/libcxx/include/__memory/allocation_guard.h
@@ -49,24 +49,26 @@ struct __allocation_guard {
using _Size _LIBCPP_NODEBUG = typename allocator_traits<_Alloc>::size_type;
template <class _AllocT> // we perform the allocator conversion inside the constructor
- _LIBCPP_HIDE_FROM_ABI explicit __allocation_guard(_AllocT __alloc, _Size __n)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __allocation_guard(_AllocT __alloc, _Size __n)
: __alloc_(std::move(__alloc)),
__n_(__n),
__ptr_(allocator_traits<_Alloc>::allocate(__alloc_, __n_)) // initialization order is important
{}
- _LIBCPP_HIDE_FROM_ABI ~__allocation_guard() _NOEXCEPT { __destroy(); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI ~__allocation_guard() _NOEXCEPT { __destroy(); }
- _LIBCPP_HIDE_FROM_ABI __allocation_guard(const __allocation_guard&) = delete;
- _LIBCPP_HIDE_FROM_ABI __allocation_guard(__allocation_guard&& __other) _NOEXCEPT
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard(const __allocation_guard&) = delete;
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard(__allocation_guard&& __other) _NOEXCEPT
: __alloc_(std::move(__other.__alloc_)),
__n_(__other.__n_),
__ptr_(__other.__ptr_) {
__other.__ptr_ = nullptr;
}
- _LIBCPP_HIDE_FROM_ABI __allocation_guard& operator=(const __allocation_guard& __other) = delete;
- _LIBCPP_HIDE_FROM_ABI __allocation_guard& operator=(__allocation_guard&& __other) _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard&
+ operator=(const __allocation_guard& __other) = delete;
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard&
+ operator=(__allocation_guard&& __other) _NOEXCEPT {
if (std::addressof(__other) != this) {
__destroy();
@@ -79,17 +81,17 @@ struct __allocation_guard {
return *this;
}
- _LIBCPP_HIDE_FROM_ABI _Pointer
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI _Pointer
__release_ptr() _NOEXCEPT { // not called __release() because it's a keyword in objective-c++
_Pointer __tmp = __ptr_;
__ptr_ = nullptr;
return __tmp;
}
- _LIBCPP_HIDE_FROM_ABI _Pointer __get() const _NOEXCEPT { return __ptr_; }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI _Pointer __get() const _NOEXCEPT { return __ptr_; }
private:
- _LIBCPP_HIDE_FROM_ABI void __destroy() _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __destroy() _NOEXCEPT {
if (__ptr_ != nullptr) {
allocator_traits<_Alloc>::deallocate(__alloc_, __ptr_, __n_);
}
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index f264f567c9bb3..ec91a7bf7441f 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -295,8 +295,8 @@ struct __forward_node_traits {
"the _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB macro to silence this diagnostic.");
# endif
- _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
- return static_cast<__begin_node_pointer>(static_cast<__void_pointer>(__p));
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
+ return __p ? pointer_traits<__begin_node_pointer>::pointer_to(*__p) : static_cast<__begin_node_pointer>(nullptr);
}
};
@@ -307,11 +307,12 @@ struct __forward_begin_node {
pointer __next_;
- _LIBCPP_HIDE_FROM_ABI __forward_begin_node() : __next_(nullptr) {}
- _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_begin_node() : __next_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
- _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
- return static_cast<__begin_node_pointer>(__next_);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
+ return __next_ ? pointer_traits<__begin_node_pointer>::pointer_to(*__next_)
+ : static_cast<__begin_node_pointer>(nullptr);
}
};
@@ -335,18 +336,20 @@ private:
};
public:
- _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() { return __value_; }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() { return __value_; }
# else
private:
_ALIGNAS_TYPE(_Tp) char __buffer_[sizeof(_Tp)];
public:
- _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() { return *std::__launder(reinterpret_cast<_Tp*>(&__buffer_)); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() {
+ return *std::__launder(reinterpret_cast<_Tp*>(&__buffer_));
+ }
# endif
- _LIBCPP_HIDE_FROM_ABI explicit __forward_list_node(_NodePtr __next) : _Base(__next) {}
- _LIBCPP_HIDE_FROM_ABI ~__forward_list_node() {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_node(_NodePtr __next) : _Base(__next) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI ~__forward_list_node() {}
};
template <class _Tp, class _Alloc = allocator<_Tp> >
@@ -357,24 +360,27 @@ class __forward_list_const_iterator;
template <class _NodePtr>
class __forward_list_iterator {
typedef __forward_node_traits<_NodePtr> __traits;
+ typedef typename __traits::__node_type __node_type;
typedef typename __traits::__node_pointer __node_pointer;
typedef typename __traits::__begin_node_pointer __begin_node_pointer;
typedef typename __traits::__void_pointer __void_pointer;
__begin_node_pointer __ptr_;
- _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const {
- return static_cast<__begin_node_pointer>(static_cast<__void_pointer>(__ptr_));
- }
- _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return static_cast<__node_pointer>(static_cast<__void_pointer>(__ptr_));
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
+ return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(
+ const_cast<__node_type&>(static_cast<const __node_type&>(*__ptr_)))
+ : static_cast<__node_pointer>(nullptr);
}
- _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT : __ptr_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT
+ : __ptr_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26
_LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(__begin_node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
- _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(__node_pointer __p) _NOEXCEPT
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(__node_pointer __p) _NOEXCEPT
: __ptr_(__traits::__as_iter_node(__p)) {}
template <class, class>
@@ -389,27 +395,31 @@ public:
typedef typename pointer_traits<__node_pointer>::difference_type difference_type;
typedef __rebind_pointer_t<__node_pointer, value_type> pointer;
- _LIBCPP_HIDE_FROM_ABI __forward_list_iterator() _NOEXCEPT : __ptr_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_iterator() _NOEXCEPT : __ptr_(nullptr) {}
- _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __get_unsafe_node_pointer()->__get_value(); }
- _LIBCPP_HIDE_FROM_ABI pointer operator->() const {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI reference operator*() const {
+ return __get_unsafe_node_pointer()->__get_value();
+ }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI pointer operator->() const {
return pointer_traits<pointer>::pointer_to(__get_unsafe_node_pointer()->__get_value());
}
- _LIBCPP_HIDE_FROM_ABI __forward_list_iterator& operator++() {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_iterator& operator++() {
__ptr_ = __traits::__as_iter_node(__ptr_->__next_);
return *this;
}
- _LIBCPP_HIDE_FROM_ABI __forward_list_iterator operator++(int) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_iterator operator++(int) {
__forward_list_iterator __t(*this);
++(*this);
return __t;
}
- friend _LIBCPP_HIDE_FROM_ABI bool operator==(const __forward_list_iterator& __x, const __forward_list_iterator& __y) {
+ friend _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool
+ operator==(const __forward_list_iterator& __x, const __forward_list_iterator& __y) {
return __x.__ptr_ == __y.__ptr_;
}
- friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const __forward_list_iterator& __x, const __forward_list_iterator& __y) {
+ friend _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool
+ operator!=(const __forward_list_iterator& __x, const __forward_list_iterator& __y) {
return !(__x == __y);
}
};
@@ -427,17 +437,20 @@ class __forward_list_const_iterator {
__begin_node_pointer __ptr_;
- _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const {
- return static_cast<__begin_node_pointer>(static_cast<__void_pointer>(__ptr_));
- }
- _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return static_cast<__node_pointer>(static_cast<__void_pointer>(__ptr_));
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
+ return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(
+ const_cast<__node_type&>(static_cast<const __node_type&>(*__ptr_)))
+ : static_cast<__node_pointer>(nullptr);
}
- _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT : __ptr_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT
+ : __ptr_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26
_LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(__begin_node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26
_LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(__node_pointer __p) _NOEXCEPT
: __ptr_(__traits::__as_iter_node(__p)) {}
@@ -451,30 +464,32 @@ public:
typedef typename pointer_traits<__node_pointer>::difference_type difference_type;
typedef __rebind_pointer_t<__node_pointer, const value_type> pointer;
- _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator() _NOEXCEPT : __ptr_(nullptr) {}
- _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator(__forward_list_iterator<__node_pointer> __p) _NOEXCEPT
- : __ptr_(__p.__ptr_) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator() _NOEXCEPT : __ptr_(nullptr) {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ __forward_list_const_iterator(__forward_list_iterator<__node_pointer> __p) _NOEXCEPT : __ptr_(__p.__ptr_) {}
- _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __get_unsafe_node_pointer()->__get_value(); }
- _LIBCPP_HIDE_FROM_ABI pointer operator->() const {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI reference operator*() const {
+ return __get_unsafe_node_pointer()->__get_value();
+ }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI pointer operator->() const {
return pointer_traits<pointer>::pointer_to(__get_unsafe_node_pointer()->__get_value());
}
- _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator& operator++() {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator& operator++() {
__ptr_ = __traits::__as_iter_node(__ptr_->__next_);
return *this;
}
- _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator operator++(int) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_const_iterator operator++(int) {
__forward_list_const_iterator __t(*this);
++(*this);
return __t;
}
- friend _LIBCPP_HIDE_FROM_ABI bool
+ friend _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool
operator==(const __forward_list_const_iterator& __x, const __forward_list_const_iterator& __y) {
return __x.__ptr_ == __y.__ptr_;
}
- friend _LIBCPP_HIDE_FROM_ABI bool
+ friend _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool
operator!=(const __forward_list_const_iterator& __x, const __forward_list_const_iterator& __y) {
return !(__x == __y);
}
@@ -498,48 +513,51 @@ protected:
_LIBCPP_COMPRESSED_PAIR(__begin_node, __before_begin_, __node_allocator, __alloc_);
- _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() _NOEXCEPT {
return pointer_traits<__begin_node_pointer>::pointer_to(__before_begin_);
}
- _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() const _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() const _NOEXCEPT {
return pointer_traits<__begin_node_pointer>::pointer_to(const_cast<__begin_node&>(__before_begin_));
}
typedef __forward_list_iterator<__node_pointer> iterator;
typedef __forward_list_const_iterator<__node_pointer> const_iterator;
- _LIBCPP_HIDE_FROM_ABI __forward_list_base() _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __forward_list_base()
+ _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value)
: __before_begin_(__begin_node()) {}
- _LIBCPP_HIDE_FROM_ABI explicit __forward_list_base(const allocator_type& __a)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_base(const allocator_type& __a)
: __before_begin_(__begin_node()), __alloc_(__node_allocator(__a)) {}
- _LIBCPP_HIDE_FROM_ABI explicit __forward_list_base(const __node_allocator& __a)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_base(const __node_allocator& __a)
: __before_begin_(__begin_node()), __alloc_(__a) {}
public:
# ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
__forward_list_base(__forward_list_base&& __x) noexcept(is_nothrow_move_constructible<__node_allocator>::value);
- _LIBCPP_HIDE_FROM_ABI __forward_list_base(__forward_list_base&& __x, const allocator_type& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ __forward_list_base(__forward_list_base&& __x, const allocator_type& __a);
# endif // _LIBCPP_CXX03_LANG
__forward_list_base(const __forward_list_base&) = delete;
__forward_list_base& operator=(const __forward_list_base&) = delete;
- _LIBCPP_HIDE_FROM_ABI ~__forward_list_base();
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI ~__forward_list_base();
protected:
- _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __forward_list_base& __x) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __forward_list_base& __x) {
__copy_assign_alloc(__x, integral_constant<bool, __node_traits::propagate_on_container_copy_assignment::value>());
}
- _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__forward_list_base& __x)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__forward_list_base& __x)
_NOEXCEPT_(!__node_traits::propagate_on_container_move_assignment::value ||
is_nothrow_move_assignable<__node_allocator>::value) {
__move_assign_alloc(__x, integral_constant<bool, __node_traits::propagate_on_container_move_assignment::value>());
}
template <class... _Args>
- _LIBCPP_HIDE_FROM_ABI __node_pointer __create_node(__node_pointer __next, _Args&&... __args) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer
+ __create_node(__node_pointer __next, _Args&&... __args) {
__allocation_guard<__node_allocator> __guard(__alloc_, 1);
// Begin the lifetime of the node itself. Note that this doesn't begin the lifetime of the value
// held inside the node, since we need to use the allocator's construct() method for that.
@@ -554,7 +572,7 @@ protected:
return __guard.__release_ptr();
}
- _LIBCPP_HIDE_FROM_ABI void __delete_node(__node_pointer __node) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __delete_node(__node_pointer __node) {
// For the same reason as above, we use the allocator's destroy() method for the value_type,
// but not for the node itself.
__node_traits::destroy(__alloc_, std::addressof(__node->__get_value()));
@@ -563,7 +581,7 @@ protected:
}
public:
- _LIBCPP_HIDE_FROM_ABI void swap(__forward_list_base& __x)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void swap(__forward_list_base& __x)
# if _LIBCPP_STD_VER >= 14
_NOEXCEPT;
# else
@@ -571,18 +589,21 @@ public:
# endif
protected:
- _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT;
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT;
private:
- _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __forward_list_base&, false_type) {}
- _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __forward_list_base& __x, true_type) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __forward_list_base&, false_type) {
+ }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
+ __copy_assign_alloc(const __forward_list_base& __x, true_type) {
if (__alloc_ != __x.__alloc_)
clear();
__alloc_ = __x.__alloc_;
}
- _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__forward_list_base&, false_type) _NOEXCEPT {}
- _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__forward_list_base& __x, true_type)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
+ __move_assign_alloc(__forward_list_base&, false_type) _NOEXCEPT {}
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__forward_list_base& __x, true_type)
_NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value) {
__alloc_ = std::move(__x.__alloc_);
}
@@ -591,14 +612,15 @@ private:
# ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Alloc>
-inline __forward_list_base<_Tp, _Alloc>::__forward_list_base(__forward_list_base&& __x) noexcept(
- is_nothrow_move_constructible<__node_allocator>::value)
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline __forward_list_base<_Tp, _Alloc>::__forward_list_base(
+ __forward_list_base&& __x) noexcept(is_nothrow_move_constructible<__node_allocator>::value)
: __before_begin_(std::move(__x.__before_begin_)), __alloc_(std::move(__x.__alloc_)) {
__x.__before_begin()->__next_ = nullptr;
}
template <class _Tp, class _Alloc>
-inline __forward_list_base<_Tp, _Alloc>::__forward_list_base(__forward_list_base&& __x, const allocator_type& __a)
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline __forward_list_base<_Tp, _Alloc>::__forward_list_base(
+ __forward_list_base&& __x, const allocator_type& __a)
: __before_begin_(__begin_node()), __alloc_(__node_allocator(__a)) {
if (__alloc_ == __x.__alloc_) {
__before_begin()->__next_ = __x.__before_begin()->__next_;
@@ -609,12 +631,12 @@ inline __forward_list_base<_Tp, _Alloc>::__forward_list_base(__forward_list_base
# endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Alloc>
-__forward_list_base<_Tp, _Alloc>::~__forward_list_base() {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 __forward_list_base<_Tp, _Alloc>::~__forward_list_base() {
clear();
}
template <class _Tp, class _Alloc>
-inline void __forward_list_base<_Tp, _Alloc>::swap(__forward_list_base& __x)
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline void __forward_list_base<_Tp, _Alloc>::swap(__forward_list_base& __x)
# if _LIBCPP_STD_VER >= 14
_NOEXCEPT
# else
@@ -627,7 +649,7 @@ inline void __forward_list_base<_Tp, _Alloc>::swap(__forward_list_base& __x)
}
template <class _Tp, class _Alloc>
-void __forward_list_base<_Tp, _Alloc>::clear() _NOEXCEPT {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void __forward_list_base<_Tp, _Alloc>::clear() _NOEXCEPT {
for (__node_pointer __p = __before_begin()->__next_; __p != nullptr;) {
__node_pointer __next = __p->__next_;
__delete_node(__p);
@@ -672,105 +694,123 @@ public:
typedef void __remove_return_type;
# endif
- _LIBCPP_HIDE_FROM_ABI forward_list() _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) {
- } // = default;
- _LIBCPP_HIDE_FROM_ABI explicit forward_list(const allocator_type& __a);
- _LIBCPP_HIDE_FROM_ABI explicit forward_list(size_type __n);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list()
+ _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) {} // = default;
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit forward_list(const allocator_type& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit forward_list(size_type __n);
# if _LIBCPP_STD_VER >= 14
- _LIBCPP_HIDE_FROM_ABI explicit forward_list(size_type __n, const allocator_type& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit forward_list(size_type __n, const allocator_type& __a);
# endif
- _LIBCPP_HIDE_FROM_ABI forward_list(size_type __n, const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list(size_type __n, const value_type& __v);
template <__enable_if_t<__is_allocator<_Alloc>::value, int> = 0>
- _LIBCPP_HIDE_FROM_ABI forward_list(size_type __n, const value_type& __v, const allocator_type& __a) : __base(__a) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(size_type __n, const value_type& __v, const allocator_type& __a)
+ : __base(__a) {
insert_after(cbefore_begin(), __n, __v);
}
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> = 0>
- _LIBCPP_HIDE_FROM_ABI forward_list(_InputIterator __f, _InputIterator __l);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list(_InputIterator __f, _InputIterator __l);
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> = 0>
- _LIBCPP_HIDE_FROM_ABI forward_list(_InputIterator __f, _InputIterator __l, const allocator_type& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(_InputIterator __f, _InputIterator __l, const allocator_type& __a);
# if _LIBCPP_STD_VER >= 23
template <_ContainerCompatibleRange<_Tp> _Range>
- _LIBCPP_HIDE_FROM_ABI forward_list(from_range_t, _Range&& __range, const allocator_type& __a = allocator_type())
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(from_range_t, _Range&& __range, const allocator_type& __a = allocator_type())
: __base(__a) {
prepend_range(std::forward<_Range>(__range));
}
# endif
- _LIBCPP_HIDE_FROM_ABI forward_list(const forward_list& __x);
- _LIBCPP_HIDE_FROM_ABI forward_list(const forward_list& __x, const __type_identity_t<allocator_type>& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list(const forward_list& __x);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(const forward_list& __x, const __type_identity_t<allocator_type>& __a);
- _LIBCPP_HIDE_FROM_ABI forward_list& operator=(const forward_list& __x);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list& operator=(const forward_list& __x);
# ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI forward_list(forward_list&& __x) noexcept(is_nothrow_move_constructible<__base>::value)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(forward_list&& __x) noexcept(is_nothrow_move_constructible<__base>::value)
: __base(std::move(__x)) {}
- _LIBCPP_HIDE_FROM_ABI forward_list(forward_list&& __x, const __type_identity_t<allocator_type>& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(forward_list&& __x, const __type_identity_t<allocator_type>& __a);
- _LIBCPP_HIDE_FROM_ABI forward_list(initializer_list<value_type> __il);
- _LIBCPP_HIDE_FROM_ABI forward_list(initializer_list<value_type> __il, const allocator_type& __a);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list(initializer_list<value_type> __il);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI
+ forward_list(initializer_list<value_type> __il, const allocator_type& __a);
- _LIBCPP_HIDE_FROM_ABI forward_list& operator=(forward_list&& __x) noexcept(
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list& operator=(forward_list&& __x) noexcept(
(__node_traits::propagate_on_container_move_assignment::value &&
is_nothrow_move_assignable<allocator_type>::value) ||
allocator_traits<allocator_type>::is_always_equal::value);
- _LIBCPP_HIDE_FROM_ABI forward_list& operator=(initializer_list<value_type> __il);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list& operator=(initializer_list<value_type> __il);
- _LIBCPP_HIDE_FROM_ABI void assign(initializer_list<value_type> __il);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void assign(initializer_list<value_type> __il);
# endif // _LIBCPP_CXX03_LANG
// ~forward_list() = default;
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> = 0>
- void _LIBCPP_HIDE_FROM_ABI assign(_InputIterator __f, _InputIterator __l);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 void _LIBCPP_HIDE_FROM_ABI assign(_InputIterator __f, _InputIterator __l);
# if _LIBCPP_STD_VER >= 23
template <_ContainerCompatibleRange<_Tp> _Range>
- _LIBCPP_HIDE_FROM_ABI void assign_range(_Range&& __range) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void assign_range(_Range&& __range) {
__assign_with_sentinel(ranges::begin(__range), ranges::end(__range));
}
# endif
- _LIBCPP_HIDE_FROM_ABI void assign(size_type __n, const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void assign(size_type __n, const value_type& __v);
- _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT { return allocator_type(this->__alloc_); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const _NOEXCEPT {
+ return allocator_type(this->__alloc_);
+ }
- _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT { return iterator(__base::__before_begin()->__next_); }
- _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT {
+ return iterator(__base::__before_begin()->__next_);
+ }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT {
return const_iterator(__base::__before_begin()->__next_);
}
- _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return iterator(nullptr); }
- _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT { return const_iterator(nullptr); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT { return iterator(nullptr); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT {
+ return const_iterator(nullptr);
+ }
- _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const _NOEXCEPT {
return const_iterator(__base::__before_begin()->__next_);
}
- _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT { return const_iterator(nullptr); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_iterator cend() const _NOEXCEPT {
+ return const_iterator(nullptr);
+ }
- _LIBCPP_HIDE_FROM_ABI iterator before_begin() _NOEXCEPT { return iterator(__base::__before_begin()); }
- _LIBCPP_HIDE_FROM_ABI const_iterator before_begin() const _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator before_begin() _NOEXCEPT {
+ return iterator(__base::__before_begin());
+ }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_iterator before_begin() const _NOEXCEPT {
return const_iterator(__base::__before_begin());
}
- _LIBCPP_HIDE_FROM_ABI const_iterator cbefore_begin() const _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_iterator cbefore_begin() const _NOEXCEPT {
return const_iterator(__base::__before_begin());
}
- [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT {
+ [[__nodiscard__]] _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT {
return __base::__before_begin()->__next_ == nullptr;
}
- _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT {
return std::min<size_type>(__node_traits::max_size(this->__alloc_), numeric_limits<difference_type>::max());
}
- _LIBCPP_HIDE_FROM_ABI reference front() {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI reference front() {
_LIBCPP_ASSERT_NON_NULL(!empty(), "forward_list::front called on an empty list");
return __base::__before_begin()->__next_->__get_value();
}
- _LIBCPP_HIDE_FROM_ABI const_reference front() const {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_reference front() const {
_LIBCPP_ASSERT_NON_NULL(!empty(), "forward_list::front called on an empty list");
return __base::__before_begin()->__next_->__get_value();
}
@@ -778,52 +818,57 @@ public:
# ifndef _LIBCPP_CXX03_LANG
# if _LIBCPP_STD_VER >= 17
template <class... _Args>
- _LIBCPP_HIDE_FROM_ABI reference emplace_front(_Args&&... __args);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI reference emplace_front(_Args&&... __args);
# else
template <class... _Args>
- _LIBCPP_HIDE_FROM_ABI void emplace_front(_Args&&... __args);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void emplace_front(_Args&&... __args);
# endif
- _LIBCPP_HIDE_FROM_ABI void push_front(value_type&& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void push_front(value_type&& __v);
# endif // _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI void push_front(const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void push_front(const value_type& __v);
# if _LIBCPP_STD_VER >= 23
template <_ContainerCompatibleRange<_Tp> _Range>
- _LIBCPP_HIDE_FROM_ABI void prepend_range(_Range&& __range) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void prepend_range(_Range&& __range) {
insert_range_after(cbefore_begin(), std::forward<_Range>(__range));
}
# endif
- _LIBCPP_HIDE_FROM_ABI void pop_front();
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void pop_front();
# ifndef _LIBCPP_CXX03_LANG
template <class... _Args>
- _LIBCPP_HIDE_FROM_ABI iterator emplace_after(const_iterator __p, _Args&&... __args);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator emplace_after(const_iterator __p, _Args&&... __args);
- _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, value_type&& __v);
- _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, initializer_list<value_type> __il) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, value_type&& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator
+ insert_after(const_iterator __p, initializer_list<value_type> __il) {
return insert_after(__p, __il.begin(), __il.end());
}
# endif // _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, const value_type& __v);
- _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, size_type __n, const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator
+ insert_after(const_iterator __p, size_type __n, const value_type& __v);
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> = 0>
- _LIBCPP_HIDE_FROM_ABI iterator insert_after(const_iterator __p, _InputIterator __f, _InputIterator __l);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator
+ insert_after(const_iterator __p, _InputIterator __f, _InputIterator __l);
# if _LIBCPP_STD_VER >= 23
template <_ContainerCompatibleRange<_Tp> _Range>
- _LIBCPP_HIDE_FROM_ABI iterator insert_range_after(const_iterator __position, _Range&& __range) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator
+ insert_range_after(const_iterator __position, _Range&& __range) {
return __insert_after_with_sentinel(__position, ranges::begin(__range), ranges::end(__range));
}
# endif
template <class _InputIterator, class _Sentinel>
- _LIBCPP_HIDE_FROM_ABI iterator __insert_after_with_sentinel(const_iterator __p, _InputIterator __f, _Sentinel __l);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator
+ __insert_after_with_sentinel(const_iterator __p, _InputIterator __f, _Sentinel __l);
- _LIBCPP_HIDE_FROM_ABI iterator erase_after(const_iterator __p);
- _LIBCPP_HIDE_FROM_ABI iterator erase_after(const_iterator __f, const_iterator __l);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator erase_after(const_iterator __p);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI iterator erase_after(const_iterator __f, const_iterator __l);
- _LIBCPP_HIDE_FROM_ABI void swap(forward_list& __x)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void swap(forward_list& __x)
# if _LIBCPP_STD_VER >= 14
_NOEXCEPT
# else
@@ -833,55 +878,59 @@ public:
__base::swap(__x);
}
- _LIBCPP_HIDE_FROM_ABI void resize(size_type __n);
- _LIBCPP_HIDE_FROM_ABI void resize(size_type __n, const value_type& __v);
- _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT { __base::clear(); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void resize(size_type __n);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void resize(size_type __n, const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT { __base::clear(); }
- _LIBCPP_HIDE_FROM_ABI void splice_after(const_iterator __p, forward_list&& __x);
- _LIBCPP_HIDE_FROM_ABI void splice_after(const_iterator __p, forward_list&& __x, const_iterator __i);
- _LIBCPP_HIDE_FROM_ABI void
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void splice_after(const_iterator __p, forward_list&& __x);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
+ splice_after(const_iterator __p, forward_list&& __x, const_iterator __i);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
splice_after(const_iterator __p, forward_list&& __x, const_iterator __f, const_iterator __l);
- _LIBCPP_HIDE_FROM_ABI void splice_after(const_iterator __p, forward_list& __x);
- _LIBCPP_HIDE_FROM_ABI void splice_after(const_iterator __p, forward_list& __x, const_iterator __i);
- _LIBCPP_HIDE_FROM_ABI void
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void splice_after(const_iterator __p, forward_list& __x);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
+ splice_after(const_iterator __p, forward_list& __x, const_iterator __i);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
splice_after(const_iterator __p, forward_list& __x, const_iterator __f, const_iterator __l);
- _LIBCPP_HIDE_FROM_ABI __remove_return_type remove(const value_type& __v);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __remove_return_type remove(const value_type& __v);
template <class _Predicate>
- _LIBCPP_HIDE_FROM_ABI __remove_return_type remove_if(_Predicate __pred);
- _LIBCPP_HIDE_FROM_ABI __remove_return_type unique() { return unique(__equal_to()); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __remove_return_type remove_if(_Predicate __pred);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __remove_return_type unique() { return unique(__equal_to()); }
template <class _BinaryPredicate>
- _LIBCPP_HIDE_FROM_ABI __remove_return_type unique(_BinaryPredicate __binary_pred);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __remove_return_type unique(_BinaryPredicate __binary_pred);
# ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI void merge(forward_list&& __x) { merge(__x, __less<>()); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void merge(forward_list&& __x) { merge(__x, __less<>()); }
template <class _Compare>
- _LIBCPP_HIDE_FROM_ABI void merge(forward_list&& __x, _Compare __comp) {
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void merge(forward_list&& __x, _Compare __comp) {
merge(__x, std::move(__comp));
}
# endif // _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI void merge(forward_list& __x) { merge(__x, __less<>()); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void merge(forward_list& __x) { merge(__x, __less<>()); }
template <class _Compare>
- _LIBCPP_HIDE_FROM_ABI void merge(forward_list& __x, _Compare __comp);
- _LIBCPP_HIDE_FROM_ABI void sort() { sort(__less<>()); }
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void merge(forward_list& __x, _Compare __comp);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void sort() { sort(__less<>()); }
template <class _Compare>
- _LIBCPP_HIDE_FROM_ABI void sort(_Compare __comp);
- _LIBCPP_HIDE_FROM_ABI void reverse() _NOEXCEPT;
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void sort(_Compare __comp);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void reverse() _NOEXCEPT;
private:
# ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_HIDE_FROM_ABI void __move_assign(forward_list& __x, true_type)
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __move_assign(forward_list& __x, true_type)
_NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value);
- _LIBCPP_HIDE_FROM_ABI void __move_assign(forward_list& __x, false_type);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __move_assign(forward_list& __x, false_type);
# endif // _LIBCPP_CXX03_LANG
template <class _Iter, class _Sent>
- _LIBCPP_HIDE_FROM_ABI void __assign_with_sentinel(_Iter __f, _Sent __l);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void __assign_with_sentinel(_Iter __f, _Sent __l);
template <class _Compare>
- static _LIBCPP_HIDE_FROM_ABI __node_pointer __merge(__node_pointer __f1, __node_pointer __f2, _Compare& __comp);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 static _LIBCPP_HIDE_FROM_ABI __node_pointer
+ __merge(__node_pointer __f1, __node_pointer __f2, _Compare& __comp);
// TODO: Make this _LIBCPP_HIDE_FROM_ABI
template <class _Compare>
- static _LIBCPP_HIDDEN __node_pointer __sort(__node_pointer __f, difference_type __sz, _Compare& __comp);
+ _LIBCPP_CONSTEXPR_SINCE_CXX26 static _LIBCPP_HIDDEN __node_pointer
+ __sort(__node_pointer __f, difference_type __sz, _Compare& __comp);
};
# if _LIBCPP_STD_VER >= 17
@@ -906,10 +955,10 @@ forward_list(from_range_t, _Range&&, _Alloc = _Alloc()) -> forward_list<ranges::
# endif
template <class _Tp, class _Alloc>
-inline forward_list<_Tp, _Alloc>::forward_list(const allocator_type& __a) : __base(__a) {}
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline forward_list<_Tp, _Alloc>::forward_list(const allocator_type& __a) : __base(__a) {}
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>::forward_list(size_type __n) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type __n) {
if (__n > 0) {
for (__begin_node_pointer __p = __base::__before_begin(); __n > 0; --__n, __p = __p->__next_as_begin()) {
__p->__next_ = this->__create_node(/* next = */ nullptr);
@@ -919,7 +968,8 @@ forward_list<_Tp, _Alloc>::forward_list(size_type __n) {
# if _LIBCPP_STD_VER >= 14
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>::forward_list(size_type __n, const allocator_type& __base_alloc) : __base(__base_alloc) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type __n, const allocator_type& __base_alloc)
+ : __base(__base_alloc) {
if (__n > 0) {
for (__begin_node_pointer __p = __base::__before_begin(); __n > 0; --__n, __p = __p->__next_as_begin()) {
__p->__next_ = this->__create_node(/* next = */ nullptr);
@@ -929,37 +979,39 @@ forward_list<_Tp, _Alloc>::forward_list(size_type __n, const allocator_type& __b
# endif
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>::forward_list(size_type __n, const value_type& __v) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type __n, const value_type& __v) {
insert_after(cbefore_begin(), __n, __v);
}
template <class _Tp, class _Alloc>
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> >
-forward_list<_Tp, _Alloc>::forward_list(_InputIterator __f, _InputIterator __l) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(_InputIterator __f, _InputIterator __l) {
insert_after(cbefore_begin(), __f, __l);
}
template <class _Tp, class _Alloc>
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> >
+_LIBCPP_CONSTEXPR_SINCE_CXX26
forward_list<_Tp, _Alloc>::forward_list(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
: __base(__a) {
insert_after(cbefore_begin(), __f, __l);
}
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>::forward_list(const forward_list& __x)
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(const forward_list& __x)
: __base(__node_traits::select_on_container_copy_construction(__x.__alloc_)) {
insert_after(cbefore_begin(), __x.begin(), __x.end());
}
template <class _Tp, class _Alloc>
+_LIBCPP_CONSTEXPR_SINCE_CXX26
forward_list<_Tp, _Alloc>::forward_list(const forward_list& __x, const __type_identity_t<allocator_type>& __a)
: __base(__a) {
insert_after(cbefore_begin(), __x.begin(), __x.end());
}
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(const forward_list& __x) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(const forward_list& __x) {
if (this != std::addressof(__x)) {
__base::__copy_assign_alloc(__x);
assign(__x.begin(), __x.end());
@@ -969,6 +1021,7 @@ forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(const forward_li
# ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Alloc>
+_LIBCPP_CONSTEXPR_SINCE_CXX26
forward_list<_Tp, _Alloc>::forward_list(forward_list&& __x, const __type_identity_t<allocator_type>& __a)
: __base(std::move(__x), __a) {
if (this->__alloc_ != __x.__alloc_) {
@@ -978,17 +1031,19 @@ forward_list<_Tp, _Alloc>::forward_list(forward_list&& __x, const __type_identit
}
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>::forward_list(initializer_list<value_type> __il) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(initializer_list<value_type> __il) {
insert_after(cbefore_begin(), __il.begin(), __il.end());
}
template <class _Tp, class _Alloc>
-forward_list<_Tp, _Alloc>::forward_list(initializer_list<value_type> __il, const allocator_type& __a) : __base(__a) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26
+forward_list<_Tp, _Alloc>::forward_list(initializer_list<value_type> __il, const allocator_type& __a)
+ : __base(__a) {
insert_after(cbefore_begin(), __il.begin(), __il.end());
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, true_type)
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, true_type)
_NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value) {
clear();
__base::__move_assign_alloc(__x);
@@ -997,7 +1052,7 @@ void forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, true_type)
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, false_type) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, false_type) {
if (this->__alloc_ == __x.__alloc_)
__move_assign(__x, true_type());
else {
@@ -1007,7 +1062,8 @@ void forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, false_type) {
}
template <class _Tp, class _Alloc>
-inline forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(forward_list&& __x) noexcept(
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline forward_list<_Tp, _Alloc>&
+forward_list<_Tp, _Alloc>::operator=(forward_list&& __x) noexcept(
(__node_traits::propagate_on_container_move_assignment::value &&
is_nothrow_move_assignable<allocator_type>::value) ||
allocator_traits<allocator_type>::is_always_equal::value) {
@@ -1016,7 +1072,8 @@ inline forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(forward_l
}
template <class _Tp, class _Alloc>
-inline forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(initializer_list<value_type> __il) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline forward_list<_Tp, _Alloc>&
+forward_list<_Tp, _Alloc>::operator=(initializer_list<value_type> __il) {
assign(__il.begin(), __il.end());
return *this;
}
@@ -1025,13 +1082,14 @@ inline forward_list<_Tp, _Alloc>& forward_list<_Tp, _Alloc>::operator=(initializ
template <class _Tp, class _Alloc>
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> >
-void forward_list<_Tp, _Alloc>::assign(_InputIterator __f, _InputIterator __l) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::assign(_InputIterator __f, _InputIterator __l) {
__assign_with_sentinel(__f, __l);
}
template <class _Tp, class _Alloc>
template <class _Iter, class _Sent>
-_LIBCPP_HIDE_FROM_ABI void forward_list<_Tp, _Alloc>::__assign_with_sentinel(_Iter __f, _Sent __l) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void
+forward_list<_Tp, _Alloc>::__assign_with_sentinel(_Iter __f, _Sent __l) {
iterator __i = before_begin();
iterator __j = std::next(__i);
iterator __e = end();
@@ -1044,7 +1102,7 @@ _LIBCPP_HIDE_FROM_ABI void forward_list<_Tp, _Alloc>::__assign_with_sentinel(_It
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::assign(size_type __n, const value_type& __v) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::assign(size_type __n, const value_type& __v) {
iterator __i = before_begin();
iterator __j = std::next(__i);
iterator __e = end();
@@ -1059,18 +1117,19 @@ void forward_list<_Tp, _Alloc>::assign(size_type __n, const value_type& __v) {
# ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Alloc>
-inline void forward_list<_Tp, _Alloc>::assign(initializer_list<value_type> __il) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline void forward_list<_Tp, _Alloc>::assign(initializer_list<value_type> __il) {
assign(__il.begin(), __il.end());
}
template <class _Tp, class _Alloc>
template <class... _Args>
+_LIBCPP_CONSTEXPR_SINCE_CXX26
# if _LIBCPP_STD_VER >= 17
-typename forward_list<_Tp, _Alloc>::reference
+ typename forward_list<_Tp, _Alloc>::reference
# else
-void
+ void
# endif
-forward_list<_Tp, _Alloc>::emplace_front(_Args&&... __args) {
+ forward_list<_Tp, _Alloc>::emplace_front(_Args&&... __args) {
__base::__before_begin()->__next_ =
this->__create_node(/* next = */ __base::__before_begin()->__next_, std::forward<_Args>(__args)...);
# if _LIBCPP_STD_VER >= 17
@@ -1079,7 +1138,7 @@ forward_list<_Tp, _Alloc>::emplace_front(_Args&&... __args) {
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::push_front(value_type&& __v) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::push_front(value_type&& __v) {
__base::__before_begin()->__next_ =
this->__create_node(/* next = */ __base::__before_begin()->__next_, std::move(__v));
}
@@ -1087,12 +1146,12 @@ void forward_list<_Tp, _Alloc>::push_front(value_type&& __v) {
# endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::push_front(const value_type& __v) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::push_front(const value_type& __v) {
__base::__before_begin()->__next_ = this->__create_node(/* next = */ __base::__before_begin()->__next_, __v);
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::pop_front() {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::pop_front() {
_LIBCPP_ASSERT_NON_NULL(!empty(), "forward_list::pop_front called on an empty list");
__node_pointer __p = __base::__before_begin()->__next_;
__base::__before_begin()->__next_ = __p->__next_;
@@ -1103,7 +1162,7 @@ void forward_list<_Tp, _Alloc>::pop_front() {
template <class _Tp, class _Alloc>
template <class... _Args>
-typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::emplace_after(const_iterator __p, _Args&&... __args) {
__begin_node_pointer const __r = __p.__get_begin();
__r->__next_ = this->__create_node(/* next = */ __r->__next_, std::forward<_Args>(__args)...);
@@ -1111,7 +1170,7 @@ forward_list<_Tp, _Alloc>::emplace_after(const_iterator __p, _Args&&... __args)
}
template <class _Tp, class _Alloc>
-typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, value_type&& __v) {
__begin_node_pointer const __r = __p.__get_begin();
__r->__next_ = this->__create_node(/* next = */ __r->__next_, std::move(__v));
@@ -1121,7 +1180,7 @@ forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, value_type&& __v) {
# endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Alloc>
-typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, const value_type& __v) {
__begin_node_pointer const __r = __p.__get_begin();
__r->__next_ = this->__create_node(/* next = */ __r->__next_, __v);
@@ -1129,7 +1188,7 @@ forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, const value_type& __
}
template <class _Tp, class _Alloc>
-typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, size_type __n, const value_type& __v) {
__begin_node_pointer __r = __p.__get_begin();
if (__n > 0) {
@@ -1153,21 +1212,22 @@ forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, size_type __n, const
# endif // _LIBCPP_HAS_EXCEPTIONS
__last->__next_ = __r->__next_;
__r->__next_ = __first;
- __r = static_cast<__begin_node_pointer>(__last);
+ __r = __forward_node_traits<__node_pointer>::__as_iter_node(__last);
+ // __r = static_cast<__begin_node_pointer>(__last);
}
return iterator(__r);
}
template <class _Tp, class _Alloc>
template <class _InputIterator, __enable_if_t<__has_input_iterator_category<_InputIterator>::value, int> >
-typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, _InputIterator __f, _InputIterator __l) {
return __insert_after_with_sentinel(__p, std::move(__f), std::move(__l));
}
template <class _Tp, class _Alloc>
template <class _InputIterator, class _Sentinel>
-_LIBCPP_HIDE_FROM_ABI typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::__insert_after_with_sentinel(const_iterator __p, _InputIterator __f, _Sentinel __l) {
__begin_node_pointer __r = __p.__get_begin();
@@ -1194,14 +1254,16 @@ forward_list<_Tp, _Alloc>::__insert_after_with_sentinel(const_iterator __p, _Inp
__last->__next_ = __r->__next_;
__r->__next_ = __first;
- __r = static_cast<__begin_node_pointer>(__last);
+ __r = __forward_node_traits<__node_pointer>::__as_iter_node(__last);
+ // __r = static_cast<__begin_node_pointer>(__last);
}
return iterator(__r);
}
template <class _Tp, class _Alloc>
-typename forward_list<_Tp, _Alloc>::iterator forward_list<_Tp, _Alloc>::erase_after(const_iterator __f) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
+forward_list<_Tp, _Alloc>::erase_after(const_iterator __f) {
__begin_node_pointer __p = __f.__get_begin();
__node_pointer __n = __p->__next_;
__p->__next_ = __n->__next_;
@@ -1210,7 +1272,7 @@ typename forward_list<_Tp, _Alloc>::iterator forward_list<_Tp, _Alloc>::erase_af
}
template <class _Tp, class _Alloc>
-typename forward_list<_Tp, _Alloc>::iterator
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::iterator
forward_list<_Tp, _Alloc>::erase_after(const_iterator __f, const_iterator __l) {
__node_pointer __e = __l.__get_unsafe_node_pointer();
if (__f != __l) {
@@ -1230,7 +1292,7 @@ forward_list<_Tp, _Alloc>::erase_after(const_iterator __f, const_iterator __l) {
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::resize(size_type __n) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::resize(size_type __n) {
size_type __sz = 0;
iterator __p = before_begin();
iterator __i = begin();
@@ -1250,7 +1312,7 @@ void forward_list<_Tp, _Alloc>::resize(size_type __n) {
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::resize(size_type __n, const value_type& __v) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::resize(size_type __n, const value_type& __v) {
size_type __sz = 0;
iterator __p = before_begin();
iterator __i = begin();
@@ -1270,7 +1332,7 @@ void forward_list<_Tp, _Alloc>::resize(size_type __n, const value_type& __v) {
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list& __x) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list& __x) {
if (!__x.empty()) {
if (__p.__get_begin()->__next_ != nullptr) {
const_iterator __lm1 = __x.before_begin();
@@ -1284,7 +1346,8 @@ void forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list& _
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list& /*__other*/, const_iterator __i) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void
+forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list& /*__other*/, const_iterator __i) {
const_iterator __lm1 = std::next(__i);
if (__p != __i && __p != __lm1) {
__i.__get_begin()->__next_ = __lm1.__get_begin()->__next_;
@@ -1294,7 +1357,7 @@ void forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list& /
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::splice_after(
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::splice_after(
const_iterator __p, forward_list& /*__other*/, const_iterator __f, const_iterator __l) {
if (__f != __l && __p != __f) {
const_iterator __lm1 = __f;
@@ -1309,24 +1372,26 @@ void forward_list<_Tp, _Alloc>::splice_after(
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI void forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list&& __x) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI void
+forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list&& __x) {
splice_after(__p, __x);
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI void
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI void
forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, forward_list&& __x, const_iterator __i) {
splice_after(__p, __x, __i);
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI void forward_list<_Tp, _Alloc>::splice_after(
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI void forward_list<_Tp, _Alloc>::splice_after(
const_iterator __p, forward_list&& __x, const_iterator __f, const_iterator __l) {
splice_after(__p, __x, __f, __l);
}
template <class _Tp, class _Alloc>
-typename forward_list<_Tp, _Alloc>::__remove_return_type forward_list<_Tp, _Alloc>::remove(const value_type& __v) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::__remove_return_type
+forward_list<_Tp, _Alloc>::remove(const value_type& __v) {
forward_list<_Tp, _Alloc> __deleted_nodes(get_allocator()); // collect the nodes we're removing
typename forward_list<_Tp, _Alloc>::size_type __count_removed = 0;
const iterator __e = end();
@@ -1349,7 +1414,8 @@ typename forward_list<_Tp, _Alloc>::__remove_return_type forward_list<_Tp, _Allo
template <class _Tp, class _Alloc>
template <class _Predicate>
-typename forward_list<_Tp, _Alloc>::__remove_return_type forward_list<_Tp, _Alloc>::remove_if(_Predicate __pred) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::__remove_return_type
+forward_list<_Tp, _Alloc>::remove_if(_Predicate __pred) {
forward_list<_Tp, _Alloc> __deleted_nodes(get_allocator()); // collect the nodes we're removing
typename forward_list<_Tp, _Alloc>::size_type __count_removed = 0;
const iterator __e = end();
@@ -1372,7 +1438,7 @@ typename forward_list<_Tp, _Alloc>::__remove_return_type forward_list<_Tp, _Allo
template <class _Tp, class _Alloc>
template <class _BinaryPredicate>
-typename forward_list<_Tp, _Alloc>::__remove_return_type
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::__remove_return_type
forward_list<_Tp, _Alloc>::unique(_BinaryPredicate __binary_pred) {
forward_list<_Tp, _Alloc> __deleted_nodes(get_allocator()); // collect the nodes we're removing
typename forward_list<_Tp, _Alloc>::size_type __count_removed = 0;
@@ -1390,7 +1456,7 @@ forward_list<_Tp, _Alloc>::unique(_BinaryPredicate __binary_pred) {
template <class _Tp, class _Alloc>
template <class _Compare>
-void forward_list<_Tp, _Alloc>::merge(forward_list& __x, _Compare __comp) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::merge(forward_list& __x, _Compare __comp) {
if (this != std::addressof(__x)) {
__base::__before_begin()->__next_ =
__merge(__base::__before_begin()->__next_, __x.__before_begin()->__next_, __comp);
@@ -1400,7 +1466,7 @@ void forward_list<_Tp, _Alloc>::merge(forward_list& __x, _Compare __comp) {
template <class _Tp, class _Alloc>
template <class _Compare>
-typename forward_list<_Tp, _Alloc>::__node_pointer
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::__node_pointer
forward_list<_Tp, _Alloc>::__merge(__node_pointer __f1, __node_pointer __f2, _Compare& __comp) {
if (__f1 == nullptr)
return __f2;
@@ -1437,13 +1503,13 @@ forward_list<_Tp, _Alloc>::__merge(__node_pointer __f1, __node_pointer __f2, _Co
template <class _Tp, class _Alloc>
template <class _Compare>
-inline void forward_list<_Tp, _Alloc>::sort(_Compare __comp) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline void forward_list<_Tp, _Alloc>::sort(_Compare __comp) {
__base::__before_begin()->__next_ = __sort(__base::__before_begin()->__next_, std::distance(begin(), end()), __comp);
}
template <class _Tp, class _Alloc>
template <class _Compare>
-typename forward_list<_Tp, _Alloc>::__node_pointer
+_LIBCPP_CONSTEXPR_SINCE_CXX26 typename forward_list<_Tp, _Alloc>::__node_pointer
forward_list<_Tp, _Alloc>::__sort(__node_pointer __f1, difference_type __sz, _Compare& __comp) {
switch (__sz) {
case 0:
@@ -1467,7 +1533,7 @@ forward_list<_Tp, _Alloc>::__sort(__node_pointer __f1, difference_type __sz, _Co
}
template <class _Tp, class _Alloc>
-void forward_list<_Tp, _Alloc>::reverse() _NOEXCEPT {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 void forward_list<_Tp, _Alloc>::reverse() _NOEXCEPT {
__node_pointer __p = __base::__before_begin()->__next_;
if (__p != nullptr) {
__node_pointer __f = __p->__next_;
@@ -1483,7 +1549,8 @@ void forward_list<_Tp, _Alloc>::reverse() _NOEXCEPT {
}
template <class _Tp, class _Alloc>
-_LIBCPP_HIDE_FROM_ABI bool operator==(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool
+operator==(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
typedef forward_list<_Tp, _Alloc> _Cp;
typedef typename _Cp::const_iterator _Ip;
_Ip __ix = __x.begin();
@@ -1499,31 +1566,31 @@ _LIBCPP_HIDE_FROM_ABI bool operator==(const forward_list<_Tp, _Alloc>& __x, cons
# if _LIBCPP_STD_VER <= 17
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI bool
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI bool
operator!=(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
return !(__x == __y);
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI bool
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI bool
operator<(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
return std::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end());
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI bool
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI bool
operator>(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
return __y < __x;
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI bool
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI bool
operator>=(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
return !(__x < __y);
}
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI bool
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI bool
operator<=(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>& __y) {
return !(__y < __x);
}
@@ -1531,7 +1598,7 @@ operator<=(const forward_list<_Tp, _Alloc>& __x, const forward_list<_Tp, _Alloc>
# else // #if _LIBCPP_STD_VER <= 17
template <class _Tp, class _Allocator>
-_LIBCPP_HIDE_FROM_ABI __synth_three_way_result<_Tp>
+_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __synth_three_way_result<_Tp>
operator<=>(const forward_list<_Tp, _Allocator>& __x, const forward_list<_Tp, _Allocator>& __y) {
return std::lexicographical_compare_three_way(__x.begin(), __x.end(), __y.begin(), __y.end(), std::__synth_three_way);
}
@@ -1539,20 +1606,20 @@ operator<=>(const forward_list<_Tp, _Allocator>& __x, const forward_list<_Tp, _A
# endif // #if _LIBCPP_STD_VER <= 17
template <class _Tp, class _Alloc>
-inline _LIBCPP_HIDE_FROM_ABI void swap(forward_list<_Tp, _Alloc>& __x, forward_list<_Tp, _Alloc>& __y)
- _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI void
+swap(forward_list<_Tp, _Alloc>& __x, forward_list<_Tp, _Alloc>& __y) _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
__x.swap(__y);
}
# if _LIBCPP_STD_VER >= 20
template <class _Tp, class _Allocator, class _Predicate>
-inline _LIBCPP_HIDE_FROM_ABI typename forward_list<_Tp, _Allocator>::size_type
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI typename forward_list<_Tp, _Allocator>::size_type
erase_if(forward_list<_Tp, _Allocator>& __c, _Predicate __pred) {
return __c.remove_if(__pred);
}
template <class _Tp, class _Allocator, class _Up>
-inline _LIBCPP_HIDE_FROM_ABI typename forward_list<_Tp, _Allocator>::size_type
+_LIBCPP_CONSTEXPR_SINCE_CXX26 inline _LIBCPP_HIDE_FROM_ABI typename forward_list<_Tp, _Allocator>::size_type
erase(forward_list<_Tp, _Allocator>& __c, const _Up& __v) {
return std::erase_if(__c, [&](const auto& __elem) -> bool { return __elem == __v; });
}
diff --git a/libcxx/include/version b/libcxx/include/version
index 65fae111dc8ed..87c4ede9a7e59 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -68,6 +68,7 @@ __cpp_lib_constexpr_charconv 202207L <charconv>
__cpp_lib_constexpr_cmath 202202L <cmath> <cstdlib>
__cpp_lib_constexpr_complex 201711L <complex>
__cpp_lib_constexpr_dynamic_alloc 201907L <memory>
+__cpp_lib_constexpr_forward_list 202502L <forward_list>
__cpp_lib_constexpr_functional 201907L <functional>
__cpp_lib_constexpr_iterator 201811L <iterator>
__cpp_lib_constexpr_memory 202202L <memory>
@@ -543,6 +544,7 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_bitset 202306L
# undef __cpp_lib_constexpr_algorithms
# define __cpp_lib_constexpr_algorithms 202306L
+# define __cpp_lib_constexpr_forward_list 202502L
# if !defined(_LIBCPP_ABI_VCRUNTIME)
# define __cpp_lib_constexpr_new 202406L
# endif
diff --git a/libcxx/test/std/containers/sequences/forwardlist/compare.three_way.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/compare.three_way.pass.cpp
index 52adfc4d85985..a9ef855e9a73e 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/compare.three_way.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/compare.three_way.pass.cpp
@@ -11,7 +11,7 @@
// template<class T, class Allocator>
// synth-three-way-result<T> operator<=>(const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
#include <cassert>
#include <forward_list>
@@ -20,6 +20,9 @@
int main(int, char**) {
assert(test_sequence_container_spaceship<std::forward_list>());
- // `std::forward_list` is not constexpr, so no `static_assert` test here.
+#if TEST_STD_VER >= 26
+ static_assert(test_sequence_container_spaceship<std::forward_list>());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/empty.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/empty.pass.cpp
index dbc0631d11930..4482d26f308a6 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/empty.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/empty.pass.cpp
@@ -10,7 +10,7 @@
// class forward_list
-// bool empty() const noexcept;
+// bool empty() const noexcept; // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef std::forward_list<int> C;
C c;
@@ -42,5 +42,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.access/front.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.access/front.pass.cpp
index 757db7d957f5f..50b549f17d561 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.access/front.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.access/front.pass.cpp
@@ -8,17 +8,18 @@
// <forward_list>
-// reference front();
-// const_reference front() const;
+// reference front(); // constexpr since C++26
+// const_reference front() const; // constexpr since C++26
#include <forward_list>
#include <cassert>
#include <iterator>
+#include "test_allocator.h"
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -58,5 +59,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.compile.fail.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.compile.fail.cpp
index 31893a1b95994..4645560048cf6 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.compile.fail.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.compile.fail.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// explicit forward_list(const allocator_type& a);
+// explicit forward_list(const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -16,7 +16,7 @@
#include "test_allocator.h"
#include "../../../NotConstructible.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef test_allocator<NotConstructible> A;
typedef A::value_type T;
@@ -26,5 +26,14 @@ int main(int, char**) {
assert(c.empty());
}
+ return true;
+}
+
+int main(int, char**) {
+ test();
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp
index bfb330fdaf9fc..ffc6d37f28160 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// explicit forward_list(const allocator_type& a);
+// explicit forward_list(const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "../../../NotConstructible.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef test_allocator<NotConstructible> A;
typedef A::value_type T;
@@ -46,5 +46,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_copy.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_copy.pass.cpp
index 27d450c63dcae..b99af4ccb79ec 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_copy.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_copy.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// forward_list& operator=(const forward_list& x);
+// forward_list& operator=(const forward_list& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<int> A;
@@ -143,5 +143,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_init.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_init.pass.cpp
index 1cdcca82d3352..ea2802b323a91 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_init.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_init.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// void assign(initializer_list<value_type> il);
+// void assign(initializer_list<value_type> il); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -65,5 +65,14 @@ int main(int, char**) {
assert(n == 4);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_move.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_move.pass.cpp
index 998a7e11ef343..9c88db6166ba7 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_move.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_move.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// forward_list& operator=(forward_list&& x);
+// forward_list& operator=(forward_list&& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -21,7 +21,7 @@
#include "MoveOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef MoveOnly T;
typedef test_allocator<T> A;
@@ -194,5 +194,14 @@ int main(int, char**) {
assert(c0.empty());
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_op_init.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_op_init.pass.cpp
index a22d6c4985bc5..d21898dc4663a 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_op_init.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_op_init.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// forward_list& operator=(initializer_list<value_type> il);
+// forward_list& operator=(initializer_list<value_type> il); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -65,5 +65,14 @@ int main(int, char**) {
assert(n == 4);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_range.pass.cpp
index 9a35328740790..1601b4b47acd1 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_range.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// template <class InputIterator>
-// void assign(InputIterator first, InputIterator last);
+// void assign(InputIterator first, InputIterator last); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_iterators.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -75,5 +75,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_size_value.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_size_value.pass.cpp
index b0fbfa3249e5e..75626b47c5273 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_size_value.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_size_value.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void assign(size_type n, const value_type& v);
+// void assign(size_type n, const value_type& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -17,7 +17,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -65,5 +65,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy.pass.cpp
index 22d5054b9ae18..12d701bff4b68 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// forward_list(const forward_list& x);
+// forward_list(const forward_list& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<int> A;
@@ -64,5 +64,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy_alloc.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy_alloc.pass.cpp
index a61233e4b5d22..fc3ff485b0667 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy_alloc.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy_alloc.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// forward_list(const forward_list& x, const allocator_type& a);
+// forward_list(const forward_list& x, const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<int> A;
@@ -64,5 +64,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default.pass.cpp
index b493a89b78003..e0ea8bf66cb3b 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// forward_list();
+// forward_list(); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -16,7 +16,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -38,5 +38,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/from_range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/from_range.pass.cpp
index 312f6dbad3550..d1e1734e86f9f 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/from_range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/from_range.pass.cpp
@@ -9,14 +9,14 @@
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// template<container-compatible-range<T> R>
-// forward_list(from_range_t, R&& rg, const Allocator& = Allocator()); // C++23
+// forward_list(from_range_t, R&& rg, const Allocator& = Allocator()); // C++23; constexpr since C++26
#include <forward_list>
#include "../../from_range_sequence_containers.h"
#include "test_macros.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
for_all_iterators_and_allocators<int>([]<class Iter, class Sent, class Alloc>() {
test_sequence_container<std::forward_list, int, Iter, Sent, Alloc>([](const auto&) {
// No additional validation to do.
@@ -26,8 +26,19 @@ int main(int, char**) {
static_assert(test_constraints<std::forward_list, int, double>());
- test_exception_safety_throwing_copy<std::forward_list>();
- test_exception_safety_throwing_allocator<std::forward_list, int>();
+ if (!TEST_IS_CONSTANT_EVALUATED) {
+ test_exception_safety_throwing_copy<std::forward_list>();
+ test_exception_safety_throwing_allocator<std::forward_list, int>();
+ }
+
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init.pass.cpp
index b42242b0a83d4..b7acf60aa70cc 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// forward_list(initializer_list<value_type> il);
+// forward_list(initializer_list<value_type> il); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -38,5 +38,14 @@ int main(int, char**) {
assert(n == 10);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init_alloc.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init_alloc.pass.cpp
index 0b29cbfa9254d..33d569c921a94 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init_alloc.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init_alloc.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// forward_list(initializer_list<value_type> il, const allocator_type& a);
+// forward_list(initializer_list<value_type> il, const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<T> A;
@@ -43,5 +43,14 @@ int main(int, char**) {
assert(c.get_allocator() == A());
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move.pass.cpp
index 762e252ca76fe..20575479f7357 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// forward_list(forward_list&& x);
+// forward_list(forward_list&& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -21,7 +21,7 @@
#include "MoveOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef MoveOnly T;
typedef test_allocator<T> A;
@@ -68,5 +68,14 @@ int main(int, char**) {
assert(c.get_allocator() == A());
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_alloc.pass.cpp
index a9bc2cb12f288..219505bf4fd17 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_alloc.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// forward_list(forward_list&& x, const allocator_type& a);
+// forward_list(forward_list&& x, const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -21,7 +21,7 @@
#include "MoveOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef MoveOnly T;
typedef test_allocator<T> A;
@@ -68,5 +68,14 @@ int main(int, char**) {
assert(c.get_allocator() == A());
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range.pass.cpp
index ebd0e6a5bd1e0..61393eb28938e 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// template <class InputIterator>
-// forward_list(InputIterator first, InputIterator last);
+// forward_list(InputIterator first, InputIterator last); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_iterators.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -45,5 +45,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range_alloc.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range_alloc.pass.cpp
index 4a28041ad2cbc..c0637420e328a 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range_alloc.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range_alloc.pass.cpp
@@ -10,7 +10,7 @@
// template <class InputIterator>
// forward_list(InputIterator first, InputIterator last,
-// const allocator_type& a);
+// const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -21,7 +21,7 @@
#include "test_iterators.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<T> A;
@@ -51,5 +51,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp
index 81b128d2149e3..206854560c19f 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp
@@ -8,8 +8,8 @@
// <forward_list>
-// explicit forward_list(size_type n);
-// explicit forward_list(size_type n, const Alloc& a);
+// explicit forward_list(size_type n); // constexpr since C++26
+// explicit forward_list(size_type n, const Alloc& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value.pass.cpp
index 663422d1c3c30..85d11e3f40a2f 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// forward_list(size_type n, const value_type& v);
+// forward_list(size_type n, const value_type& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -16,7 +16,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -42,5 +42,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value_alloc.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value_alloc.pass.cpp
index af7f7471d4c98..abcdf62452b89 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value_alloc.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value_alloc.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// forward_list(size_type n, const value_type& v, const allocator_type& a);
+// forward_list(size_type n, const value_type& v, const allocator_type& a); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -17,7 +17,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef test_allocator<int> A;
typedef A::value_type T;
@@ -47,5 +47,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase.pass.cpp
index 1044d779220ee..86d7769fe16ee 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase.pass.cpp
@@ -11,7 +11,7 @@
// template <class T, class Allocator, class U>
// typename forward_list<T, Allocator>::size_type
-// erase(forward_list<T, Allocator>& c, const U& value);
+// erase(forward_list<T, Allocator>& c, const U& value); // constexpr since C++26
#include <forward_list>
#include <optional>
@@ -21,14 +21,14 @@
#include "min_allocator.h"
template <class S, class U>
-void test0(S s, U val, S expected, std::size_t expected_erased_count) {
+TEST_CONSTEXPR_CXX26 void test0(S s, U val, S expected, std::size_t expected_erased_count) {
ASSERT_SAME_TYPE(typename S::size_type, decltype(std::erase(s, val)));
assert(expected_erased_count == std::erase(s, val));
assert(s == expected);
}
template <class S>
-void test() {
+TEST_CONSTEXPR_CXX26 void test() {
test0(S(), 1, S(), 0);
test0(S({1}), 1, S(), 1);
@@ -62,13 +62,21 @@ void test() {
test0(S({1, 2, 1}), opt(3), S({1, 2, 1}), 0);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
test<std::forward_list<int>>();
test<std::forward_list<int, min_allocator<int>>>();
test<std::forward_list<int, test_allocator<int>>>();
-
test<std::forward_list<long>>();
test<std::forward_list<double>>();
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase_if.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase_if.pass.cpp
index c4f45a1069a2b..c665f9cccbf0a 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase_if.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.erasure/erase_if.pass.cpp
@@ -11,7 +11,7 @@
// template <class T, class Allocator, class Predicate>
// typename forward_list<T, Allocator>::size_type
-// erase_if(forward_list<T, Allocator>& c, Predicate pred);
+// erase_if(forward_list<T, Allocator>& c, Predicate pred); // constexpr since C++26
#include <forward_list>
@@ -20,14 +20,14 @@
#include "min_allocator.h"
template <class S, class Pred>
-void test0(S s, Pred p, S expected, std::size_t expected_erased_count) {
+TEST_CONSTEXPR_CXX26 void test0(S s, Pred p, S expected, std::size_t expected_erased_count) {
ASSERT_SAME_TYPE(typename S::size_type, decltype(std::erase_if(s, p)));
assert(expected_erased_count == std::erase_if(s, p));
assert(s == expected);
}
template <typename S>
-void test() {
+TEST_CONSTEXPR_CXX26 void test() {
auto is1 = [](auto v) { return v == 1; };
auto is2 = [](auto v) { return v == 2; };
auto is3 = [](auto v) { return v == 3; };
@@ -64,13 +64,21 @@ void test() {
test0(S({1, 2, 3}), False, S({1, 2, 3}), 0);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
test<std::forward_list<int>>();
test<std::forward_list<int, min_allocator<int>>>();
test<std::forward_list<int, test_allocator<int>>>();
-
test<std::forward_list<long>>();
test<std::forward_list<double>>();
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/before_begin.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/before_begin.pass.cpp
index d66d2cd879515..52b5d87860aab 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/before_begin.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/before_begin.pass.cpp
@@ -8,9 +8,9 @@
// <forward_list>
-// iterator before_begin();
-// const_iterator before_begin() const;
-// const_iterator cbefore_begin() const;
+// iterator before_begin(); // constexpr since C++26
+// const_iterator before_begin() const; // constexpr since C++26
+// const_iterator cbefore_begin() const; // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -101,5 +101,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/iterators.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/iterators.pass.cpp
index 135689b2321c3..560c47b17958f 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/iterators.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/iterators.pass.cpp
@@ -8,12 +8,12 @@
// <forward_list>
-// iterator begin();
-// iterator end();
-// const_iterator begin() const;
-// const_iterator end() const;
-// const_iterator cbegin() const;
-// const_iterator cend() const;
+// iterator begin(); // constexpr since C++26
+// iterator end(); // constexpr since C++26
+// const_iterator begin() const; // constexpr since C++26
+// const_iterator end() const; // constexpr since C++26
+// const_iterator cbegin() const; // constexpr since C++26
+// const_iterator cend() const; // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -22,7 +22,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -69,6 +69,8 @@ int main(int, char**) {
typedef std::forward_list<T> C;
C::iterator i;
C::const_iterator j;
+ (void)i;
+ (void)j;
}
#if TEST_STD_VER >= 11
{
@@ -117,6 +119,8 @@ int main(int, char**) {
typedef std::forward_list<T, min_allocator<T>> C;
C::iterator i;
C::const_iterator j;
+ (void)i;
+ (void)j;
}
#endif
#if TEST_STD_VER > 11
@@ -142,5 +146,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/assign_range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/assign_range.pass.cpp
index a27cc757025b5..9a3adec1d9756 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/assign_range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/assign_range.pass.cpp
@@ -9,7 +9,7 @@
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// template<container-compatible-range<T> R>
-// constexpr void prepend_range(R&& rg); // C++23
+// constexpr void prepend_range(R&& rg); // C++23; constexpr since C++26
#include <forward_list>
@@ -21,7 +21,7 @@
// {empty/one-element/full} container);
// - prepending move-only elements;
// - an exception is thrown when copying the elements or when allocating new elements.
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
static_assert(test_constraints_assign_range<std::forward_list, int, double>());
for_all_iterators_and_allocators<int, const int*>([]<class Iter, class Sent, class Alloc>() {
@@ -31,8 +31,19 @@ int main(int, char**) {
});
test_sequence_prepend_range_move_only<std::forward_list>();
- test_prepend_range_exception_safety_throwing_copy<std::forward_list>();
- test_prepend_range_exception_safety_throwing_allocator<std::forward_list, int>();
+ if (!TEST_IS_CONSTANT_EVALUATED) {
+ test_prepend_range_exception_safety_throwing_copy<std::forward_list>();
+ test_prepend_range_exception_safety_throwing_allocator<std::forward_list, int>();
+ }
+
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp
index 9f6d34b701df7..2e1768cf8bad9 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void clear() noexcept;
+// void clear() noexcept; // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "../../../NotConstructible.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef NotConstructible T;
typedef std::forward_list<T> C;
@@ -64,5 +64,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_after.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_after.pass.cpp
index f77d47ee7c74f..6433607af9b39 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_after.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_after.pass.cpp
@@ -11,7 +11,7 @@
// <forward_list>
// template <class... Args>
-// iterator emplace_after(const_iterator p, Args&&... args);
+// iterator emplace_after(const_iterator p, Args&&... args); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -20,7 +20,7 @@
#include "../../../Emplaceable.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef Emplaceable T;
typedef std::forward_list<T> C;
@@ -84,5 +84,14 @@ int main(int, char**) {
assert(std::distance(c.begin(), c.end()) == 4);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_front.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_front.pass.cpp
index cd3bb20c52ae5..46ae27b43622e 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_front.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_front.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// template <class... Args> reference emplace_front(Args&&... args);
+// template <class... Args> reference emplace_front(Args&&... args); // constexpr since C++26
// return type is 'reference' in C++17; 'void' before
#include <forward_list>
@@ -21,7 +21,7 @@
#include "../../../Emplaceable.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef Emplaceable T;
typedef std::forward_list<T> C;
@@ -67,5 +67,14 @@ int main(int, char**) {
assert(std::distance(c.begin(), c.end()) == 2);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_many.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_many.pass.cpp
index e85951798526d..73cb03c2cb7d2 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_many.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_many.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// iterator erase_after(const_iterator first, const_iterator last);
+// iterator erase_after(const_iterator first, const_iterator last); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -17,7 +17,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -153,5 +153,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_one.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_one.pass.cpp
index 892228e76def7..12997f1dad3b9 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_one.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_one.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// iterator erase_after(const_iterator p);
+// iterator erase_after(const_iterator p); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -17,7 +17,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -95,5 +95,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_const.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_const.pass.cpp
index 8443158413e7f..d93789dd6bb5c 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_const.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_const.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// iterator insert_after(const_iterator p, const value_type& v);
+// iterator insert_after(const_iterator p, const value_type& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -16,7 +16,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -84,5 +84,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp
index de924a10c18f0..54be47f4264ff 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// iterator insert_after(const_iterator p, initializer_list<value_type> il);
+// iterator insert_after(const_iterator p, initializer_list<value_type> il); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -70,5 +70,14 @@ int main(int, char**) {
assert(*std::next(c.begin(), 4) == 2);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp
index af810d0f6961c..f89fbd7619da2 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp
@@ -10,7 +10,7 @@
// template <class InputIterator>
// iterator insert_after(const_iterator p,
-// InputIterator first, InputIterator last);
+// InputIterator first, InputIterator last); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_iterators.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -77,5 +77,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_rv.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_rv.pass.cpp
index acd4bc73f724e..01b76f5cd64f1 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_rv.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_rv.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// iterator insert_after(const_iterator p, value_type&& v);
+// iterator insert_after(const_iterator p, value_type&& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "MoveOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef MoveOnly T;
typedef std::forward_list<T> C;
@@ -85,5 +85,14 @@ int main(int, char**) {
assert(std::distance(c.begin(), c.end()) == 4);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp
index 2506f04311e0e..f4f0521ad2371 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// iterator insert_after(const_iterator p, size_type n, const value_type& v);
+// iterator insert_after(const_iterator p, size_type n, const value_type& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -16,7 +16,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -70,5 +70,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_range_after.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_range_after.pass.cpp
index 25f4c43f38486..71a291430b435 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_range_after.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_range_after.pass.cpp
@@ -8,8 +8,10 @@
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
+// ADDITIONAL_COMPILE_FLAGS(has-fconstexpr-steps): -fconstexpr-steps=20000000
+
// template<container-compatible-range<T> R>
-// constexpr iterator insert_range_after(const_iterator position, R&& rg); // C++23
+// constexpr iterator insert_range_after(const_iterator position, R&& rg); // C++23; constexpr since C++26
#include <forward_list>
@@ -321,7 +323,7 @@ constexpr void test_sequence_insert_range_after() {
}
}
-void test_sequence_insert_range_after_move_only() {
+TEST_CONSTEXPR_CXX26 void test_sequence_insert_range_after_move_only() {
MoveOnly input[5];
std::ranges::subrange in(std::move_iterator{input}, std::move_iterator{input + 5});
@@ -366,7 +368,7 @@ void test_insert_range_after_exception_safety_throwing_allocator() {
#endif
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
static_assert(test_constraints_insert_range_after<std::forward_list, int, double>());
for_all_iterators_and_allocators<int, const int*>([]<class Iter, class Sent, class Alloc>() {
@@ -374,8 +376,19 @@ int main(int, char**) {
});
test_sequence_insert_range_after_move_only();
- test_insert_range_after_exception_safety_throwing_copy();
- test_insert_range_after_exception_safety_throwing_allocator<int>();
+ if (!TEST_IS_CONSTANT_EVALUATED) {
+ test_insert_range_after_exception_safety_throwing_copy();
+ test_insert_range_after_exception_safety_throwing_allocator<int>();
+ }
+
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/pop_front.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/pop_front.pass.cpp
index 98c7a26341179..9fcade7ff6bba 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/pop_front.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/pop_front.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void pop_front();
+// void pop_front(); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -17,7 +17,7 @@
#include "MoveOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -71,5 +71,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/prepend_range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/prepend_range.pass.cpp
index 418aa72052ba9..c4b9cd9bdfc41 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/prepend_range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/prepend_range.pass.cpp
@@ -9,7 +9,7 @@
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// template<container-compatible-range<T> R>
-// constexpr void prepend_range(R&& rg); // C++23
+// constexpr void prepend_range(R&& rg); // C++23; constexpr since C++26
#include <forward_list>
@@ -21,7 +21,7 @@
// {empty/one-element/full} container);
// - prepending move-only elements;
// - an exception is thrown when copying the elements or when allocating new elements.
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
static_assert(test_constraints_prepend_range<std::forward_list, int, double>());
for_all_iterators_and_allocators<int, const int*>([]<class Iter, class Sent, class Alloc>() {
@@ -31,8 +31,19 @@ int main(int, char**) {
});
test_sequence_prepend_range_move_only<std::forward_list>();
- test_prepend_range_exception_safety_throwing_copy<std::forward_list>();
- test_prepend_range_exception_safety_throwing_allocator<std::forward_list, int>();
+ if (!TEST_IS_CONSTANT_EVALUATED) {
+ test_prepend_range_exception_safety_throwing_copy<std::forward_list>();
+ test_prepend_range_exception_safety_throwing_allocator<std::forward_list, int>();
+ }
+
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_const.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_const.pass.cpp
index f99c40fa0c1a0..61c5dcac0545e 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_const.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_const.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void push_front(const value_type& v);
+// void push_front(const value_type& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -16,7 +16,7 @@
#include "test_macros.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -44,5 +44,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp
index 467037465eedd..cd24d6ff6af06 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp
@@ -9,7 +9,7 @@
// UNSUPPORTED: no-exceptions
// <forward_list>
-// void push_front(const value_type& x);
+// void push_front(const value_type& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_rv.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_rv.pass.cpp
index d3156c5fdd38a..b30ff7a0189e2 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_rv.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_rv.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// void push_front(value_type&& v);
+// void push_front(value_type&& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "MoveOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef MoveOnly T;
typedef std::forward_list<T> C;
@@ -45,5 +45,14 @@ int main(int, char**) {
assert(std::distance(c.begin(), c.end()) == 2);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size.pass.cpp
index 2dacf458d7d9d..f80886113bf25 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void resize(size_type n);
+// void resize(size_type n); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,8 +18,8 @@
#include "DefaultOnly.h"
#include "min_allocator.h"
-int main(int, char**) {
- {
+TEST_CONSTEXPR_CXX26 bool test() {
+ if (!TEST_IS_CONSTANT_EVALUATED) {
typedef DefaultOnly T;
typedef std::forward_list<T> C;
C c;
@@ -65,7 +65,7 @@ int main(int, char**) {
assert(*std::next(c.begin(), 5) == 0);
}
#if TEST_STD_VER >= 11
- {
+ if (!TEST_IS_CONSTANT_EVALUATED) {
typedef DefaultOnly T;
typedef std::forward_list<T, min_allocator<T>> C;
C c;
@@ -112,5 +112,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size_value.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size_value.pass.cpp
index a6af763e6937f..4ec859b36336d 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size_value.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size_value.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void resize(size_type n, const value_type& v);
+// void resize(size_type n, const value_type& v); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -22,7 +22,7 @@
# include "container_test_types.h"
#endif
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -84,7 +84,7 @@ int main(int, char**) {
assert(*std::next(c.begin(), 4) == 10);
assert(*std::next(c.begin(), 5) == 10);
}
- {
+ if (!TEST_IS_CONSTANT_EVALUATED) {
// Test that the allocator's construct method is being used to
// construct the new elements and that it's called exactly N times.
typedef std::forward_list<int, ContainerTestAllocator<int, int>> Container;
@@ -99,5 +99,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue.pass.cpp
index 9a162789569d3..d8e80c56bf392 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void merge(forward_list& x);
+// void merge(forward_list& x); // constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -30,11 +30,11 @@ struct value {
int a;
int b;
- friend bool operator<(const value& lhs, const value& rhs) { return lhs.a < rhs.a; }
- friend bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
+ friend TEST_CONSTEXPR bool operator<(const value& lhs, const value& rhs) { return lhs.a < rhs.a; }
+ friend TEST_CONSTEXPR bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
};
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{ // Basic merge operation.
typedef int T;
typedef std::forward_list<T> C;
@@ -116,5 +116,14 @@ int main(int, char**) {
assert(c == std::forward_list<int>(std::begin(a), std::end(a)));
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue_pred.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue_pred.pass.cpp
index 4e1814044808c..0adadb2dd092f 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue_pred.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_lvalue_pred.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// template <class Compare> void merge(forward_list& x, Compare comp);
+// template <class Compare> void merge(forward_list& x, Compare comp); // constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -30,11 +30,11 @@ struct value {
int a;
int b;
- friend bool operator>(const value& lhs, const value& rhs) { return lhs.a > rhs.a; }
- friend bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
+ friend TEST_CONSTEXPR bool operator>(const value& lhs, const value& rhs) { return lhs.a > rhs.a; }
+ friend TEST_CONSTEXPR bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
};
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{ // Basic merge operation.
typedef int T;
typedef std::forward_list<T> C;
@@ -117,5 +117,14 @@ int main(int, char**) {
assert(c == std::forward_list<int>(std::begin(a), std::end(a)));
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue.pass.cpp
index acfa014fe2546..906748ec2702b 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// void merge(forward_list&& x);
+// void merge(forward_list&& x); // constexpr since C++26
#include <forward_list>
#include <functional>
@@ -29,11 +29,11 @@ struct value {
int a;
int b;
- friend bool operator<(const value& lhs, const value& rhs) { return lhs.a < rhs.a; }
- friend bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
+ friend TEST_CONSTEXPR bool operator<(const value& lhs, const value& rhs) { return lhs.a < rhs.a; }
+ friend TEST_CONSTEXPR bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
};
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{ // Basic merge operation.
typedef int T;
typedef std::forward_list<T> C;
@@ -109,5 +109,14 @@ int main(int, char**) {
assert(c == std::forward_list<int>(std::begin(a), std::end(a)));
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue_pred.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue_pred.pass.cpp
index 41b56ce7a2884..2ced0b1596e4d 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue_pred.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_rvalue_pred.pass.cpp
@@ -10,7 +10,7 @@
// <forward_list>
-// template <class Compare> void merge(forward_list&& x, Compare comp);
+// template <class Compare> void merge(forward_list&& x, Compare comp); // constexpr since C++26
#include <forward_list>
#include <functional>
@@ -29,11 +29,11 @@ struct value {
int a;
int b;
- friend bool operator>(const value& lhs, const value& rhs) { return lhs.a > rhs.a; }
- friend bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
+ friend TEST_CONSTEXPR bool operator>(const value& lhs, const value& rhs) { return lhs.a > rhs.a; }
+ friend TEST_CONSTEXPR bool operator==(const value& lhs, const value& rhs) { return lhs.a == rhs.a && lhs.b == rhs.b; }
};
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{ // Basic merge operation.
typedef int T;
typedef std::forward_list<T> C;
@@ -110,5 +110,14 @@ int main(int, char**) {
assert(c == std::forward_list<int>(std::begin(a), std::end(a)));
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove.pass.cpp
index ec3bf845dcc5a..b17708ba60ee6 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// void remove(const value_type& v); // C++17 and before
-// size_type remove(const value_type& v); // C++20 and after
+// size_type remove(const value_type& v); // C++20 and after; // constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -19,7 +19,7 @@
#include "min_allocator.h"
template <class L>
-void do_remove(L& l, const typename L::value_type& value, typename L::size_type expected) {
+TEST_CONSTEXPR_CXX26 void do_remove(L& l, const typename L::value_type& value, typename L::size_type expected) {
typename L::size_type old_size = std::distance(l.begin(), l.end());
#if TEST_STD_VER > 17
ASSERT_SAME_TYPE(decltype(l.remove(value)), typename L::size_type);
@@ -32,22 +32,22 @@ void do_remove(L& l, const typename L::value_type& value, typename L::size_type
}
struct S {
- S(int i) : i_(new int(i)) {}
- S(const S& rhs) : i_(new int(*rhs.i_)) {}
- S& operator=(const S& rhs) {
+ TEST_CONSTEXPR_CXX20 S(int i) : i_(new int(i)) {}
+ TEST_CONSTEXPR_CXX20 S(const S& rhs) : i_(new int(*rhs.i_)) {}
+ TEST_CONSTEXPR_CXX20 S& operator=(const S& rhs) {
*i_ = *rhs.i_;
return *this;
}
- ~S() {
+ TEST_CONSTEXPR_CXX20 ~S() {
delete i_;
i_ = NULL;
}
- bool operator==(const S& rhs) const { return *i_ == *rhs.i_; }
- int get() const { return *i_; }
+ TEST_CONSTEXPR bool operator==(const S& rhs) const { return *i_ == *rhs.i_; }
+ TEST_CONSTEXPR int get() const { return *i_; }
int* i_;
};
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -171,5 +171,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp
index c6325baea2590..f26205d03f645 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// template <class Predicate> void remove_if(Predicate pred); // C++17 and before
-// template <class Predicate> size_type remove_if(Predicate pred); // C++20 and after
+// template <class Predicate> size_type remove_if(Predicate pred); // C++20 and after; constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -22,7 +22,7 @@
#include "counting_predicates.h"
template <class L, class Predicate>
-void do_remove_if(L& l, Predicate pred, typename L::size_type expected) {
+TEST_CONSTEXPR_CXX26 void do_remove_if(L& l, Predicate pred, typename L::size_type expected) {
typename L::size_type old_size = std::distance(l.begin(), l.end());
#if TEST_STD_VER > 17
ASSERT_SAME_TYPE(decltype(l.remove_if(pred)), typename L::size_type);
@@ -34,18 +34,18 @@ void do_remove_if(L& l, Predicate pred, typename L::size_type expected) {
assert(old_size - std::distance(l.begin(), l.end()) == expected);
}
-bool g(int i) { return i < 3; }
+TEST_CONSTEXPR bool g(int i) { return i < 3; }
struct PredLWG526 {
- PredLWG526(int i) : i_(i) {}
- ~PredLWG526() { i_ = -32767; }
- bool operator()(const PredLWG526& p) const { return p.i_ == i_; }
+ TEST_CONSTEXPR_CXX20 PredLWG526(int i) : i_(i) {}
+ TEST_CONSTEXPR_CXX20 ~PredLWG526() { i_ = -32767; }
+ TEST_CONSTEXPR bool operator()(const PredLWG526& p) const { return p.i_ == i_; }
- bool operator==(int i) const { return i == i_; }
+ TEST_CONSTEXPR bool operator==(int i) const { return i == i_; }
int i_;
};
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef unary_counting_predicate<bool (*)(T), T> Predicate;
@@ -187,5 +187,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/reverse.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/reverse.pass.cpp
index 0d0656897f34e..38f0e74f66323 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/reverse.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/reverse.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void reverse();
+// void reverse(); // constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -19,7 +19,7 @@
#include "min_allocator.h"
template <class C>
-void test(int N) {
+TEST_CONSTEXPR_CXX26 void test1(int N) {
C c;
for (int i = 0; i < N; ++i)
c.push_front(i);
@@ -30,12 +30,21 @@ void test(int N) {
assert(*j == i);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
for (int i = 0; i < 10; ++i)
- test<std::forward_list<int> >(i);
+ test1<std::forward_list<int> >(i);
#if TEST_STD_VER >= 11
for (int i = 0; i < 10; ++i)
- test<std::forward_list<int, min_allocator<int>> >(i);
+ test1<std::forward_list<int, min_allocator<int>> >(i);
+#endif
+
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
#endif
return 0;
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp
index 4c91d7397adf0..f8787d70784d1 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void splice_after(const_iterator p, forward_list&& x);
+// void splice_after(const_iterator p, forward_list&& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,13 +19,13 @@
#include "min_allocator.h"
typedef int T;
-const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7};
-const T t2[] = {10, 11, 12, 13, 14, 15};
-const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1);
-const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2);
+TEST_CONSTEXPR const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7};
+TEST_CONSTEXPR const T t2[] = {10, 11, 12, 13, 14, 15};
+TEST_CONSTEXPR const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1);
+TEST_CONSTEXPR const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2);
template <class C>
-void testd(const C& c, int p, int l) {
+TEST_CONSTEXPR_CXX26 void testd(const C& c, int p, int l) {
typename C::const_iterator i = c.begin();
int n1 = 0;
for (; n1 < p; ++n1, ++i)
@@ -37,7 +37,7 @@ void testd(const C& c, int p, int l) {
assert(std::distance(c.begin(), c.end()) == size_t1 + l);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
// splicing different containers
typedef std::forward_list<T> C;
@@ -67,5 +67,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp
index bb8bdea632547..7202b0e153627 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void splice_after(const_iterator p, forward_list&& x, const_iterator i);
+// void splice_after(const_iterator p, forward_list&& x, const_iterator i); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,13 +19,13 @@
#include "min_allocator.h"
typedef int T;
-const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7};
-const T t2[] = {10, 11, 12};
-const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1);
-const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2);
+TEST_CONSTEXPR const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7};
+TEST_CONSTEXPR const T t2[] = {10, 11, 12};
+TEST_CONSTEXPR const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1);
+TEST_CONSTEXPR const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2);
template <class C>
-void testd(const C& c, int p, int f) {
+TEST_CONSTEXPR_CXX26 void testd(const C& c, int p, int f) {
typename C::const_iterator i = c.begin();
int n1 = 0;
for (; n1 < p; ++n1, ++i)
@@ -38,7 +38,7 @@ void testd(const C& c, int p, int f) {
}
template <class C>
-void tests(const C& c, int p, int f) {
+TEST_CONSTEXPR_CXX26 void tests(const C& c, int p, int f) {
typename C::const_iterator i = c.begin();
int n = 0;
if (p == f || p == f + 1) {
@@ -67,7 +67,7 @@ void tests(const C& c, int p, int f) {
assert(std::distance(c.begin(), c.end()) == size_t1);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
// splicing different containers
typedef std::forward_list<T> C;
@@ -117,5 +117,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_range.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_range.pass.cpp
index 99b3ed1c7836b..18da6f12b28da 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_range.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_range.pass.cpp
@@ -8,8 +8,10 @@
// <forward_list>
+// ADDITIONAL_COMPILE_FLAGS(has-fconstexpr-steps): -fconstexpr-steps=3000000
+
// void splice_after(const_iterator p, forward_list&& x,
-// const_iterator first, const_iterator last);
+// const_iterator first, const_iterator last); // constexpr since C++26
#include <stddef.h>
#include <forward_list>
@@ -20,13 +22,13 @@
#include "min_allocator.h"
typedef std::ptrdiff_t T;
-const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7};
-const T t2[] = {10, 11, 12, 13, 14, 15};
-const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1);
-const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2);
+TEST_CONSTEXPR const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7};
+TEST_CONSTEXPR const T t2[] = {10, 11, 12, 13, 14, 15};
+TEST_CONSTEXPR const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1);
+TEST_CONSTEXPR const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2);
template <class C>
-void testd(const C& c, std::ptrdiff_t p, ptrdiff_t f, ptrdiff_t l) {
+TEST_CONSTEXPR_CXX26 void testd(const C& c, std::ptrdiff_t p, ptrdiff_t f, ptrdiff_t l) {
typename C::const_iterator i = c.begin();
std::ptrdiff_t n1 = 0;
for (; n1 < p; ++n1, ++i)
@@ -39,7 +41,7 @@ void testd(const C& c, std::ptrdiff_t p, ptrdiff_t f, ptrdiff_t l) {
}
template <class C>
-void tests(const C& c, std::ptrdiff_t p, ptrdiff_t f, ptrdiff_t l) {
+TEST_CONSTEXPR_CXX26 void tests(const C& c, std::ptrdiff_t p, ptrdiff_t f, ptrdiff_t l) {
typename C::const_iterator i = c.begin();
std::ptrdiff_t n = 0;
std::ptrdiff_t d = l > f + 1 ? l - 1 - f : 0;
@@ -69,7 +71,7 @@ void tests(const C& c, std::ptrdiff_t p, ptrdiff_t f, ptrdiff_t l) {
assert(std::distance(c.begin(), c.end()) == size_t1);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
// splicing different containers
typedef std::forward_list<T> C;
@@ -157,5 +159,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique.pass.cpp
index ebd1a79cdb4bc..28efff3849e68 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// void unique(); // C++17 and before
-// size_type unique(); // C++20 and after
+// size_type unique(); // C++20 and after; constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -19,7 +19,7 @@
#include "min_allocator.h"
template <class L>
-void do_unique(L& l, typename L::size_type expected) {
+TEST_CONSTEXPR_CXX26 void do_unique(L& l, typename L::size_type expected) {
typename L::size_type old_size = std::distance(l.begin(), l.end());
#if TEST_STD_VER > 17
ASSERT_SAME_TYPE(decltype(l.unique()), typename L::size_type);
@@ -31,7 +31,7 @@ void do_unique(L& l, typename L::size_type expected) {
assert(old_size - std::distance(l.begin(), l.end()) == expected);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -131,5 +131,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique_pred.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique_pred.pass.cpp
index 408cbf6ae9c20..f07142dffe9d9 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique_pred.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique_pred.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// template <class BinaryPredicate> void unique(BinaryPredicate binary_pred); // C++17 and before
-// template <class BinaryPredicate> size_type unique(BinaryPredicate binary_pred); // C++20 and after
+// template <class BinaryPredicate> size_type unique(BinaryPredicate binary_pred); // C++20 and after; constexpr since C++26
#include <cassert>
#include <forward_list>
@@ -20,7 +20,7 @@
#include "min_allocator.h"
template <class L, class Predicate>
-void do_unique(L& l, Predicate pred, typename L::size_type expected) {
+TEST_CONSTEXPR_CXX26 void do_unique(L& l, Predicate pred, typename L::size_type expected) {
typename L::size_type old_size = std::distance(l.begin(), l.end());
#if TEST_STD_VER > 17
ASSERT_SAME_TYPE(decltype(l.unique(pred)), typename L::size_type);
@@ -33,17 +33,17 @@ void do_unique(L& l, Predicate pred, typename L::size_type expected) {
}
struct PredLWG526 {
- PredLWG526(int i) : i_(i) {}
- ~PredLWG526() { i_ = -32767; }
- bool operator()(const PredLWG526& lhs, const PredLWG526& rhs) const { return lhs.i_ == rhs.i_; }
+ TEST_CONSTEXPR_CXX20 PredLWG526(int i) : i_(i) {}
+ TEST_CONSTEXPR_CXX20 ~PredLWG526() { i_ = -32767; }
+ TEST_CONSTEXPR bool operator()(const PredLWG526& lhs, const PredLWG526& rhs) const { return lhs.i_ == rhs.i_; }
- bool operator==(int i) const { return i == i_; }
+ TEST_CONSTEXPR bool operator==(int i) const { return i == i_; }
int i_;
};
-bool g(int x, int y) { return x == y; }
+TEST_CONSTEXPR bool g(int x, int y) { return x == y; }
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef std::forward_list<T> C;
@@ -157,5 +157,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/equal.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/equal.pass.cpp
index ef6b72ee360a9..cb57b094a077d 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/equal.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/equal.pass.cpp
@@ -10,11 +10,11 @@
// template <class T, class Allocator>
// bool operator==(const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
//
// template <class T, class Allocator>
// bool operator!=(const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -25,7 +25,7 @@
#include "min_allocator.h"
template <class C>
-void test(int N, int M) {
+TEST_CONSTEXPR_CXX26 void test(int N, int M) {
C c1;
for (int i = 0; i < N; ++i)
c1.push_front(i);
@@ -44,7 +44,7 @@ void test(int N, int M) {
}
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
for (int i = 0; i < 10; ++i)
for (int j = 0; j < 10; ++j)
test<std::forward_list<int> >(i, j);
@@ -54,5 +54,14 @@ int main(int, char**) {
test<std::forward_list<int, min_allocator<int>> >(i, j);
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/member_swap.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/member_swap.pass.cpp
index e50f9e6e9e473..f4f7c6d1f7e53 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/member_swap.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/member_swap.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// void swap(forward_list& x);
+// void swap(forward_list& x); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<T> A;
@@ -257,5 +257,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/non_member_swap.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/non_member_swap.pass.cpp
index cae6950436dee..ce25479781547 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/non_member_swap.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/non_member_swap.pass.cpp
@@ -9,7 +9,7 @@
// <forward_list>
// template <class T, class Allocator>
-// void swap(forward_list<T, Allocator>& x, forward_list<T, Allocator>& y);
+// void swap(forward_list<T, Allocator>& x, forward_list<T, Allocator>& y); // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -19,7 +19,7 @@
#include "test_allocator.h"
#include "min_allocator.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef int T;
typedef test_allocator<T> A;
@@ -258,5 +258,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/relational.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/relational.pass.cpp
index d16acadaeb893..7bf80ca026e8e 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/relational.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/relational.pass.cpp
@@ -10,19 +10,19 @@
// template <class T, class Allocator>
// bool operator< (const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
//
// template <class T, class Allocator>
// bool operator> (const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
//
// template <class T, class Allocator>
// bool operator>=(const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
//
// template <class T, class Allocator>
// bool operator<=(const forward_list<T, Allocator>& x,
-// const forward_list<T, Allocator>& y);
+// const forward_list<T, Allocator>& y); // constexpr since C++26
#include <forward_list>
#include <iterator>
@@ -33,7 +33,7 @@
#include "min_allocator.h"
template <class C>
-void test(int N, int M) {
+TEST_CONSTEXPR_CXX26 void test(int N, int M) {
C c1;
for (int i = 0; i < N; ++i)
c1.push_front(i);
@@ -50,7 +50,7 @@ void test(int N, int M) {
assert(c1 > c2);
}
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
for (int i = 0; i < 10; ++i)
for (int j = 0; j < 10; ++j)
test<std::forward_list<int> >(i, j);
@@ -60,5 +60,14 @@ int main(int, char**) {
test<std::forward_list<int, min_allocator<int>> >(i, j);
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/swap_noexcept.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/swap_noexcept.pass.cpp
index b83ec3c3c1210..1fea0a2ab8eb3 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/swap_noexcept.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/swap_noexcept.pass.cpp
@@ -12,10 +12,10 @@
// void swap(forward_list& c)
// noexcept(!allocator_type::propagate_on_container_swap::value ||
-// __is_nothrow_swappable<allocator_type>::value);
+// __is_nothrow_swappable<allocator_type>::value); // constexpr since C++26
//
// In C++17, the standard says that swap shall have:
-// noexcept(is_always_equal<allocator_type>::value);
+// noexcept(is_always_equal<allocator_type>::value); // constexpr since C++26
// This tests a conforming extension
diff --git a/libcxx/test/std/containers/sequences/forwardlist/get_allocator.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/get_allocator.pass.cpp
index f37f5c2f513bd..624eeb17799c0 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/get_allocator.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/get_allocator.pass.cpp
@@ -10,7 +10,7 @@
// class forward_list
-// allocator_type get_allocator() const
+// allocator_type get_allocator() const // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -18,7 +18,7 @@
#include "test_allocator.h"
#include "test_macros.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
std::allocator<int> alloc;
const std::forward_list<int> fl(alloc);
@@ -30,5 +30,14 @@ int main(int, char**) {
assert(fl.get_allocator() == alloc);
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/incomplete.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/incomplete.pass.cpp
index b7be03f1062dc..16c6f0b90f96d 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/incomplete.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/incomplete.pass.cpp
@@ -8,9 +8,9 @@
// <forward_list>
-// forward_list()
-// forward_list::iterator()
-// forward_list::const_iterator()
+// forward_list() // constexpr since C++26
+// forward_list::iterator() // constexpr since C++26
+// forward_list::const_iterator() // constexpr since C++26
#include <forward_list>
#include <cassert>
@@ -33,7 +33,7 @@ struct B {
};
#endif
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
A a;
assert(a.d.empty());
@@ -49,5 +49,14 @@ int main(int, char**) {
}
#endif
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/max_size.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/max_size.pass.cpp
index 5ba0d61f104e0..aab53351f00e2 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/max_size.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/max_size.pass.cpp
@@ -8,7 +8,7 @@
// <forward_list>
-// size_type max_size() const;
+// size_type max_size() const; // constexpr since C++26
#include <cassert>
#include <forward_list>
@@ -18,7 +18,7 @@
#include "test_allocator.h"
#include "test_macros.h"
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
{
typedef limited_allocator<int, 10> A;
typedef std::forward_list<int, A> C;
@@ -42,5 +42,14 @@ int main(int, char**) {
assert(c.max_size() <= alloc_max_size(c.get_allocator()));
}
+ return true;
+}
+
+int main(int, char**) {
+ assert(test());
+#if TEST_STD_VER >= 26
+ static_assert(test());
+#endif
+
return 0;
}
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index b1cc4afd30696..a8774e6ac76e1 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
@@ -13,7 +13,248 @@
// Test the feature test macros defined by <version>
+<<<<<<< HEAD
// clang-format off
+=======
+/* Constant Value
+ __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23]
+ __cpp_lib_addressof_constexpr 201603L [C++17]
+ __cpp_lib_allocate_at_least 202302L [C++23]
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_any 201606L [C++17]
+ __cpp_lib_apply 201603L [C++17]
+ __cpp_lib_array_constexpr 201603L [C++17]
+ 201811L [C++20]
+ __cpp_lib_as_const 201510L [C++17]
+ __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
+ __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
+ __cpp_lib_assume_aligned 201811L [C++20]
+ __cpp_lib_atomic_flag_test 201907L [C++20]
+ __cpp_lib_atomic_float 201711L [C++20]
+ __cpp_lib_atomic_is_always_lock_free 201603L [C++17]
+ __cpp_lib_atomic_lock_free_type_aliases 201907L [C++20]
+ __cpp_lib_atomic_min_max 202403L [C++26]
+ __cpp_lib_atomic_ref 201806L [C++20]
+ __cpp_lib_atomic_shared_ptr 201711L [C++20]
+ __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++23]
+ __cpp_lib_bind_front 201907L [C++20]
+ 202306L [C++26]
+ __cpp_lib_bit_cast 201806L [C++20]
+ __cpp_lib_bitops 201907L [C++20]
+ __cpp_lib_bitset 202306L [C++26]
+ __cpp_lib_bool_constant 201505L [C++17]
+ __cpp_lib_bounded_array_traits 201902L [C++20]
+ __cpp_lib_boyer_moore_searcher 201603L [C++17]
+ __cpp_lib_byte 201603L [C++17]
+ __cpp_lib_byteswap 202110L [C++23]
+ __cpp_lib_char8_t 201907L [C++20]
+ __cpp_lib_chrono 201611L [C++17]
+ __cpp_lib_chrono_udls 201304L [C++14]
+ __cpp_lib_clamp 201603L [C++17]
+ __cpp_lib_complex_udls 201309L [C++14]
+ __cpp_lib_concepts 202002L [C++20]
+ __cpp_lib_constexpr_algorithms 201806L [C++20]
+ __cpp_lib_constexpr_bitset 202207L [C++23]
+ __cpp_lib_constexpr_charconv 202207L [C++23]
+ __cpp_lib_constexpr_cmath 202202L [C++23]
+ __cpp_lib_constexpr_complex 201711L [C++20]
+ __cpp_lib_constexpr_dynamic_alloc 201907L [C++20]
+ __cpp_lib_constexpr_forward_list 202502L [C++26]
+ __cpp_lib_constexpr_functional 201907L [C++20]
+ __cpp_lib_constexpr_iterator 201811L [C++20]
+ __cpp_lib_constexpr_memory 201811L [C++20]
+ 202202L [C++23]
+ __cpp_lib_constexpr_new 202406L [C++26]
+ __cpp_lib_constexpr_numeric 201911L [C++20]
+ __cpp_lib_constexpr_string 201907L [C++20]
+ __cpp_lib_constexpr_string_view 201811L [C++20]
+ __cpp_lib_constexpr_tuple 201811L [C++20]
+ __cpp_lib_constexpr_typeinfo 202106L [C++23]
+ __cpp_lib_constexpr_utility 201811L [C++20]
+ __cpp_lib_constexpr_vector 201907L [C++20]
+ __cpp_lib_constrained_equality 202403L [C++26]
+ __cpp_lib_containers_ranges 202202L [C++23]
+ __cpp_lib_copyable_function 202306L [C++26]
+ __cpp_lib_coroutine 201902L [C++20]
+ __cpp_lib_debugging 202311L [C++26]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_destroying_delete 201806L [C++20]
+ __cpp_lib_enable_shared_from_this 201603L [C++17]
+ __cpp_lib_endian 201907L [C++20]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_exchange_function 201304L [C++14]
+ __cpp_lib_execution 201603L [C++17]
+ 201902L [C++20]
+ __cpp_lib_expected 202211L [C++23]
+ __cpp_lib_filesystem 201703L [C++17]
+ __cpp_lib_flat_map 202207L [C++23]
+ __cpp_lib_flat_set 202207L [C++23]
+ __cpp_lib_format 202110L [C++20]
+ __cpp_lib_format_path 202403L [C++26]
+ __cpp_lib_format_ranges 202207L [C++23]
+ __cpp_lib_format_uchar 202311L [C++20]
+ __cpp_lib_formatters 202302L [C++23]
+ __cpp_lib_forward_like 202207L [C++23]
+ __cpp_lib_freestanding_algorithm 202311L [C++26]
+ __cpp_lib_freestanding_array 202311L [C++26]
+ __cpp_lib_freestanding_cstring 202306L [C++26]
+ __cpp_lib_freestanding_expected 202311L [C++26]
+ __cpp_lib_freestanding_mdspan 202311L [C++26]
+ __cpp_lib_freestanding_optional 202311L [C++26]
+ __cpp_lib_freestanding_string_view 202311L [C++26]
+ __cpp_lib_freestanding_variant 202311L [C++26]
+ __cpp_lib_fstream_native_handle 202306L [C++26]
+ __cpp_lib_function_ref 202306L [C++26]
+ __cpp_lib_gcd_lcm 201606L [C++17]
+ __cpp_lib_generate_random 202403L [C++26]
+ __cpp_lib_generic_associative_lookup 201304L [C++14]
+ __cpp_lib_generic_unordered_lookup 201811L [C++20]
+ __cpp_lib_hardware_interference_size 201703L [C++17]
+ __cpp_lib_has_unique_object_representations 201606L [C++17]
+ __cpp_lib_hazard_pointer 202306L [C++26]
+ __cpp_lib_hypot 201603L [C++17]
+ __cpp_lib_incomplete_container_elements 201505L [C++17]
+ __cpp_lib_inplace_vector 202406L [C++26]
+ __cpp_lib_int_pow2 202002L [C++20]
+ __cpp_lib_integer_comparison_functions 202002L [C++20]
+ __cpp_lib_integer_sequence 201304L [C++14]
+ __cpp_lib_integral_constant_callable 201304L [C++14]
+ __cpp_lib_interpolate 201902L [C++20]
+ __cpp_lib_invoke 201411L [C++17]
+ __cpp_lib_invoke_r 202106L [C++23]
+ __cpp_lib_ios_noreplace 202207L [C++23]
+ __cpp_lib_is_aggregate 201703L [C++17]
+ __cpp_lib_is_constant_evaluated 201811L [C++20]
+ __cpp_lib_is_final 201402L [C++14]
+ __cpp_lib_is_implicit_lifetime 202302L [C++23]
+ __cpp_lib_is_invocable 201703L [C++17]
+ __cpp_lib_is_layout_compatible 201907L [C++20]
+ __cpp_lib_is_nothrow_convertible 201806L [C++20]
+ __cpp_lib_is_null_pointer 201309L [C++14]
+ __cpp_lib_is_pointer_interconvertible 201907L [C++20]
+ __cpp_lib_is_scoped_enum 202011L [C++23]
+ __cpp_lib_is_swappable 201603L [C++17]
+ __cpp_lib_is_virtual_base_of 202406L [C++26]
+ __cpp_lib_is_within_lifetime 202306L [C++26]
+ __cpp_lib_jthread 201911L [C++20]
+ __cpp_lib_latch 201907L [C++20]
+ __cpp_lib_launder 201606L [C++17]
+ __cpp_lib_linalg 202311L [C++26]
+ __cpp_lib_list_remove_return_type 201806L [C++20]
+ __cpp_lib_logical_traits 201510L [C++17]
+ __cpp_lib_make_from_tuple 201606L [C++17]
+ __cpp_lib_make_reverse_iterator 201402L [C++14]
+ __cpp_lib_make_unique 201304L [C++14]
+ __cpp_lib_map_try_emplace 201411L [C++17]
+ __cpp_lib_math_constants 201907L [C++20]
+ __cpp_lib_math_special_functions 201603L [C++17]
+ __cpp_lib_mdspan 202207L [C++23]
+ 202406L [C++26]
+ __cpp_lib_memory_resource 201603L [C++17]
+ __cpp_lib_modules 202207L [C++23]
+ __cpp_lib_move_iterator_concept 202207L [C++20]
+ __cpp_lib_move_only_function 202110L [C++23]
+ __cpp_lib_node_extract 201606L [C++17]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_not_fn 201603L [C++17]
+ 202306L [C++26]
+ __cpp_lib_null_iterators 201304L [C++14]
+ __cpp_lib_optional 201606L [C++17]
+ 202106L [C++20]
+ 202110L [C++23]
+ __cpp_lib_optional_range_support 202406L [C++26]
+ __cpp_lib_out_ptr 202106L [C++23]
+ 202311L [C++26]
+ __cpp_lib_parallel_algorithm 201603L [C++17]
+ __cpp_lib_philox_engine 202406L [C++26]
+ __cpp_lib_polymorphic_allocator 201902L [C++20]
+ __cpp_lib_print 202207L [C++23]
+ __cpp_lib_quoted_string_io 201304L [C++14]
+ __cpp_lib_ranges 202110L [C++20]
+ 202406L [C++23]
+ __cpp_lib_ranges_as_const 202207L [C++23]
+ __cpp_lib_ranges_as_rvalue 202207L [C++23]
+ __cpp_lib_ranges_chunk 202202L [C++23]
+ __cpp_lib_ranges_chunk_by 202202L [C++23]
+ __cpp_lib_ranges_concat 202403L [C++26]
+ __cpp_lib_ranges_contains 202207L [C++23]
+ __cpp_lib_ranges_find_last 202207L [C++23]
+ __cpp_lib_ranges_iota 202202L [C++23]
+ __cpp_lib_ranges_join_with 202202L [C++23]
+ __cpp_lib_ranges_repeat 202207L [C++23]
+ __cpp_lib_ranges_slide 202202L [C++23]
+ __cpp_lib_ranges_starts_ends_with 202106L [C++23]
+ __cpp_lib_ranges_to_container 202202L [C++23]
+ __cpp_lib_ranges_zip 202110L [C++23]
+ __cpp_lib_ratio 202306L [C++26]
+ __cpp_lib_raw_memory_algorithms 201606L [C++17]
+ __cpp_lib_rcu 202306L [C++26]
+ __cpp_lib_reference_from_temporary 202202L [C++23]
+ __cpp_lib_reference_wrapper 202403L [C++26]
+ __cpp_lib_remove_cvref 201711L [C++20]
+ __cpp_lib_result_of_sfinae 201210L [C++14]
+ __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
+ __cpp_lib_sample 201603L [C++17]
+ __cpp_lib_saturation_arithmetic 202311L [C++26]
+ __cpp_lib_scoped_lock 201703L [C++17]
+ __cpp_lib_semaphore 201907L [C++20]
+ __cpp_lib_senders 202406L [C++26]
+ __cpp_lib_shared_mutex 201505L [C++17]
+ __cpp_lib_shared_ptr_arrays 201611L [C++17]
+ 201707L [C++20]
+ __cpp_lib_shared_ptr_weak_type 201606L [C++17]
+ __cpp_lib_shared_timed_mutex 201402L [C++14]
+ __cpp_lib_shift 201806L [C++20]
+ __cpp_lib_smart_ptr_for_overwrite 202002L [C++20]
+ __cpp_lib_smart_ptr_owner_equality 202306L [C++26]
+ __cpp_lib_source_location 201907L [C++20]
+ __cpp_lib_span 202002L [C++20]
+ __cpp_lib_span_at 202311L [C++26]
+ __cpp_lib_span_initializer_list 202311L [C++26]
+ __cpp_lib_spanstream 202106L [C++23]
+ __cpp_lib_ssize 201902L [C++20]
+ __cpp_lib_sstream_from_string_view 202306L [C++26]
+ __cpp_lib_stacktrace 202011L [C++23]
+ __cpp_lib_starts_ends_with 201711L [C++20]
+ __cpp_lib_stdatomic_h 202011L [C++23]
+ __cpp_lib_string_contains 202011L [C++23]
+ __cpp_lib_string_resize_and_overwrite 202110L [C++23]
+ __cpp_lib_string_udls 201304L [C++14]
+ __cpp_lib_string_view 201606L [C++17]
+ 201803L [C++20]
+ 202403L [C++26]
+ __cpp_lib_submdspan 202306L [C++26]
+ __cpp_lib_syncbuf 201803L [C++20]
+ __cpp_lib_text_encoding 202306L [C++26]
+ __cpp_lib_three_way_comparison 201907L [C++20]
+ __cpp_lib_to_address 201711L [C++20]
+ __cpp_lib_to_array 201907L [C++20]
+ __cpp_lib_to_chars 201611L [C++17]
+ 202306L [C++26]
+ __cpp_lib_to_string 202306L [C++26]
+ __cpp_lib_to_underlying 202102L [C++23]
+ __cpp_lib_transformation_trait_aliases 201304L [C++14]
+ __cpp_lib_transparent_operators 201210L [C++14]
+ 201510L [C++17]
+ __cpp_lib_tuple_element_t 201402L [C++14]
+ __cpp_lib_tuple_like 202207L [C++23]
+ 202311L [C++26]
+ __cpp_lib_tuples_by_type 201304L [C++14]
+ __cpp_lib_type_identity 201806L [C++20]
+ __cpp_lib_type_trait_variable_templates 201510L [C++17]
+ __cpp_lib_uncaught_exceptions 201411L [C++17]
+ __cpp_lib_unordered_map_try_emplace 201411L [C++17]
+ __cpp_lib_unreachable 202202L [C++23]
+ __cpp_lib_unwrap_ref 201811L [C++20]
+ __cpp_lib_variant 202102L [C++17]
+ 202106L [C++20]
+ 202306L [C++26]
+ __cpp_lib_void_t 201411L [C++17]
+*/
+>>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
#include <version>
#include "test_macros.h"
@@ -192,9 +433,19 @@
# error "__cpp_lib_constexpr_complex should not be defined before c++20"
# endif
+<<<<<<< HEAD
# ifdef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
+=======
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should not be defined before c++20"
+# endif
+>>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
# ifdef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
@@ -934,9 +1185,233 @@
# error "__cpp_lib_array_constexpr should not be defined before c++17"
# endif
+<<<<<<< HEAD
# ifdef __cpp_lib_as_const
# error "__cpp_lib_as_const should not be defined before c++17"
# endif
+=======
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_assume_aligned
+# error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_flag_test
+# error "__cpp_lib_atomic_flag_test should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_is_always_lock_free
+# error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17"
+# endif
+
+# ifdef __cpp_lib_atomic_lock_free_type_aliases
+# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_value_initialization
+# error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_barrier
+# 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++23"
+# endif
+
+# ifdef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_bit_cast
+# error "__cpp_lib_bit_cast should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_bitops
+# error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_bool_constant
+# error "__cpp_lib_bool_constant should not be defined before c++17"
+# endif
+
+# ifdef __cpp_lib_bounded_array_traits
+# error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_boyer_moore_searcher
+# error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
+# endif
+
+# ifdef __cpp_lib_byte
+# error "__cpp_lib_byte should not be defined before c++17"
+# endif
+
+# ifdef __cpp_lib_byteswap
+# error "__cpp_lib_byteswap should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_chrono
+# error "__cpp_lib_chrono should not be defined before c++17"
+# endif
+
+# ifndef __cpp_lib_chrono_udls
+# error "__cpp_lib_chrono_udls should be defined in c++14"
+# endif
+# if __cpp_lib_chrono_udls != 201304L
+# error "__cpp_lib_chrono_udls should have the value 201304L in c++14"
+# endif
+
+# ifdef __cpp_lib_clamp
+# error "__cpp_lib_clamp should not be defined before c++17"
+# endif
+
+# ifndef __cpp_lib_complex_udls
+# error "__cpp_lib_complex_udls should be defined in c++14"
+# endif
+# if __cpp_lib_complex_udls != 201309L
+# error "__cpp_lib_complex_udls should have the value 201309L in c++14"
+# endif
+
+# ifdef __cpp_lib_concepts
+# error "__cpp_lib_concepts should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_bitset
+# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_charconv
+# error "__cpp_lib_constexpr_charconv should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_complex
+# error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_dynamic_alloc
+# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_iterator
+# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_memory
+# error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_new
+# error "__cpp_lib_constexpr_new should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_numeric
+# error "__cpp_lib_constexpr_numeric should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string
+# error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string_view
+# error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_tuple
+# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_typeinfo
+# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_utility
+# error "__cpp_lib_constexpr_utility should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_vector
+# error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_containers_ranges
+# error "__cpp_lib_containers_ranges should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_coroutine
+# error "__cpp_lib_coroutine should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_debugging
+# error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should not be defined before c++20"
+# endif
+>>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
@@ -1856,6 +2331,7 @@
#elif TEST_STD_VER == 17
+<<<<<<< HEAD
# ifdef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif
@@ -8042,6 +8518,6180 @@
# if __cpp_lib_void_t != 201411L
# error "__cpp_lib_void_t should have the value 201411L in c++26"
# endif
+=======
+# ifdef __cpp_lib_adaptor_iterator_pair_constructor
+# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_addressof_constexpr
+# error "__cpp_lib_addressof_constexpr should be defined in c++17"
+# endif
+# if __cpp_lib_addressof_constexpr != 201603L
+# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++17"
+# endif
+
+# ifdef __cpp_lib_allocate_at_least
+# error "__cpp_lib_allocate_at_least should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17"
+# 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++17"
+# endif
+
+# ifndef __cpp_lib_any
+# error "__cpp_lib_any should be defined in c++17"
+# endif
+# if __cpp_lib_any != 201606L
+# error "__cpp_lib_any should have the value 201606L in c++17"
+# endif
+
+# ifndef __cpp_lib_apply
+# error "__cpp_lib_apply should be defined in c++17"
+# endif
+# if __cpp_lib_apply != 201603L
+# error "__cpp_lib_apply should have the value 201603L in c++17"
+# endif
+
+# ifndef __cpp_lib_array_constexpr
+# error "__cpp_lib_array_constexpr should be defined in c++17"
+# endif
+# if __cpp_lib_array_constexpr != 201603L
+# error "__cpp_lib_array_constexpr should have the value 201603L in c++17"
+# endif
+
+# ifndef __cpp_lib_as_const
+# error "__cpp_lib_as_const should be defined in c++17"
+# endif
+# if __cpp_lib_as_const != 201510L
+# error "__cpp_lib_as_const should have the value 201510L in c++17"
+# endif
+
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_assume_aligned
+# error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_flag_test
+# error "__cpp_lib_atomic_flag_test should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_atomic_is_always_lock_free
+# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++17"
+# 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++17"
+# endif
+
+# ifdef __cpp_lib_atomic_lock_free_type_aliases
+# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_value_initialization
+# error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_barrier
+# 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++23"
+# endif
+
+# ifdef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_bit_cast
+# error "__cpp_lib_bit_cast should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_bitops
+# error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_bool_constant
+# error "__cpp_lib_bool_constant should be defined in c++17"
+# endif
+# if __cpp_lib_bool_constant != 201505L
+# error "__cpp_lib_bool_constant should have the value 201505L in c++17"
+# endif
+
+# ifdef __cpp_lib_bounded_array_traits
+# error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_boyer_moore_searcher
+# error "__cpp_lib_boyer_moore_searcher should be defined in c++17"
+# endif
+# if __cpp_lib_boyer_moore_searcher != 201603L
+# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++17"
+# endif
+
+# ifndef __cpp_lib_byte
+# error "__cpp_lib_byte should be defined in c++17"
+# endif
+# if __cpp_lib_byte != 201603L
+# error "__cpp_lib_byte should have the value 201603L in c++17"
+# endif
+
+# ifdef __cpp_lib_byteswap
+# error "__cpp_lib_byteswap should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_chrono
+# error "__cpp_lib_chrono should be defined in c++17"
+# endif
+# if __cpp_lib_chrono != 201611L
+# error "__cpp_lib_chrono should have the value 201611L in c++17"
+# endif
+
+# ifndef __cpp_lib_chrono_udls
+# error "__cpp_lib_chrono_udls should be defined in c++17"
+# endif
+# if __cpp_lib_chrono_udls != 201304L
+# error "__cpp_lib_chrono_udls should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_clamp
+# error "__cpp_lib_clamp should be defined in c++17"
+# endif
+# if __cpp_lib_clamp != 201603L
+# error "__cpp_lib_clamp should have the value 201603L in c++17"
+# endif
+
+# ifndef __cpp_lib_complex_udls
+# error "__cpp_lib_complex_udls should be defined in c++17"
+# endif
+# if __cpp_lib_complex_udls != 201309L
+# error "__cpp_lib_complex_udls should have the value 201309L in c++17"
+# endif
+
+# ifdef __cpp_lib_concepts
+# error "__cpp_lib_concepts should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_bitset
+# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_charconv
+# error "__cpp_lib_constexpr_charconv should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_complex
+# error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_dynamic_alloc
+# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_iterator
+# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_memory
+# error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_new
+# error "__cpp_lib_constexpr_new should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_constexpr_numeric
+# error "__cpp_lib_constexpr_numeric should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string
+# error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string_view
+# error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_tuple
+# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_typeinfo
+# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_utility
+# error "__cpp_lib_constexpr_utility should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_vector
+# error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_containers_ranges
+# error "__cpp_lib_containers_ranges should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_coroutine
+# error "__cpp_lib_coroutine should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_debugging
+# error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_enable_shared_from_this
+# error "__cpp_lib_enable_shared_from_this should be defined in c++17"
+# endif
+# if __cpp_lib_enable_shared_from_this != 201603L
+# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++17"
+# endif
+
+# ifdef __cpp_lib_endian
+# error "__cpp_lib_endian should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_exchange_function
+# error "__cpp_lib_exchange_function should be defined in c++17"
+# endif
+# if __cpp_lib_exchange_function != 201304L
+# error "__cpp_lib_exchange_function should have the value 201304L in c++17"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_execution
+# error "__cpp_lib_execution should be defined in c++17"
+# endif
+# if __cpp_lib_execution != 201603L
+# error "__cpp_lib_execution should have the value 201603L in c++17"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_execution
+# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifdef __cpp_lib_expected
+# error "__cpp_lib_expected should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
+# ifndef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should be defined in c++17"
+# endif
+# if __cpp_lib_filesystem != 201703L
+# error "__cpp_lib_filesystem should have the value 201703L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_flat_map
+# error "__cpp_lib_flat_map should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_flat_set
+# error "__cpp_lib_flat_set should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_format
+# error "__cpp_lib_format should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_format_uchar
+# error "__cpp_lib_format_uchar should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_formatters
+# error "__cpp_lib_formatters should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_forward_like
+# error "__cpp_lib_forward_like should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_freestanding_algorithm
+# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+# error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+# error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+# error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+# error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+# error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_gcd_lcm
+# error "__cpp_lib_gcd_lcm should be defined in c++17"
+# endif
+# if __cpp_lib_gcd_lcm != 201606L
+# error "__cpp_lib_gcd_lcm should have the value 201606L in c++17"
+# endif
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup should be defined in c++17"
+# endif
+# if __cpp_lib_generic_associative_lookup != 201304L
+# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++17"
+# endif
+
+# ifdef __cpp_lib_generic_unordered_lookup
+# error "__cpp_lib_generic_unordered_lookup should not be defined before c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (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++17"
+# endif
+# if __cpp_lib_hardware_interference_size != 201703L
+# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (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++17"
+# endif
+# if __cpp_lib_has_unique_object_representations != 201606L
+# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17"
+# endif
+
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_hypot
+# error "__cpp_lib_hypot should be defined in c++17"
+# endif
+# if __cpp_lib_hypot != 201603L
+# error "__cpp_lib_hypot should have the value 201603L in c++17"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++17"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17"
+# endif
+
+# ifdef __cpp_lib_inplace_vector
+# error "__cpp_lib_inplace_vector should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_int_pow2
+# error "__cpp_lib_int_pow2 should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_integer_comparison_functions
+# error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_integer_sequence
+# error "__cpp_lib_integer_sequence should be defined in c++17"
+# endif
+# if __cpp_lib_integer_sequence != 201304L
+# error "__cpp_lib_integer_sequence should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_integral_constant_callable
+# error "__cpp_lib_integral_constant_callable should be defined in c++17"
+# endif
+# if __cpp_lib_integral_constant_callable != 201304L
+# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++17"
+# endif
+
+# ifdef __cpp_lib_interpolate
+# error "__cpp_lib_interpolate should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_invoke
+# error "__cpp_lib_invoke should be defined in c++17"
+# endif
+# if __cpp_lib_invoke != 201411L
+# error "__cpp_lib_invoke should have the value 201411L in c++17"
+# endif
+
+# ifdef __cpp_lib_invoke_r
+# error "__cpp_lib_invoke_r should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ios_noreplace
+# error "__cpp_lib_ios_noreplace should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_is_aggregate
+# error "__cpp_lib_is_aggregate should be defined in c++17"
+# endif
+# if __cpp_lib_is_aggregate != 201703L
+# error "__cpp_lib_is_aggregate should have the value 201703L in c++17"
+# endif
+
+# ifdef __cpp_lib_is_constant_evaluated
+# error "__cpp_lib_is_constant_evaluated should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_is_final
+# error "__cpp_lib_is_final should be defined in c++17"
+# endif
+# if __cpp_lib_is_final != 201402L
+# error "__cpp_lib_is_final should have the value 201402L in c++17"
+# endif
+
+# ifdef __cpp_lib_is_implicit_lifetime
+# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_is_invocable
+# error "__cpp_lib_is_invocable should be defined in c++17"
+# endif
+# if __cpp_lib_is_invocable != 201703L
+# error "__cpp_lib_is_invocable should have the value 201703L in c++17"
+# endif
+
+# ifdef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+# error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_is_null_pointer
+# error "__cpp_lib_is_null_pointer should be defined in c++17"
+# endif
+# if __cpp_lib_is_null_pointer != 201309L
+# error "__cpp_lib_is_null_pointer should have the value 201309L in c++17"
+# endif
+
+# ifdef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_scoped_enum
+# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_is_swappable
+# error "__cpp_lib_is_swappable should be defined in c++17"
+# endif
+# if __cpp_lib_is_swappable != 201603L
+# error "__cpp_lib_is_swappable should have the value 201603L in c++17"
+# endif
+
+# ifdef __cpp_lib_is_virtual_base_of
+# error "__cpp_lib_is_virtual_base_of should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_is_within_lifetime
+# error "__cpp_lib_is_within_lifetime should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_jthread
+# error "__cpp_lib_jthread should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_latch
+# error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_launder
+# error "__cpp_lib_launder should be defined in c++17"
+# endif
+# if __cpp_lib_launder != 201606L
+# error "__cpp_lib_launder should have the value 201606L in c++17"
+# endif
+
+# ifdef __cpp_lib_linalg
+# error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_logical_traits
+# error "__cpp_lib_logical_traits should be defined in c++17"
+# endif
+# if __cpp_lib_logical_traits != 201510L
+# error "__cpp_lib_logical_traits should have the value 201510L in c++17"
+# endif
+
+# ifndef __cpp_lib_make_from_tuple
+# error "__cpp_lib_make_from_tuple should be defined in c++17"
+# endif
+# if __cpp_lib_make_from_tuple != 201606L
+# error "__cpp_lib_make_from_tuple should have the value 201606L in c++17"
+# endif
+
+# ifndef __cpp_lib_make_reverse_iterator
+# error "__cpp_lib_make_reverse_iterator should be defined in c++17"
+# endif
+# if __cpp_lib_make_reverse_iterator != 201402L
+# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++17"
+# endif
+
+# ifndef __cpp_lib_make_unique
+# error "__cpp_lib_make_unique should be defined in c++17"
+# endif
+# if __cpp_lib_make_unique != 201304L
+# error "__cpp_lib_make_unique should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_map_try_emplace
+# error "__cpp_lib_map_try_emplace should be defined in c++17"
+# endif
+# if __cpp_lib_map_try_emplace != 201411L
+# error "__cpp_lib_map_try_emplace should have the value 201411L in c++17"
+# endif
+
+# ifdef __cpp_lib_math_constants
+# error "__cpp_lib_math_constants should not be defined before c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions should be defined in c++17"
+# endif
+# if __cpp_lib_math_special_functions != 201603L
+# error "__cpp_lib_math_special_functions should have the value 201603L in c++17"
+# 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
+
+# ifdef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# ifndef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should be defined in c++17"
+# endif
+# if __cpp_lib_memory_resource != 201603L
+# error "__cpp_lib_memory_resource should have the value 201603L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_modules
+# error "__cpp_lib_modules should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_move_iterator_concept
+# error "__cpp_lib_move_iterator_concept should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++17"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++17"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++17"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
+# endif
+
+# ifndef __cpp_lib_not_fn
+# error "__cpp_lib_not_fn should be defined in c++17"
+# endif
+# if __cpp_lib_not_fn != 201603L
+# error "__cpp_lib_not_fn should have the value 201603L in c++17"
+# endif
+
+# ifndef __cpp_lib_null_iterators
+# error "__cpp_lib_null_iterators should be defined in c++17"
+# endif
+# if __cpp_lib_null_iterators != 201304L
+# error "__cpp_lib_null_iterators should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_optional
+# error "__cpp_lib_optional should be defined in c++17"
+# endif
+# if __cpp_lib_optional != 201606L
+# error "__cpp_lib_optional should have the value 201606L in c++17"
+# endif
+
+# ifdef __cpp_lib_optional_range_support
+# error "__cpp_lib_optional_range_support should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_out_ptr
+# error "__cpp_lib_out_ptr should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should be defined in c++17"
+# endif
+# if __cpp_lib_parallel_algorithm != 201603L
+# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++17"
+# 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
+
+# ifdef __cpp_lib_philox_engine
+# error "__cpp_lib_philox_engine should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_print
+# error "__cpp_lib_print should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
+# ifndef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should be defined in c++17"
+# endif
+# if __cpp_lib_quoted_string_io != 201304L
+# error "__cpp_lib_quoted_string_io should have the value 201304L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_ranges
+# error "__cpp_lib_ranges should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_ranges_as_const
+# error "__cpp_lib_ranges_as_const should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_as_rvalue
+# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_ranges_contains
+# error "__cpp_lib_ranges_contains should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_find_last
+# error "__cpp_lib_ranges_find_last should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+# error "__cpp_lib_ranges_join_with should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_repeat
+# error "__cpp_lib_ranges_repeat should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_raw_memory_algorithms
+# error "__cpp_lib_raw_memory_algorithms should be defined in c++17"
+# endif
+# if __cpp_lib_raw_memory_algorithms != 201606L
+# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17"
+# endif
+
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_remove_cvref
+# error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_result_of_sfinae
+# error "__cpp_lib_result_of_sfinae should be defined in c++17"
+# endif
+# if __cpp_lib_result_of_sfinae != 201210L
+# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17"
+# endif
+
+# ifndef __cpp_lib_robust_nonmodifying_seq_ops
+# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++17"
+# endif
+# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
+# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_sample
+# error "__cpp_lib_sample should be defined in c++17"
+# endif
+# if __cpp_lib_sample != 201603L
+# error "__cpp_lib_sample should have the value 201603L in c++17"
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+# error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should be defined in c++17"
+# endif
+# if __cpp_lib_scoped_lock != 201703L
+# error "__cpp_lib_scoped_lock should have the value 201703L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_senders
+# error "__cpp_lib_senders should not be defined before c++26"
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should be defined in c++17"
+# endif
+# if __cpp_lib_shared_mutex != 201505L
+# error "__cpp_lib_shared_mutex should have the value 201505L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shared_ptr_arrays
+# error "__cpp_lib_shared_ptr_arrays should be defined in c++17"
+# endif
+# if __cpp_lib_shared_ptr_arrays != 201611L
+# error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++17"
+# endif
+
+# ifndef __cpp_lib_shared_ptr_weak_type
+# error "__cpp_lib_shared_ptr_weak_type should be defined in c++17"
+# endif
+# if __cpp_lib_shared_ptr_weak_type != 201606L
+# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++17"
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should be defined in c++17"
+# endif
+# if __cpp_lib_shared_timed_mutex != 201402L
+# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++17"
+# endif
+# else
+# ifdef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_shift
+# error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_source_location
+# error "__cpp_lib_source_location should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_span
+# error "__cpp_lib_span should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_span_at
+# error "__cpp_lib_span_at should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_span_initializer_list
+# error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_spanstream
+# error "__cpp_lib_spanstream should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ssize
+# error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_stacktrace
+# error "__cpp_lib_stacktrace should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+# error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_stdatomic_h
+# error "__cpp_lib_stdatomic_h should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_string_contains
+# error "__cpp_lib_string_contains should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_string_resize_and_overwrite
+# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_string_udls
+# error "__cpp_lib_string_udls should be defined in c++17"
+# endif
+# if __cpp_lib_string_udls != 201304L
+# error "__cpp_lib_string_udls should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_string_view
+# error "__cpp_lib_string_view should be defined in c++17"
+# endif
+# if __cpp_lib_string_view != 201606L
+# error "__cpp_lib_string_view should have the value 201606L in c++17"
+# endif
+
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_to_address
+# error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_to_array
+# error "__cpp_lib_to_array should not be defined before c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars should be defined in c++17"
+# endif
+# if __cpp_lib_to_chars != 201611L
+# error "__cpp_lib_to_chars should have the value 201611L in c++17"
+# 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
+
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_to_underlying
+# error "__cpp_lib_to_underlying should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_transformation_trait_aliases
+# error "__cpp_lib_transformation_trait_aliases should be defined in c++17"
+# endif
+# if __cpp_lib_transformation_trait_aliases != 201304L
+# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+# error "__cpp_lib_transparent_operators should be defined in c++17"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+# error "__cpp_lib_transparent_operators should have the value 201510L in c++17"
+# endif
+
+# ifndef __cpp_lib_tuple_element_t
+# error "__cpp_lib_tuple_element_t should be defined in c++17"
+# endif
+# if __cpp_lib_tuple_element_t != 201402L
+# error "__cpp_lib_tuple_element_t should have the value 201402L in c++17"
+# endif
+
+# ifdef __cpp_lib_tuple_like
+# error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++17"
+# endif
+# if __cpp_lib_tuples_by_type != 201304L
+# error "__cpp_lib_tuples_by_type should have the value 201304L in c++17"
+# endif
+
+# ifdef __cpp_lib_type_identity
+# error "__cpp_lib_type_identity should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_type_trait_variable_templates
+# error "__cpp_lib_type_trait_variable_templates should be defined in c++17"
+# endif
+# if __cpp_lib_type_trait_variable_templates != 201510L
+# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17"
+# endif
+
+# ifndef __cpp_lib_uncaught_exceptions
+# error "__cpp_lib_uncaught_exceptions should be defined in c++17"
+# endif
+# if __cpp_lib_uncaught_exceptions != 201411L
+# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++17"
+# endif
+
+# ifndef __cpp_lib_unordered_map_try_emplace
+# error "__cpp_lib_unordered_map_try_emplace should be defined in c++17"
+# endif
+# if __cpp_lib_unordered_map_try_emplace != 201411L
+# 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++23"
+# endif
+
+# ifdef __cpp_lib_unwrap_ref
+# error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_variant
+# error "__cpp_lib_variant should be defined in c++17"
+# endif
+# if __cpp_lib_variant != 202102L
+# error "__cpp_lib_variant should have the value 202102L in c++17"
+# endif
+
+# ifndef __cpp_lib_void_t
+# error "__cpp_lib_void_t should be defined in c++17"
+# endif
+# if __cpp_lib_void_t != 201411L
+# error "__cpp_lib_void_t should have the value 201411L in c++17"
+# 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++23"
+# endif
+
+# ifndef __cpp_lib_addressof_constexpr
+# error "__cpp_lib_addressof_constexpr should be defined in c++20"
+# endif
+# if __cpp_lib_addressof_constexpr != 201603L
+# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++20"
+# endif
+
+# ifdef __cpp_lib_allocate_at_least
+# error "__cpp_lib_allocate_at_least should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++20"
+# 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++20"
+# endif
+
+# ifndef __cpp_lib_any
+# error "__cpp_lib_any should be defined in c++20"
+# endif
+# if __cpp_lib_any != 201606L
+# error "__cpp_lib_any should have the value 201606L in c++20"
+# endif
+
+# ifndef __cpp_lib_apply
+# error "__cpp_lib_apply should be defined in c++20"
+# endif
+# if __cpp_lib_apply != 201603L
+# error "__cpp_lib_apply should have the value 201603L in c++20"
+# endif
+
+# ifndef __cpp_lib_array_constexpr
+# error "__cpp_lib_array_constexpr should be defined in c++20"
+# endif
+# if __cpp_lib_array_constexpr != 201811L
+# error "__cpp_lib_array_constexpr should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_as_const
+# error "__cpp_lib_as_const should be defined in c++20"
+# endif
+# if __cpp_lib_as_const != 201510L
+# error "__cpp_lib_as_const should have the value 201510L in c++20"
+# endif
+
+# ifdef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_assume_aligned
+# error "__cpp_lib_assume_aligned should be defined in c++20"
+# endif
+# if __cpp_lib_assume_aligned != 201811L
+# error "__cpp_lib_assume_aligned should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_atomic_flag_test
+# error "__cpp_lib_atomic_flag_test should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_flag_test != 201907L
+# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++20"
+# endif
+
+# ifndef __cpp_lib_atomic_is_always_lock_free
+# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++20"
+# 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++20"
+# endif
+
+# ifndef __cpp_lib_atomic_lock_free_type_aliases
+# error "__cpp_lib_atomic_lock_free_type_aliases should be defined in c++20"
+# 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++20"
+# endif
+
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_ref != 201806L
+# error "__cpp_lib_atomic_ref should have the value 201806L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_shared_ptr != 201711L
+# error "__cpp_lib_atomic_shared_ptr should have the value 201711L in c++20"
+# 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++20"
+# endif
+# if __cpp_lib_atomic_value_initialization != 201911L
+# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC
+# ifndef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_wait != 201907L
+# error "__cpp_lib_atomic_wait should have the value 201907L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_barrier
+# error "__cpp_lib_barrier should be defined in c++20"
+# endif
+# if __cpp_lib_barrier != 201907L
+# error "__cpp_lib_barrier should have the value 201907L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_barrier
+# error "__cpp_lib_barrier should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_bind_back
+# error "__cpp_lib_bind_back should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should be defined in c++20"
+# endif
+# if __cpp_lib_bind_front != 201907L
+# error "__cpp_lib_bind_front should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_bit_cast
+# error "__cpp_lib_bit_cast should be defined in c++20"
+# endif
+# if __cpp_lib_bit_cast != 201806L
+# error "__cpp_lib_bit_cast should have the value 201806L in c++20"
+# endif
+
+# ifndef __cpp_lib_bitops
+# error "__cpp_lib_bitops should be defined in c++20"
+# endif
+# if __cpp_lib_bitops != 201907L
+# error "__cpp_lib_bitops should have the value 201907L in c++20"
+# endif
+
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_bool_constant
+# error "__cpp_lib_bool_constant should be defined in c++20"
+# endif
+# if __cpp_lib_bool_constant != 201505L
+# error "__cpp_lib_bool_constant should have the value 201505L in c++20"
+# endif
+
+# ifndef __cpp_lib_bounded_array_traits
+# error "__cpp_lib_bounded_array_traits should be defined in c++20"
+# endif
+# if __cpp_lib_bounded_array_traits != 201902L
+# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20"
+# endif
+
+# ifndef __cpp_lib_boyer_moore_searcher
+# error "__cpp_lib_boyer_moore_searcher should be defined in c++20"
+# endif
+# if __cpp_lib_boyer_moore_searcher != 201603L
+# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++20"
+# endif
+
+# ifndef __cpp_lib_byte
+# error "__cpp_lib_byte should be defined in c++20"
+# endif
+# if __cpp_lib_byte != 201603L
+# error "__cpp_lib_byte should have the value 201603L in c++20"
+# endif
+
+# ifdef __cpp_lib_byteswap
+# error "__cpp_lib_byteswap should not be defined before c++23"
+# endif
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++20"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++20"
+# 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++20"
+# endif
+# if __cpp_lib_chrono != 201611L
+# error "__cpp_lib_chrono should have the value 201611L in c++20"
+# endif
+
+# ifndef __cpp_lib_chrono_udls
+# error "__cpp_lib_chrono_udls should be defined in c++20"
+# endif
+# if __cpp_lib_chrono_udls != 201304L
+# error "__cpp_lib_chrono_udls should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_clamp
+# error "__cpp_lib_clamp should be defined in c++20"
+# endif
+# if __cpp_lib_clamp != 201603L
+# error "__cpp_lib_clamp should have the value 201603L in c++20"
+# endif
+
+# ifndef __cpp_lib_complex_udls
+# error "__cpp_lib_complex_udls should be defined in c++20"
+# endif
+# if __cpp_lib_complex_udls != 201309L
+# error "__cpp_lib_complex_udls should have the value 201309L in c++20"
+# endif
+
+# ifndef __cpp_lib_concepts
+# error "__cpp_lib_concepts should be defined in c++20"
+# endif
+# if __cpp_lib_concepts != 202002L
+# error "__cpp_lib_concepts should have the value 202002L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_algorithms != 201806L
+# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_bitset
+# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_charconv
+# error "__cpp_lib_constexpr_charconv should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_complex
+# error "__cpp_lib_constexpr_complex should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_complex != 201711L
+# error "__cpp_lib_constexpr_complex should have the value 201711L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_dynamic_alloc
+# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_dynamic_alloc != 201907L
+# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_functional != 201907L
+# error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_iterator
+# error "__cpp_lib_constexpr_iterator should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_iterator != 201811L
+# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_memory
+# error "__cpp_lib_constexpr_memory should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_memory != 201811L
+# error "__cpp_lib_constexpr_memory should have the value 201811L in c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_new
+# error "__cpp_lib_constexpr_new should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_numeric
+# error "__cpp_lib_constexpr_numeric should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_numeric != 201911L
+# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_string
+# error "__cpp_lib_constexpr_string should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_string != 201907L
+# error "__cpp_lib_constexpr_string should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_string_view
+# error "__cpp_lib_constexpr_string_view should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_string_view != 201811L
+# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_tuple
+# error "__cpp_lib_constexpr_tuple should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_tuple != 201811L
+# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_typeinfo
+# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_utility
+# error "__cpp_lib_constexpr_utility should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_utility != 201811L
+# error "__cpp_lib_constexpr_utility should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_constexpr_vector
+# error "__cpp_lib_constexpr_vector should be defined in c++20"
+# endif
+# if __cpp_lib_constexpr_vector != 201907L
+# error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
+# endif
+
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_containers_ranges
+# error "__cpp_lib_containers_ranges should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_coroutine
+# error "__cpp_lib_coroutine should be defined in c++20"
+# endif
+# if __cpp_lib_coroutine != 201902L
+# error "__cpp_lib_coroutine should have the value 201902L in c++20"
+# endif
+
+# ifdef __cpp_lib_debugging
+# error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
+# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
+# ifndef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should be defined in c++20"
+# endif
+# if __cpp_lib_destroying_delete != 201806L
+# error "__cpp_lib_destroying_delete should have the value 201806L in c++20"
+# 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++20"
+# endif
+# if __cpp_lib_enable_shared_from_this != 201603L
+# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++20"
+# endif
+
+# ifndef __cpp_lib_endian
+# error "__cpp_lib_endian should be defined in c++20"
+# endif
+# if __cpp_lib_endian != 201907L
+# error "__cpp_lib_endian should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++20"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++20"
+# endif
+
+# ifndef __cpp_lib_exchange_function
+# error "__cpp_lib_exchange_function should be defined in c++20"
+# endif
+# if __cpp_lib_exchange_function != 201304L
+# error "__cpp_lib_exchange_function should have the value 201304L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_execution
+# error "__cpp_lib_execution should be defined in c++20"
+# endif
+# if __cpp_lib_execution != 201902L
+# error "__cpp_lib_execution should have the value 201902L in c++20"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_execution
+# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifdef __cpp_lib_expected
+# error "__cpp_lib_expected should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
+# ifndef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should be defined in c++20"
+# endif
+# if __cpp_lib_filesystem != 201703L
+# error "__cpp_lib_filesystem should have the value 201703L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_flat_map
+# error "__cpp_lib_flat_map should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_flat_set
+# error "__cpp_lib_flat_set should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
+# ifndef __cpp_lib_format
+# error "__cpp_lib_format should be defined in c++20"
+# endif
+# if __cpp_lib_format != 202110L
+# error "__cpp_lib_format should have the value 202110L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_format
+# error "__cpp_lib_format should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_format_uchar
+# error "__cpp_lib_format_uchar should be defined in c++20"
+# endif
+# if __cpp_lib_format_uchar != 202311L
+# error "__cpp_lib_format_uchar should have the value 202311L in c++20"
+# endif
+
+# ifdef __cpp_lib_formatters
+# error "__cpp_lib_formatters should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_forward_like
+# error "__cpp_lib_forward_like should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_freestanding_algorithm
+# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+# error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+# error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+# error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+# error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+# error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_gcd_lcm
+# error "__cpp_lib_gcd_lcm should be defined in c++20"
+# endif
+# if __cpp_lib_gcd_lcm != 201606L
+# error "__cpp_lib_gcd_lcm should have the value 201606L in c++20"
+# endif
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup should be defined in c++20"
+# endif
+# if __cpp_lib_generic_associative_lookup != 201304L
+# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_generic_unordered_lookup
+# error "__cpp_lib_generic_unordered_lookup should be defined in c++20"
+# endif
+# if __cpp_lib_generic_unordered_lookup != 201811L
+# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (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++20"
+# endif
+# if __cpp_lib_hardware_interference_size != 201703L
+# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (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++20"
+# endif
+# if __cpp_lib_has_unique_object_representations != 201606L
+# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20"
+# endif
+
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_hypot
+# error "__cpp_lib_hypot should be defined in c++20"
+# endif
+# if __cpp_lib_hypot != 201603L
+# error "__cpp_lib_hypot should have the value 201603L in c++20"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++20"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++20"
+# endif
+
+# ifdef __cpp_lib_inplace_vector
+# error "__cpp_lib_inplace_vector should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_int_pow2
+# error "__cpp_lib_int_pow2 should be defined in c++20"
+# endif
+# if __cpp_lib_int_pow2 != 202002L
+# error "__cpp_lib_int_pow2 should have the value 202002L in c++20"
+# endif
+
+# ifndef __cpp_lib_integer_comparison_functions
+# error "__cpp_lib_integer_comparison_functions should be defined in c++20"
+# endif
+# if __cpp_lib_integer_comparison_functions != 202002L
+# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++20"
+# endif
+
+# ifndef __cpp_lib_integer_sequence
+# error "__cpp_lib_integer_sequence should be defined in c++20"
+# endif
+# if __cpp_lib_integer_sequence != 201304L
+# error "__cpp_lib_integer_sequence should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_integral_constant_callable
+# error "__cpp_lib_integral_constant_callable should be defined in c++20"
+# endif
+# if __cpp_lib_integral_constant_callable != 201304L
+# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_interpolate
+# error "__cpp_lib_interpolate should be defined in c++20"
+# endif
+# if __cpp_lib_interpolate != 201902L
+# error "__cpp_lib_interpolate should have the value 201902L in c++20"
+# endif
+
+# ifndef __cpp_lib_invoke
+# error "__cpp_lib_invoke should be defined in c++20"
+# endif
+# if __cpp_lib_invoke != 201411L
+# error "__cpp_lib_invoke should have the value 201411L in c++20"
+# endif
+
+# ifdef __cpp_lib_invoke_r
+# error "__cpp_lib_invoke_r should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ios_noreplace
+# error "__cpp_lib_ios_noreplace should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_is_aggregate
+# error "__cpp_lib_is_aggregate should be defined in c++20"
+# endif
+# if __cpp_lib_is_aggregate != 201703L
+# error "__cpp_lib_is_aggregate should have the value 201703L in c++20"
+# endif
+
+# ifndef __cpp_lib_is_constant_evaluated
+# error "__cpp_lib_is_constant_evaluated should be defined in c++20"
+# endif
+# if __cpp_lib_is_constant_evaluated != 201811L
+# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_is_final
+# error "__cpp_lib_is_final should be defined in c++20"
+# endif
+# if __cpp_lib_is_final != 201402L
+# error "__cpp_lib_is_final should have the value 201402L in c++20"
+# endif
+
+# ifdef __cpp_lib_is_implicit_lifetime
+# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_is_invocable
+# error "__cpp_lib_is_invocable should be defined in c++20"
+# endif
+# if __cpp_lib_is_invocable != 201703L
+# error "__cpp_lib_is_invocable should have the value 201703L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should be defined in c++20"
+# endif
+# if __cpp_lib_is_layout_compatible != 201907L
+# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++20"
+# 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++20"
+# endif
+# if __cpp_lib_is_nothrow_convertible != 201806L
+# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++20"
+# endif
+
+# ifndef __cpp_lib_is_null_pointer
+# error "__cpp_lib_is_null_pointer should be defined in c++20"
+# endif
+# if __cpp_lib_is_null_pointer != 201309L
+# error "__cpp_lib_is_null_pointer should have the value 201309L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should be defined in c++20"
+# endif
+# if __cpp_lib_is_pointer_interconvertible != 201907L
+# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++20"
+# 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
+
+# ifdef __cpp_lib_is_scoped_enum
+# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_is_swappable
+# error "__cpp_lib_is_swappable should be defined in c++20"
+# endif
+# if __cpp_lib_is_swappable != 201603L
+# error "__cpp_lib_is_swappable should have the value 201603L in c++20"
+# endif
+
+# ifdef __cpp_lib_is_virtual_base_of
+# error "__cpp_lib_is_virtual_base_of should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_is_within_lifetime
+# error "__cpp_lib_is_within_lifetime should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_jthread
+# error "__cpp_lib_jthread should be defined in c++20"
+# endif
+# if __cpp_lib_jthread != 201911L
+# error "__cpp_lib_jthread should have the value 201911L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_jthread
+# error "__cpp_lib_jthread should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_latch
+# error "__cpp_lib_latch should be defined in c++20"
+# endif
+# if __cpp_lib_latch != 201907L
+# error "__cpp_lib_latch should have the value 201907L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_latch
+# error "__cpp_lib_latch should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_launder
+# error "__cpp_lib_launder should be defined in c++20"
+# endif
+# if __cpp_lib_launder != 201606L
+# error "__cpp_lib_launder should have the value 201606L in c++20"
+# endif
+
+# ifdef __cpp_lib_linalg
+# error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should be defined in c++20"
+# endif
+# if __cpp_lib_list_remove_return_type != 201806L
+# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++20"
+# endif
+
+# ifndef __cpp_lib_logical_traits
+# error "__cpp_lib_logical_traits should be defined in c++20"
+# endif
+# if __cpp_lib_logical_traits != 201510L
+# error "__cpp_lib_logical_traits should have the value 201510L in c++20"
+# endif
+
+# ifndef __cpp_lib_make_from_tuple
+# error "__cpp_lib_make_from_tuple should be defined in c++20"
+# endif
+# if __cpp_lib_make_from_tuple != 201606L
+# error "__cpp_lib_make_from_tuple should have the value 201606L in c++20"
+# endif
+
+# ifndef __cpp_lib_make_reverse_iterator
+# error "__cpp_lib_make_reverse_iterator should be defined in c++20"
+# endif
+# if __cpp_lib_make_reverse_iterator != 201402L
+# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++20"
+# endif
+
+# ifndef __cpp_lib_make_unique
+# error "__cpp_lib_make_unique should be defined in c++20"
+# endif
+# if __cpp_lib_make_unique != 201304L
+# error "__cpp_lib_make_unique should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_map_try_emplace
+# error "__cpp_lib_map_try_emplace should be defined in c++20"
+# endif
+# if __cpp_lib_map_try_emplace != 201411L
+# error "__cpp_lib_map_try_emplace should have the value 201411L in c++20"
+# endif
+
+# ifndef __cpp_lib_math_constants
+# error "__cpp_lib_math_constants should be defined in c++20"
+# endif
+# if __cpp_lib_math_constants != 201907L
+# error "__cpp_lib_math_constants should have the value 201907L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions should be defined in c++20"
+# endif
+# if __cpp_lib_math_special_functions != 201603L
+# error "__cpp_lib_math_special_functions should have the value 201603L in c++20"
+# 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
+
+# ifdef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# ifndef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should be defined in c++20"
+# endif
+# if __cpp_lib_memory_resource != 201603L
+# error "__cpp_lib_memory_resource should have the value 201603L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_modules
+# error "__cpp_lib_modules should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_move_iterator_concept
+# error "__cpp_lib_move_iterator_concept should be defined in c++20"
+# endif
+# if __cpp_lib_move_iterator_concept != 202207L
+# error "__cpp_lib_move_iterator_concept should have the value 202207L in c++20"
+# endif
+
+# ifdef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_node_extract
+# error "__cpp_lib_node_extract should be defined in c++20"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++20"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++20"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
+# endif
+
+# ifndef __cpp_lib_not_fn
+# error "__cpp_lib_not_fn should be defined in c++20"
+# endif
+# if __cpp_lib_not_fn != 201603L
+# error "__cpp_lib_not_fn should have the value 201603L in c++20"
+# endif
+
+# ifndef __cpp_lib_null_iterators
+# error "__cpp_lib_null_iterators should be defined in c++20"
+# endif
+# if __cpp_lib_null_iterators != 201304L
+# error "__cpp_lib_null_iterators should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_optional
+# error "__cpp_lib_optional should be defined in c++20"
+# endif
+# if __cpp_lib_optional != 202106L
+# error "__cpp_lib_optional should have the value 202106L in c++20"
+# endif
+
+# ifdef __cpp_lib_optional_range_support
+# error "__cpp_lib_optional_range_support should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_out_ptr
+# error "__cpp_lib_out_ptr should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should be defined in c++20"
+# endif
+# if __cpp_lib_parallel_algorithm != 201603L
+# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++20"
+# 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
+
+# ifdef __cpp_lib_philox_engine
+# error "__cpp_lib_philox_engine should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# ifndef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should be defined in c++20"
+# endif
+# if __cpp_lib_polymorphic_allocator != 201902L
+# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_print
+# error "__cpp_lib_print should not be defined before c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
+# ifndef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should be defined in c++20"
+# endif
+# if __cpp_lib_quoted_string_io != 201304L
+# error "__cpp_lib_quoted_string_io should have the value 201304L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++20"
+# endif
+# if __cpp_lib_ranges != 202110L
+# error "__cpp_lib_ranges should have the value 202110L in c++20"
+# endif
+
+# ifdef __cpp_lib_ranges_as_const
+# error "__cpp_lib_ranges_as_const should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_as_rvalue
+# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_ranges_contains
+# error "__cpp_lib_ranges_contains should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_find_last
+# error "__cpp_lib_ranges_find_last should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_join_with
+# error "__cpp_lib_ranges_join_with should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_repeat
+# error "__cpp_lib_ranges_repeat should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_raw_memory_algorithms
+# error "__cpp_lib_raw_memory_algorithms should be defined in c++20"
+# endif
+# if __cpp_lib_raw_memory_algorithms != 201606L
+# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++20"
+# endif
+
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_remove_cvref
+# error "__cpp_lib_remove_cvref should be defined in c++20"
+# endif
+# if __cpp_lib_remove_cvref != 201711L
+# error "__cpp_lib_remove_cvref should have the value 201711L in c++20"
+# endif
+
+# ifndef __cpp_lib_result_of_sfinae
+# error "__cpp_lib_result_of_sfinae should be defined in c++20"
+# endif
+# if __cpp_lib_result_of_sfinae != 201210L
+# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++20"
+# endif
+
+# ifndef __cpp_lib_robust_nonmodifying_seq_ops
+# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++20"
+# endif
+# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
+# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_sample
+# error "__cpp_lib_sample should be defined in c++20"
+# endif
+# if __cpp_lib_sample != 201603L
+# error "__cpp_lib_sample should have the value 201603L in c++20"
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+# error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should be defined in c++20"
+# endif
+# if __cpp_lib_scoped_lock != 201703L
+# error "__cpp_lib_scoped_lock should have the value 201703L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should be defined in c++20"
+# endif
+# if __cpp_lib_semaphore != 201907L
+# error "__cpp_lib_semaphore should have the value 201907L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_senders
+# error "__cpp_lib_senders should not be defined before c++26"
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should be defined in c++20"
+# endif
+# if __cpp_lib_shared_mutex != 201505L
+# error "__cpp_lib_shared_mutex should have the value 201505L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shared_ptr_arrays
+# error "__cpp_lib_shared_ptr_arrays should be defined in c++20"
+# endif
+# if __cpp_lib_shared_ptr_arrays != 201707L
+# error "__cpp_lib_shared_ptr_arrays should have the value 201707L in c++20"
+# endif
+
+# ifndef __cpp_lib_shared_ptr_weak_type
+# error "__cpp_lib_shared_ptr_weak_type should be defined in c++20"
+# endif
+# if __cpp_lib_shared_ptr_weak_type != 201606L
+# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++20"
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should be defined in c++20"
+# endif
+# if __cpp_lib_shared_timed_mutex != 201402L
+# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shift
+# error "__cpp_lib_shift should be defined in c++20"
+# endif
+# if __cpp_lib_shift != 201806L
+# error "__cpp_lib_shift should have the value 201806L in c++20"
+# endif
+
+# ifndef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20"
+# endif
+# if __cpp_lib_smart_ptr_for_overwrite != 202002L
+# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_source_location
+# error "__cpp_lib_source_location should be defined in c++20"
+# endif
+# if __cpp_lib_source_location != 201907L
+# error "__cpp_lib_source_location should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_span
+# error "__cpp_lib_span should be defined in c++20"
+# endif
+# if __cpp_lib_span != 202002L
+# error "__cpp_lib_span should have the value 202002L in c++20"
+# endif
+
+# ifdef __cpp_lib_span_at
+# error "__cpp_lib_span_at should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_span_initializer_list
+# error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_spanstream
+# error "__cpp_lib_spanstream should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_ssize
+# error "__cpp_lib_ssize should be defined in c++20"
+# endif
+# if __cpp_lib_ssize != 201902L
+# error "__cpp_lib_ssize should have the value 201902L in c++20"
+# endif
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_stacktrace
+# error "__cpp_lib_stacktrace should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_starts_ends_with
+# error "__cpp_lib_starts_ends_with should be defined in c++20"
+# endif
+# if __cpp_lib_starts_ends_with != 201711L
+# error "__cpp_lib_starts_ends_with should have the value 201711L in c++20"
+# endif
+
+# ifdef __cpp_lib_stdatomic_h
+# error "__cpp_lib_stdatomic_h should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_string_contains
+# error "__cpp_lib_string_contains should not be defined before c++23"
+# endif
+
+# ifdef __cpp_lib_string_resize_and_overwrite
+# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_string_udls
+# error "__cpp_lib_string_udls should be defined in c++20"
+# endif
+# if __cpp_lib_string_udls != 201304L
+# error "__cpp_lib_string_udls should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_string_view
+# error "__cpp_lib_string_view should be defined in c++20"
+# endif
+# if __cpp_lib_string_view != 201803L
+# error "__cpp_lib_string_view should have the value 201803L in c++20"
+# endif
+
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM
+# ifndef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should be defined in c++20"
+# endif
+# if __cpp_lib_syncbuf != 201803L
+# error "__cpp_lib_syncbuf should have the value 201803L in c++20"
+# endif
+# else
+# ifdef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison should be defined in c++20"
+# endif
+# if __cpp_lib_three_way_comparison != 201907L
+# error "__cpp_lib_three_way_comparison should have the value 201907L in c++20"
+# endif
+
+# ifndef __cpp_lib_to_address
+# error "__cpp_lib_to_address should be defined in c++20"
+# endif
+# if __cpp_lib_to_address != 201711L
+# error "__cpp_lib_to_address should have the value 201711L in c++20"
+# endif
+
+# ifndef __cpp_lib_to_array
+# error "__cpp_lib_to_array should be defined in c++20"
+# endif
+# if __cpp_lib_to_array != 201907L
+# error "__cpp_lib_to_array should have the value 201907L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars should be defined in c++20"
+# endif
+# if __cpp_lib_to_chars != 201611L
+# error "__cpp_lib_to_chars should have the value 201611L in c++20"
+# 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
+
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_to_underlying
+# error "__cpp_lib_to_underlying should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_transformation_trait_aliases
+# error "__cpp_lib_transformation_trait_aliases should be defined in c++20"
+# endif
+# if __cpp_lib_transformation_trait_aliases != 201304L
+# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+# error "__cpp_lib_transparent_operators should be defined in c++20"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+# error "__cpp_lib_transparent_operators should have the value 201510L in c++20"
+# endif
+
+# ifndef __cpp_lib_tuple_element_t
+# error "__cpp_lib_tuple_element_t should be defined in c++20"
+# endif
+# if __cpp_lib_tuple_element_t != 201402L
+# error "__cpp_lib_tuple_element_t should have the value 201402L in c++20"
+# endif
+
+# ifdef __cpp_lib_tuple_like
+# error "__cpp_lib_tuple_like should not be defined before c++23"
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++20"
+# endif
+# if __cpp_lib_tuples_by_type != 201304L
+# error "__cpp_lib_tuples_by_type should have the value 201304L in c++20"
+# endif
+
+# ifndef __cpp_lib_type_identity
+# error "__cpp_lib_type_identity should be defined in c++20"
+# endif
+# if __cpp_lib_type_identity != 201806L
+# error "__cpp_lib_type_identity should have the value 201806L in c++20"
+# endif
+
+# ifndef __cpp_lib_type_trait_variable_templates
+# error "__cpp_lib_type_trait_variable_templates should be defined in c++20"
+# endif
+# if __cpp_lib_type_trait_variable_templates != 201510L
+# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++20"
+# endif
+
+# ifndef __cpp_lib_uncaught_exceptions
+# error "__cpp_lib_uncaught_exceptions should be defined in c++20"
+# endif
+# if __cpp_lib_uncaught_exceptions != 201411L
+# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++20"
+# endif
+
+# ifndef __cpp_lib_unordered_map_try_emplace
+# error "__cpp_lib_unordered_map_try_emplace should be defined in c++20"
+# endif
+# if __cpp_lib_unordered_map_try_emplace != 201411L
+# 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++23"
+# endif
+
+# ifndef __cpp_lib_unwrap_ref
+# error "__cpp_lib_unwrap_ref should be defined in c++20"
+# endif
+# if __cpp_lib_unwrap_ref != 201811L
+# error "__cpp_lib_unwrap_ref should have the value 201811L in c++20"
+# endif
+
+# ifndef __cpp_lib_variant
+# error "__cpp_lib_variant should be defined in c++20"
+# endif
+# if __cpp_lib_variant != 202106L
+# error "__cpp_lib_variant should have the value 202106L in c++20"
+# endif
+
+# ifndef __cpp_lib_void_t
+# error "__cpp_lib_void_t should be defined in c++20"
+# endif
+# if __cpp_lib_void_t != 201411L
+# error "__cpp_lib_void_t should have the value 201411L in c++20"
+# endif
+
+#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"
+# endif
+# if __cpp_lib_adaptor_iterator_pair_constructor != 202106L
+# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++23"
+# endif
+
+# ifndef __cpp_lib_addressof_constexpr
+# error "__cpp_lib_addressof_constexpr should be defined in c++23"
+# endif
+# if __cpp_lib_addressof_constexpr != 201603L
+# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_allocate_at_least
+# error "__cpp_lib_allocate_at_least should be defined in c++23"
+# endif
+# if __cpp_lib_allocate_at_least != 202302L
+# error "__cpp_lib_allocate_at_least should have the value 202302L in c++23"
+# endif
+
+# ifndef __cpp_lib_allocator_traits_is_always_equal
+# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
+# 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++23"
+# endif
+
+# ifndef __cpp_lib_any
+# error "__cpp_lib_any should be defined in c++23"
+# endif
+# if __cpp_lib_any != 201606L
+# error "__cpp_lib_any should have the value 201606L in c++23"
+# endif
+
+# ifndef __cpp_lib_apply
+# error "__cpp_lib_apply should be defined in c++23"
+# endif
+# if __cpp_lib_apply != 201603L
+# error "__cpp_lib_apply should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_array_constexpr
+# error "__cpp_lib_array_constexpr should be defined in c++23"
+# endif
+# if __cpp_lib_array_constexpr != 201811L
+# error "__cpp_lib_array_constexpr should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_as_const
+# error "__cpp_lib_as_const should be defined in c++23"
+# endif
+# if __cpp_lib_as_const != 201510L
+# error "__cpp_lib_as_const should have the value 201510L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_erasure
+# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++23"
+# endif
+# if __cpp_lib_associative_heterogeneous_erasure != 202110L
+# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++23"
+# 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
+
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_assume_aligned
+# error "__cpp_lib_assume_aligned should be defined in c++23"
+# endif
+# if __cpp_lib_assume_aligned != 201811L
+# error "__cpp_lib_assume_aligned should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_atomic_flag_test
+# error "__cpp_lib_atomic_flag_test should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_flag_test != 201907L
+# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++23"
+# endif
+
+# ifndef __cpp_lib_atomic_is_always_lock_free
+# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++23"
+# 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++23"
+# endif
+
+# ifndef __cpp_lib_atomic_lock_free_type_aliases
+# error "__cpp_lib_atomic_lock_free_type_aliases should be defined in c++23"
+# 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++23"
+# endif
+
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_atomic_ref
+# error "__cpp_lib_atomic_ref should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_ref != 201806L
+# error "__cpp_lib_atomic_ref should have the value 201806L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_shared_ptr
+# error "__cpp_lib_atomic_shared_ptr should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_shared_ptr != 201711L
+# error "__cpp_lib_atomic_shared_ptr should have the value 201711L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_atomic_value_initialization != 201911L
+# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC
+# ifndef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_wait != 201907L
+# error "__cpp_lib_atomic_wait should have the value 201907L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_atomic_wait
+# error "__cpp_lib_atomic_wait should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_barrier
+# error "__cpp_lib_barrier should be defined in c++23"
+# endif
+# if __cpp_lib_barrier != 201907L
+# error "__cpp_lib_barrier should have the value 201907L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_barrier
+# error "__cpp_lib_barrier should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_bind_back
+# error "__cpp_lib_bind_back should be defined in c++23"
+# endif
+# if __cpp_lib_bind_back != 202202L
+# error "__cpp_lib_bind_back should have the value 202202L in c++23"
+# endif
+
+# ifndef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should be defined in c++23"
+# endif
+# if __cpp_lib_bind_front != 201907L
+# error "__cpp_lib_bind_front should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_bit_cast
+# error "__cpp_lib_bit_cast should be defined in c++23"
+# endif
+# if __cpp_lib_bit_cast != 201806L
+# error "__cpp_lib_bit_cast should have the value 201806L in c++23"
+# endif
+
+# ifndef __cpp_lib_bitops
+# error "__cpp_lib_bitops should be defined in c++23"
+# endif
+# if __cpp_lib_bitops != 201907L
+# error "__cpp_lib_bitops should have the value 201907L in c++23"
+# endif
+
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_bool_constant
+# error "__cpp_lib_bool_constant should be defined in c++23"
+# endif
+# if __cpp_lib_bool_constant != 201505L
+# error "__cpp_lib_bool_constant should have the value 201505L in c++23"
+# endif
+
+# ifndef __cpp_lib_bounded_array_traits
+# error "__cpp_lib_bounded_array_traits should be defined in c++23"
+# endif
+# if __cpp_lib_bounded_array_traits != 201902L
+# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++23"
+# endif
+
+# ifndef __cpp_lib_boyer_moore_searcher
+# error "__cpp_lib_boyer_moore_searcher should be defined in c++23"
+# endif
+# if __cpp_lib_boyer_moore_searcher != 201603L
+# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_byte
+# error "__cpp_lib_byte should be defined in c++23"
+# endif
+# if __cpp_lib_byte != 201603L
+# error "__cpp_lib_byte should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_byteswap
+# error "__cpp_lib_byteswap should be defined in c++23"
+# endif
+# if __cpp_lib_byteswap != 202110L
+# error "__cpp_lib_byteswap should have the value 202110L in c++23"
+# endif
+
+# if defined(__cpp_char8_t)
+# ifndef __cpp_lib_char8_t
+# error "__cpp_lib_char8_t should be defined in c++23"
+# endif
+# if __cpp_lib_char8_t != 201907L
+# error "__cpp_lib_char8_t should have the value 201907L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_chrono != 201611L
+# error "__cpp_lib_chrono should have the value 201611L in c++23"
+# endif
+
+# ifndef __cpp_lib_chrono_udls
+# error "__cpp_lib_chrono_udls should be defined in c++23"
+# endif
+# if __cpp_lib_chrono_udls != 201304L
+# error "__cpp_lib_chrono_udls should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_clamp
+# error "__cpp_lib_clamp should be defined in c++23"
+# endif
+# if __cpp_lib_clamp != 201603L
+# error "__cpp_lib_clamp should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_complex_udls
+# error "__cpp_lib_complex_udls should be defined in c++23"
+# endif
+# if __cpp_lib_complex_udls != 201309L
+# error "__cpp_lib_complex_udls should have the value 201309L in c++23"
+# endif
+
+# ifndef __cpp_lib_concepts
+# error "__cpp_lib_concepts should be defined in c++23"
+# endif
+# if __cpp_lib_concepts != 202002L
+# error "__cpp_lib_concepts should have the value 202002L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_algorithms
+# error "__cpp_lib_constexpr_algorithms should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_algorithms != 201806L
+# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_bitset
+# error "__cpp_lib_constexpr_bitset should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_bitset != 202207L
+# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_charconv
+# error "__cpp_lib_constexpr_charconv should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_charconv != 202207L
+# error "__cpp_lib_constexpr_charconv should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constexpr_cmath
+# error "__cpp_lib_constexpr_cmath should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_cmath != 202202L
+# error "__cpp_lib_constexpr_cmath should have the value 202202L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_constexpr_complex != 201711L
+# error "__cpp_lib_constexpr_complex should have the value 201711L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_dynamic_alloc
+# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_dynamic_alloc != 201907L
+# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_functional
+# error "__cpp_lib_constexpr_functional should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_functional != 201907L
+# error "__cpp_lib_constexpr_functional should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_iterator
+# error "__cpp_lib_constexpr_iterator should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_iterator != 201811L
+# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_memory
+# error "__cpp_lib_constexpr_memory should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_memory != 202202L
+# error "__cpp_lib_constexpr_memory should have the value 202202L in c++23"
+# endif
+
+# ifdef __cpp_lib_constexpr_new
+# error "__cpp_lib_constexpr_new should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_constexpr_numeric
+# error "__cpp_lib_constexpr_numeric should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_numeric != 201911L
+# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_string
+# error "__cpp_lib_constexpr_string should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_string != 201907L
+# error "__cpp_lib_constexpr_string should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_string_view
+# error "__cpp_lib_constexpr_string_view should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_string_view != 201811L
+# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_tuple
+# error "__cpp_lib_constexpr_tuple should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_tuple != 201811L
+# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_typeinfo
+# error "__cpp_lib_constexpr_typeinfo should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_typeinfo != 202106L
+# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_utility
+# error "__cpp_lib_constexpr_utility should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_utility != 201811L
+# error "__cpp_lib_constexpr_utility should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_constexpr_vector
+# error "__cpp_lib_constexpr_vector should be defined in c++23"
+# endif
+# if __cpp_lib_constexpr_vector != 201907L
+# error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
+# endif
+
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_containers_ranges
+# error "__cpp_lib_containers_ranges should be defined in c++23"
+# endif
+# if __cpp_lib_containers_ranges != 202202L
+# error "__cpp_lib_containers_ranges should have the value 202202L in c++23"
+# endif
+
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_coroutine
+# error "__cpp_lib_coroutine should be defined in c++23"
+# endif
+# if __cpp_lib_coroutine != 201902L
+# error "__cpp_lib_coroutine should have the value 201902L in c++23"
+# endif
+
+# ifdef __cpp_lib_debugging
+# error "__cpp_lib_debugging should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
+# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
+# ifndef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should be defined in c++23"
+# endif
+# if __cpp_lib_destroying_delete != 201806L
+# error "__cpp_lib_destroying_delete should have the value 201806L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_enable_shared_from_this != 201603L
+# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_endian
+# error "__cpp_lib_endian should be defined in c++23"
+# endif
+# if __cpp_lib_endian != 201907L
+# error "__cpp_lib_endian should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_erase_if
+# error "__cpp_lib_erase_if should be defined in c++23"
+# endif
+# if __cpp_lib_erase_if != 202002L
+# error "__cpp_lib_erase_if should have the value 202002L in c++23"
+# endif
+
+# ifndef __cpp_lib_exchange_function
+# error "__cpp_lib_exchange_function should be defined in c++23"
+# endif
+# if __cpp_lib_exchange_function != 201304L
+# error "__cpp_lib_exchange_function should have the value 201304L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_execution
+# error "__cpp_lib_execution should be defined in c++23"
+# endif
+# if __cpp_lib_execution != 201902L
+# error "__cpp_lib_execution should have the value 201902L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_expected != 202211L
+# error "__cpp_lib_expected should have the value 202211L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
+# ifndef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should be defined in c++23"
+# endif
+# if __cpp_lib_filesystem != 201703L
+# error "__cpp_lib_filesystem should have the value 201703L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_filesystem
+# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_flat_map
+# error "__cpp_lib_flat_map should be defined in c++23"
+# endif
+# if __cpp_lib_flat_map != 202207L
+# error "__cpp_lib_flat_map should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_flat_set
+# error "__cpp_lib_flat_set should be defined in c++23"
+# endif
+# if __cpp_lib_flat_set != 202207L
+# error "__cpp_lib_flat_set should have the value 202207L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_flat_set
+# error "__cpp_lib_flat_set should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
+# ifndef __cpp_lib_format
+# error "__cpp_lib_format should be defined in c++23"
+# endif
+# if __cpp_lib_format != 202110L
+# error "__cpp_lib_format should have the value 202110L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_format
+# error "__cpp_lib_format should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_format_ranges
+# error "__cpp_lib_format_ranges should be defined in c++23"
+# endif
+# if __cpp_lib_format_ranges != 202207L
+# error "__cpp_lib_format_ranges should have the value 202207L in c++23"
+# endif
+
+# ifndef __cpp_lib_format_uchar
+# error "__cpp_lib_format_uchar should be defined in c++23"
+# endif
+# if __cpp_lib_format_uchar != 202311L
+# error "__cpp_lib_format_uchar should have the value 202311L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_formatters
+# error "__cpp_lib_formatters should be defined in c++23"
+# endif
+# if __cpp_lib_formatters != 202302L
+# error "__cpp_lib_formatters should have the value 202302L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_forward_like != 202207L
+# error "__cpp_lib_forward_like should have the value 202207L in c++23"
+# endif
+
+# ifdef __cpp_lib_freestanding_algorithm
+# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_array
+# error "__cpp_lib_freestanding_array should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_cstring
+# error "__cpp_lib_freestanding_cstring should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_expected
+# error "__cpp_lib_freestanding_expected should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_mdspan
+# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_optional
+# error "__cpp_lib_freestanding_optional should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_string_view
+# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_freestanding_variant
+# error "__cpp_lib_freestanding_variant should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_gcd_lcm
+# error "__cpp_lib_gcd_lcm should be defined in c++23"
+# endif
+# if __cpp_lib_gcd_lcm != 201606L
+# error "__cpp_lib_gcd_lcm should have the value 201606L in c++23"
+# endif
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup should be defined in c++23"
+# endif
+# if __cpp_lib_generic_associative_lookup != 201304L
+# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_generic_unordered_lookup
+# error "__cpp_lib_generic_unordered_lookup should be defined in c++23"
+# endif
+# if __cpp_lib_generic_unordered_lookup != 201811L
+# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (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++23"
+# endif
+# if __cpp_lib_hardware_interference_size != 201703L
+# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_hardware_interference_size
+# error "__cpp_lib_hardware_interference_size should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (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++23"
+# endif
+# if __cpp_lib_has_unique_object_representations != 201606L
+# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++23"
+# endif
+
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_hypot
+# error "__cpp_lib_hypot should be defined in c++23"
+# endif
+# if __cpp_lib_hypot != 201603L
+# error "__cpp_lib_hypot should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_incomplete_container_elements
+# error "__cpp_lib_incomplete_container_elements should be defined in c++23"
+# endif
+# if __cpp_lib_incomplete_container_elements != 201505L
+# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++23"
+# endif
+
+# ifdef __cpp_lib_inplace_vector
+# error "__cpp_lib_inplace_vector should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_int_pow2
+# error "__cpp_lib_int_pow2 should be defined in c++23"
+# endif
+# if __cpp_lib_int_pow2 != 202002L
+# error "__cpp_lib_int_pow2 should have the value 202002L in c++23"
+# endif
+
+# ifndef __cpp_lib_integer_comparison_functions
+# error "__cpp_lib_integer_comparison_functions should be defined in c++23"
+# endif
+# if __cpp_lib_integer_comparison_functions != 202002L
+# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++23"
+# endif
+
+# ifndef __cpp_lib_integer_sequence
+# error "__cpp_lib_integer_sequence should be defined in c++23"
+# endif
+# if __cpp_lib_integer_sequence != 201304L
+# error "__cpp_lib_integer_sequence should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_integral_constant_callable
+# error "__cpp_lib_integral_constant_callable should be defined in c++23"
+# endif
+# if __cpp_lib_integral_constant_callable != 201304L
+# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_interpolate
+# error "__cpp_lib_interpolate should be defined in c++23"
+# endif
+# if __cpp_lib_interpolate != 201902L
+# error "__cpp_lib_interpolate should have the value 201902L in c++23"
+# endif
+
+# ifndef __cpp_lib_invoke
+# error "__cpp_lib_invoke should be defined in c++23"
+# endif
+# if __cpp_lib_invoke != 201411L
+# error "__cpp_lib_invoke should have the value 201411L in c++23"
+# endif
+
+# ifndef __cpp_lib_invoke_r
+# error "__cpp_lib_invoke_r should be defined in c++23"
+# endif
+# if __cpp_lib_invoke_r != 202106L
+# error "__cpp_lib_invoke_r should have the value 202106L in c++23"
+# endif
+
+# ifndef __cpp_lib_ios_noreplace
+# error "__cpp_lib_ios_noreplace should be defined in c++23"
+# endif
+# if __cpp_lib_ios_noreplace != 202207L
+# error "__cpp_lib_ios_noreplace should have the value 202207L in c++23"
+# endif
+
+# ifndef __cpp_lib_is_aggregate
+# error "__cpp_lib_is_aggregate should be defined in c++23"
+# endif
+# if __cpp_lib_is_aggregate != 201703L
+# error "__cpp_lib_is_aggregate should have the value 201703L in c++23"
+# endif
+
+# ifndef __cpp_lib_is_constant_evaluated
+# error "__cpp_lib_is_constant_evaluated should be defined in c++23"
+# endif
+# if __cpp_lib_is_constant_evaluated != 201811L
+# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_is_final
+# error "__cpp_lib_is_final should be defined in c++23"
+# endif
+# if __cpp_lib_is_final != 201402L
+# error "__cpp_lib_is_final should have the value 201402L in c++23"
+# endif
+
+# if __has_builtin(__builtin_is_implicit_lifetime)
+# ifndef __cpp_lib_is_implicit_lifetime
+# error "__cpp_lib_is_implicit_lifetime should be defined in c++23"
+# endif
+# if __cpp_lib_is_implicit_lifetime != 202302L
+# error "__cpp_lib_is_implicit_lifetime should have the value 202302L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_is_implicit_lifetime
+# error "__cpp_lib_is_implicit_lifetime should not be defined when the requirement '__has_builtin(__builtin_is_implicit_lifetime)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_is_invocable
+# error "__cpp_lib_is_invocable should be defined in c++23"
+# endif
+# if __cpp_lib_is_invocable != 201703L
+# error "__cpp_lib_is_invocable should have the value 201703L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_layout_compatible
+# error "__cpp_lib_is_layout_compatible should be defined in c++23"
+# endif
+# if __cpp_lib_is_layout_compatible != 201907L
+# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_is_nothrow_convertible != 201806L
+# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++23"
+# endif
+
+# ifndef __cpp_lib_is_null_pointer
+# error "__cpp_lib_is_null_pointer should be defined in c++23"
+# endif
+# if __cpp_lib_is_null_pointer != 201309L
+# error "__cpp_lib_is_null_pointer should have the value 201309L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_pointer_interconvertible
+# error "__cpp_lib_is_pointer_interconvertible should be defined in c++23"
+# endif
+# if __cpp_lib_is_pointer_interconvertible != 201907L
+# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_is_scoped_enum != 202011L
+# error "__cpp_lib_is_scoped_enum should have the value 202011L in c++23"
+# endif
+
+# ifndef __cpp_lib_is_swappable
+# error "__cpp_lib_is_swappable should be defined in c++23"
+# endif
+# if __cpp_lib_is_swappable != 201603L
+# error "__cpp_lib_is_swappable should have the value 201603L in c++23"
+# endif
+
+# ifdef __cpp_lib_is_virtual_base_of
+# error "__cpp_lib_is_virtual_base_of should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_is_within_lifetime
+# error "__cpp_lib_is_within_lifetime should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_jthread
+# error "__cpp_lib_jthread should be defined in c++23"
+# endif
+# if __cpp_lib_jthread != 201911L
+# error "__cpp_lib_jthread should have the value 201911L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_jthread
+# error "__cpp_lib_jthread should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_latch
+# error "__cpp_lib_latch should be defined in c++23"
+# endif
+# if __cpp_lib_latch != 201907L
+# error "__cpp_lib_latch should have the value 201907L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_latch
+# error "__cpp_lib_latch should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_launder
+# error "__cpp_lib_launder should be defined in c++23"
+# endif
+# if __cpp_lib_launder != 201606L
+# error "__cpp_lib_launder should have the value 201606L in c++23"
+# endif
+
+# ifdef __cpp_lib_linalg
+# error "__cpp_lib_linalg should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should be defined in c++23"
+# endif
+# if __cpp_lib_list_remove_return_type != 201806L
+# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++23"
+# endif
+
+# ifndef __cpp_lib_logical_traits
+# error "__cpp_lib_logical_traits should be defined in c++23"
+# endif
+# if __cpp_lib_logical_traits != 201510L
+# error "__cpp_lib_logical_traits should have the value 201510L in c++23"
+# endif
+
+# ifndef __cpp_lib_make_from_tuple
+# error "__cpp_lib_make_from_tuple should be defined in c++23"
+# endif
+# if __cpp_lib_make_from_tuple != 201606L
+# error "__cpp_lib_make_from_tuple should have the value 201606L in c++23"
+# endif
+
+# ifndef __cpp_lib_make_reverse_iterator
+# error "__cpp_lib_make_reverse_iterator should be defined in c++23"
+# endif
+# if __cpp_lib_make_reverse_iterator != 201402L
+# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++23"
+# endif
+
+# ifndef __cpp_lib_make_unique
+# error "__cpp_lib_make_unique should be defined in c++23"
+# endif
+# if __cpp_lib_make_unique != 201304L
+# error "__cpp_lib_make_unique should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_map_try_emplace
+# error "__cpp_lib_map_try_emplace should be defined in c++23"
+# endif
+# if __cpp_lib_map_try_emplace != 201411L
+# error "__cpp_lib_map_try_emplace should have the value 201411L in c++23"
+# endif
+
+# ifndef __cpp_lib_math_constants
+# error "__cpp_lib_math_constants should be defined in c++23"
+# endif
+# if __cpp_lib_math_constants != 201907L
+# error "__cpp_lib_math_constants should have the value 201907L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_math_special_functions
+# error "__cpp_lib_math_special_functions should be defined in c++23"
+# endif
+# if __cpp_lib_math_special_functions != 201603L
+# error "__cpp_lib_math_special_functions should have the value 201603L in c++23"
+# 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
+
+# ifndef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should be defined in c++23"
+# endif
+# if __cpp_lib_mdspan != 202207L
+# error "__cpp_lib_mdspan should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# ifndef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should be defined in c++23"
+# endif
+# if __cpp_lib_memory_resource != 201603L
+# error "__cpp_lib_memory_resource should have the value 201603L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_modules
+# error "__cpp_lib_modules should be defined in c++23"
+# endif
+# if __cpp_lib_modules != 202207L
+# error "__cpp_lib_modules should have the value 202207L in c++23"
+# endif
+
+# ifndef __cpp_lib_move_iterator_concept
+# error "__cpp_lib_move_iterator_concept should be defined in c++23"
+# endif
+# if __cpp_lib_move_iterator_concept != 202207L
+# error "__cpp_lib_move_iterator_concept should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_move_only_function
+# error "__cpp_lib_move_only_function should be defined in c++23"
+# endif
+# if __cpp_lib_move_only_function != 202110L
+# error "__cpp_lib_move_only_function should have the value 202110L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_node_extract != 201606L
+# error "__cpp_lib_node_extract should have the value 201606L in c++23"
+# endif
+
+# ifndef __cpp_lib_nonmember_container_access
+# error "__cpp_lib_nonmember_container_access should be defined in c++23"
+# endif
+# if __cpp_lib_nonmember_container_access != 201411L
+# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
+# endif
+
+# ifndef __cpp_lib_not_fn
+# error "__cpp_lib_not_fn should be defined in c++23"
+# endif
+# if __cpp_lib_not_fn != 201603L
+# error "__cpp_lib_not_fn should have the value 201603L in c++23"
+# endif
+
+# ifndef __cpp_lib_null_iterators
+# error "__cpp_lib_null_iterators should be defined in c++23"
+# endif
+# if __cpp_lib_null_iterators != 201304L
+# error "__cpp_lib_null_iterators should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_optional
+# error "__cpp_lib_optional should be defined in c++23"
+# endif
+# if __cpp_lib_optional != 202110L
+# error "__cpp_lib_optional should have the value 202110L in c++23"
+# endif
+
+# ifdef __cpp_lib_optional_range_support
+# error "__cpp_lib_optional_range_support should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_out_ptr
+# error "__cpp_lib_out_ptr should be defined in c++23"
+# endif
+# if __cpp_lib_out_ptr != 202106L
+# error "__cpp_lib_out_ptr should have the value 202106L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_parallel_algorithm
+# error "__cpp_lib_parallel_algorithm should be defined in c++23"
+# endif
+# if __cpp_lib_parallel_algorithm != 201603L
+# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++23"
+# 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
+
+# ifdef __cpp_lib_philox_engine
+# error "__cpp_lib_philox_engine should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# ifndef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should be defined in c++23"
+# endif
+# if __cpp_lib_polymorphic_allocator != 201902L
+# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
+# ifndef __cpp_lib_print
+# error "__cpp_lib_print should be defined in c++23"
+# endif
+# if __cpp_lib_print != 202207L
+# error "__cpp_lib_print should have the value 202207L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_print
+# error "__cpp_lib_print should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
+# ifndef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should be defined in c++23"
+# endif
+# if __cpp_lib_quoted_string_io != 201304L
+# error "__cpp_lib_quoted_string_io should have the value 201304L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++23"
+# endif
+# if __cpp_lib_ranges != 202406L
+# error "__cpp_lib_ranges should have the value 202406L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_const
+# error "__cpp_lib_ranges_as_const should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_as_const != 202207L
+# error "__cpp_lib_ranges_as_const should have the value 202207L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_as_const
+# error "__cpp_lib_ranges_as_const should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges_as_rvalue
+# error "__cpp_lib_ranges_as_rvalue should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_as_rvalue != 202207L
+# error "__cpp_lib_ranges_as_rvalue should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_chunk
+# error "__cpp_lib_ranges_chunk should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_chunk != 202202L
+# error "__cpp_lib_ranges_chunk should have the value 202202L in c++23"
+# 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
+
+# ifndef __cpp_lib_ranges_chunk_by
+# error "__cpp_lib_ranges_chunk_by should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_chunk_by != 202202L
+# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++23"
+# endif
+
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_ranges_contains
+# error "__cpp_lib_ranges_contains should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_contains != 202207L
+# error "__cpp_lib_ranges_contains should have the value 202207L in c++23"
+# endif
+
+# ifndef __cpp_lib_ranges_find_last
+# error "__cpp_lib_ranges_find_last should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_find_last != 202207L
+# error "__cpp_lib_ranges_find_last should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_iota
+# error "__cpp_lib_ranges_iota should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_iota != 202202L
+# error "__cpp_lib_ranges_iota should have the value 202202L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_ranges_join_with != 202202L
+# error "__cpp_lib_ranges_join_with should have the value 202202L in c++23"
+# 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
+
+# ifndef __cpp_lib_ranges_repeat
+# error "__cpp_lib_ranges_repeat should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_repeat != 202207L
+# error "__cpp_lib_ranges_repeat should have the value 202207L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_slide
+# error "__cpp_lib_ranges_slide should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_slide != 202202L
+# error "__cpp_lib_ranges_slide should have the value 202202L in c++23"
+# 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
+
+# ifndef __cpp_lib_ranges_starts_ends_with
+# error "__cpp_lib_ranges_starts_ends_with should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_starts_ends_with != 202106L
+# error "__cpp_lib_ranges_starts_ends_with should have the value 202106L in c++23"
+# endif
+
+# ifndef __cpp_lib_ranges_to_container
+# error "__cpp_lib_ranges_to_container should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_to_container != 202202L
+# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_zip
+# error "__cpp_lib_ranges_zip should be defined in c++23"
+# endif
+# if __cpp_lib_ranges_zip != 202110L
+# error "__cpp_lib_ranges_zip should have the value 202110L in c++23"
+# 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
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_raw_memory_algorithms
+# error "__cpp_lib_raw_memory_algorithms should be defined in c++23"
+# endif
+# if __cpp_lib_raw_memory_algorithms != 201606L
+# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++23"
+# endif
+
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_reference_from_temporary
+# error "__cpp_lib_reference_from_temporary should be defined in c++23"
+# endif
+# if __cpp_lib_reference_from_temporary != 202202L
+# error "__cpp_lib_reference_from_temporary should have the value 202202L in c++23"
+# 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
+
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_remove_cvref
+# error "__cpp_lib_remove_cvref should be defined in c++23"
+# endif
+# if __cpp_lib_remove_cvref != 201711L
+# error "__cpp_lib_remove_cvref should have the value 201711L in c++23"
+# endif
+
+# ifndef __cpp_lib_result_of_sfinae
+# error "__cpp_lib_result_of_sfinae should be defined in c++23"
+# endif
+# if __cpp_lib_result_of_sfinae != 201210L
+# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++23"
+# endif
+
+# ifndef __cpp_lib_robust_nonmodifying_seq_ops
+# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++23"
+# endif
+# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
+# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_sample
+# error "__cpp_lib_sample should be defined in c++23"
+# endif
+# if __cpp_lib_sample != 201603L
+# error "__cpp_lib_sample should have the value 201603L in c++23"
+# endif
+
+# ifdef __cpp_lib_saturation_arithmetic
+# error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should be defined in c++23"
+# endif
+# if __cpp_lib_scoped_lock != 201703L
+# error "__cpp_lib_scoped_lock should have the value 201703L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# ifndef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should be defined in c++23"
+# endif
+# if __cpp_lib_semaphore != 201907L
+# error "__cpp_lib_semaphore should have the value 201907L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_semaphore
+# error "__cpp_lib_semaphore should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_senders
+# error "__cpp_lib_senders should not be defined before c++26"
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should be defined in c++23"
+# endif
+# if __cpp_lib_shared_mutex != 201505L
+# error "__cpp_lib_shared_mutex should have the value 201505L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_shared_mutex
+# error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shared_ptr_arrays
+# error "__cpp_lib_shared_ptr_arrays should be defined in c++23"
+# endif
+# if __cpp_lib_shared_ptr_arrays != 201707L
+# error "__cpp_lib_shared_ptr_arrays should have the value 201707L in c++23"
+# endif
+
+# ifndef __cpp_lib_shared_ptr_weak_type
+# error "__cpp_lib_shared_ptr_weak_type should be defined in c++23"
+# endif
+# if __cpp_lib_shared_ptr_weak_type != 201606L
+# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++23"
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# ifndef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should be defined in c++23"
+# endif
+# if __cpp_lib_shared_timed_mutex != 201402L
+# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_shared_timed_mutex
+# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_shift
+# error "__cpp_lib_shift should be defined in c++23"
+# endif
+# if __cpp_lib_shift != 201806L
+# error "__cpp_lib_shift should have the value 201806L in c++23"
+# endif
+
+# ifndef __cpp_lib_smart_ptr_for_overwrite
+# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++23"
+# endif
+# if __cpp_lib_smart_ptr_for_overwrite != 202002L
+# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++23"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_source_location
+# error "__cpp_lib_source_location should be defined in c++23"
+# endif
+# if __cpp_lib_source_location != 201907L
+# error "__cpp_lib_source_location should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_span
+# error "__cpp_lib_span should be defined in c++23"
+# endif
+# if __cpp_lib_span != 202002L
+# error "__cpp_lib_span should have the value 202002L in c++23"
+# endif
+
+# ifdef __cpp_lib_span_at
+# error "__cpp_lib_span_at should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_span_initializer_list
+# error "__cpp_lib_span_initializer_list should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_spanstream
+# error "__cpp_lib_spanstream should be defined in c++23"
+# endif
+# if __cpp_lib_spanstream != 202106L
+# error "__cpp_lib_spanstream should have the value 202106L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_ssize != 201902L
+# error "__cpp_lib_ssize should have the value 201902L in c++23"
+# endif
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_stacktrace
+# error "__cpp_lib_stacktrace should be defined in c++23"
+# endif
+# if __cpp_lib_stacktrace != 202011L
+# error "__cpp_lib_stacktrace should have the value 202011L in c++23"
+# 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++23"
+# endif
+# if __cpp_lib_starts_ends_with != 201711L
+# error "__cpp_lib_starts_ends_with should have the value 201711L in c++23"
+# endif
+
+# ifndef __cpp_lib_stdatomic_h
+# error "__cpp_lib_stdatomic_h should be defined in c++23"
+# endif
+# if __cpp_lib_stdatomic_h != 202011L
+# error "__cpp_lib_stdatomic_h should have the value 202011L in c++23"
+# endif
+
+# ifndef __cpp_lib_string_contains
+# error "__cpp_lib_string_contains should be defined in c++23"
+# endif
+# if __cpp_lib_string_contains != 202011L
+# error "__cpp_lib_string_contains should have the value 202011L in c++23"
+# endif
+
+# ifndef __cpp_lib_string_resize_and_overwrite
+# error "__cpp_lib_string_resize_and_overwrite should be defined in c++23"
+# endif
+# if __cpp_lib_string_resize_and_overwrite != 202110L
+# error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++23"
+# endif
+
+# ifndef __cpp_lib_string_udls
+# error "__cpp_lib_string_udls should be defined in c++23"
+# endif
+# if __cpp_lib_string_udls != 201304L
+# error "__cpp_lib_string_udls should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_string_view
+# error "__cpp_lib_string_view should be defined in c++23"
+# endif
+# if __cpp_lib_string_view != 201803L
+# error "__cpp_lib_string_view should have the value 201803L in c++23"
+# endif
+
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM
+# ifndef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should be defined in c++23"
+# endif
+# if __cpp_lib_syncbuf != 201803L
+# error "__cpp_lib_syncbuf should have the value 201803L in c++23"
+# endif
+# else
+# ifdef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM' is not met!"
+# endif
+# endif
+
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_three_way_comparison
+# error "__cpp_lib_three_way_comparison should be defined in c++23"
+# endif
+# if __cpp_lib_three_way_comparison != 201907L
+# error "__cpp_lib_three_way_comparison should have the value 201907L in c++23"
+# endif
+
+# ifndef __cpp_lib_to_address
+# error "__cpp_lib_to_address should be defined in c++23"
+# endif
+# if __cpp_lib_to_address != 201711L
+# error "__cpp_lib_to_address should have the value 201711L in c++23"
+# endif
+
+# ifndef __cpp_lib_to_array
+# error "__cpp_lib_to_array should be defined in c++23"
+# endif
+# if __cpp_lib_to_array != 201907L
+# error "__cpp_lib_to_array should have the value 201907L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_chars
+# error "__cpp_lib_to_chars should be defined in c++23"
+# endif
+# if __cpp_lib_to_chars != 201611L
+# error "__cpp_lib_to_chars should have the value 201611L in c++23"
+# 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
+
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++26"
+# endif
+
+# ifndef __cpp_lib_to_underlying
+# error "__cpp_lib_to_underlying should be defined in c++23"
+# endif
+# if __cpp_lib_to_underlying != 202102L
+# error "__cpp_lib_to_underlying should have the value 202102L in c++23"
+# endif
+
+# ifndef __cpp_lib_transformation_trait_aliases
+# error "__cpp_lib_transformation_trait_aliases should be defined in c++23"
+# endif
+# if __cpp_lib_transformation_trait_aliases != 201304L
+# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+# error "__cpp_lib_transparent_operators should be defined in c++23"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+# error "__cpp_lib_transparent_operators should have the value 201510L in c++23"
+# endif
+
+# ifndef __cpp_lib_tuple_element_t
+# error "__cpp_lib_tuple_element_t should be defined in c++23"
+# endif
+# if __cpp_lib_tuple_element_t != 201402L
+# error "__cpp_lib_tuple_element_t should have the value 201402L in c++23"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_tuple_like
+# error "__cpp_lib_tuple_like should be defined in c++23"
+# endif
+# if __cpp_lib_tuple_like != 202207L
+# error "__cpp_lib_tuple_like should have the value 202207L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_tuple_like
+# error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++23"
+# endif
+# if __cpp_lib_tuples_by_type != 201304L
+# error "__cpp_lib_tuples_by_type should have the value 201304L in c++23"
+# endif
+
+# ifndef __cpp_lib_type_identity
+# error "__cpp_lib_type_identity should be defined in c++23"
+# endif
+# if __cpp_lib_type_identity != 201806L
+# error "__cpp_lib_type_identity should have the value 201806L in c++23"
+# endif
+
+# ifndef __cpp_lib_type_trait_variable_templates
+# error "__cpp_lib_type_trait_variable_templates should be defined in c++23"
+# endif
+# if __cpp_lib_type_trait_variable_templates != 201510L
+# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++23"
+# endif
+
+# ifndef __cpp_lib_uncaught_exceptions
+# error "__cpp_lib_uncaught_exceptions should be defined in c++23"
+# endif
+# if __cpp_lib_uncaught_exceptions != 201411L
+# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++23"
+# endif
+
+# ifndef __cpp_lib_unordered_map_try_emplace
+# error "__cpp_lib_unordered_map_try_emplace should be defined in c++23"
+# endif
+# if __cpp_lib_unordered_map_try_emplace != 201411L
+# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++23"
+# endif
+
+# ifndef __cpp_lib_unreachable
+# error "__cpp_lib_unreachable should be defined in c++23"
+# endif
+# if __cpp_lib_unreachable != 202202L
+# error "__cpp_lib_unreachable should have the value 202202L in c++23"
+# endif
+
+# ifndef __cpp_lib_unwrap_ref
+# error "__cpp_lib_unwrap_ref should be defined in c++23"
+# endif
+# if __cpp_lib_unwrap_ref != 201811L
+# error "__cpp_lib_unwrap_ref should have the value 201811L in c++23"
+# endif
+
+# ifndef __cpp_lib_variant
+# error "__cpp_lib_variant should be defined in c++23"
+# endif
+# if __cpp_lib_variant != 202106L
+# error "__cpp_lib_variant should have the value 202106L in c++23"
+# endif
+
+# ifndef __cpp_lib_void_t
+# error "__cpp_lib_void_t should be defined in c++23"
+# endif
+# if __cpp_lib_void_t != 201411L
+# error "__cpp_lib_void_t should have the value 201411L in c++23"
+# endif
+
+#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 != 202302L
+# error "__cpp_lib_allocate_at_least should have the value 202302L 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_insertion != 202306L
+# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
+
+# 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
+
+# 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_min_max
+# error "__cpp_lib_atomic_min_max should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_min_max != 202403L
+# error "__cpp_lib_atomic_min_max should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# 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
+
+# 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_VERSION) || _LIBCPP_AVAILABILITY_HAS_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_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# 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
+
+# ifndef __cpp_lib_bind_front
+# error "__cpp_lib_bind_front should be defined in c++26"
+# endif
+# if __cpp_lib_bind_front != 202306L
+# error "__cpp_lib_bind_front should have the value 202306L 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
+
+# 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
+
+# ifndef __cpp_lib_bitset
+# error "__cpp_lib_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_bitset != 202306L
+# error "__cpp_lib_bitset should have the value 202306L in c++26"
+# 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_forward_list
+# error "__cpp_lib_constexpr_forward_list should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_forward_list != 202502L
+# error "__cpp_lib_constexpr_forward_list should have the value 202502L 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
+
+# if !defined(_LIBCPP_ABI_VCRUNTIME)
+# ifndef __cpp_lib_constexpr_new
+# error "__cpp_lib_constexpr_new should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_new != 202406L
+# error "__cpp_lib_constexpr_new should have the value 202406L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_constexpr_new
+# error "__cpp_lib_constexpr_new should not be defined when the requirement '!defined(_LIBCPP_ABI_VCRUNTIME)' is not met!"
+# endif
+# 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should be defined in c++26"
+# endif
+# if __cpp_lib_constrained_equality != 202403L
+# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_containers_ranges
+# error "__cpp_lib_containers_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_containers_ranges != 202202L
+# error "__cpp_lib_containers_ranges should have the value 202202L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should be defined in c++26"
+# endif
+# if __cpp_lib_copyable_function != 202306L
+# error "__cpp_lib_copyable_function should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!"
+# endif
+# 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 !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_debugging
+# error "__cpp_lib_debugging should be defined in c++26"
+# endif
+# if __cpp_lib_debugging != 202311L
+# error "__cpp_lib_debugging should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_debugging
+# error "__cpp_lib_debugging should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
+# ifndef __cpp_lib_destroying_delete
+# error "__cpp_lib_destroying_delete should be defined in c++26"
+# 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_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
+# 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_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_flat_map
+# error "__cpp_lib_flat_map should be defined in c++26"
+# endif
+# if __cpp_lib_flat_map != 202207L
+# error "__cpp_lib_flat_map should have the value 202207L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_flat_set
+# error "__cpp_lib_flat_set should be defined in c++26"
+# endif
+# if __cpp_lib_flat_set != 202207L
+# error "__cpp_lib_flat_set should have the value 202207L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_flat_set
+# error "__cpp_lib_flat_set should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
+# ifndef __cpp_lib_format
+# error "__cpp_lib_format should be defined in c++26"
+# endif
+# if __cpp_lib_format != 202110L
+# error "__cpp_lib_format should have the value 202110L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_format
+# error "__cpp_lib_format should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format_path
+# error "__cpp_lib_format_path should be defined in c++26"
+# endif
+# if __cpp_lib_format_path != 202403L
+# error "__cpp_lib_format_path should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# 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
+
+# ifndef __cpp_lib_format_uchar
+# error "__cpp_lib_format_uchar should be defined in c++26"
+# endif
+# if __cpp_lib_format_uchar != 202311L
+# error "__cpp_lib_format_uchar should have the value 202311L in c++26"
+# endif
+
+# 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_algorithm
+# error "__cpp_lib_freestanding_algorithm should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_algorithm != 202311L
+# error "__cpp_lib_freestanding_algorithm should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_algorithm
+# error "__cpp_lib_freestanding_algorithm should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_array
+# error "__cpp_lib_freestanding_array should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_array != 202311L
+# error "__cpp_lib_freestanding_array should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_array
+# error "__cpp_lib_freestanding_array should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_cstring
+# error "__cpp_lib_freestanding_cstring should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_cstring != 202306L
+# error "__cpp_lib_freestanding_cstring should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_cstring
+# error "__cpp_lib_freestanding_cstring should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_expected
+# error "__cpp_lib_freestanding_expected should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_expected != 202311L
+# error "__cpp_lib_freestanding_expected should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_expected
+# error "__cpp_lib_freestanding_expected should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_mdspan
+# error "__cpp_lib_freestanding_mdspan should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_mdspan != 202311L
+# error "__cpp_lib_freestanding_mdspan should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_mdspan
+# error "__cpp_lib_freestanding_mdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_optional
+# error "__cpp_lib_freestanding_optional should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_optional != 202311L
+# error "__cpp_lib_freestanding_optional should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_optional
+# error "__cpp_lib_freestanding_optional should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_string_view
+# error "__cpp_lib_freestanding_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_string_view != 202311L
+# error "__cpp_lib_freestanding_string_view should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_string_view
+# error "__cpp_lib_freestanding_string_view should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_freestanding_variant
+# error "__cpp_lib_freestanding_variant should be defined in c++26"
+# endif
+# if __cpp_lib_freestanding_variant != 202311L
+# error "__cpp_lib_freestanding_variant should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_freestanding_variant
+# error "__cpp_lib_freestanding_variant should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION)
+# ifndef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should be defined in c++26"
+# endif
+# if __cpp_lib_fstream_native_handle != 202306L
+# error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should be defined in c++26"
+# endif
+# if __cpp_lib_function_ref != 202306L
+# error "__cpp_lib_function_ref should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!"
+# endif
+# 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should be defined in c++26"
+# endif
+# if __cpp_lib_generate_random != 202403L
+# error "__cpp_lib_generate_random should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined because it is unimplemented in libc++!"
+# endif
+# 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(_LIBCPP_VERSION) || (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(_LIBCPP_VERSION) || (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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should be defined in c++26"
+# endif
+# if __cpp_lib_hazard_pointer != 202306L
+# error "__cpp_lib_hazard_pointer should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer 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_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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_inplace_vector
+# error "__cpp_lib_inplace_vector should be defined in c++26"
+# endif
+# if __cpp_lib_inplace_vector != 202406L
+# error "__cpp_lib_inplace_vector should have the value 202406L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_inplace_vector
+# error "__cpp_lib_inplace_vector should not be defined because it is unimplemented in libc++!"
+# endif
+# 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_ios_noreplace
+# error "__cpp_lib_ios_noreplace should be defined in c++26"
+# endif
+# if __cpp_lib_ios_noreplace != 202207L
+# error "__cpp_lib_ios_noreplace should have the value 202207L 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
+
+# if __has_builtin(__builtin_is_implicit_lifetime)
+# ifndef __cpp_lib_is_implicit_lifetime
+# error "__cpp_lib_is_implicit_lifetime should be defined in c++26"
+# endif
+# if __cpp_lib_is_implicit_lifetime != 202302L
+# error "__cpp_lib_is_implicit_lifetime should have the value 202302L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_is_implicit_lifetime
+# error "__cpp_lib_is_implicit_lifetime should not be defined when the requirement '__has_builtin(__builtin_is_implicit_lifetime)' is not met!"
+# endif
+# 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 __has_builtin(__builtin_is_virtual_base_of)
+# ifndef __cpp_lib_is_virtual_base_of
+# error "__cpp_lib_is_virtual_base_of should be defined in c++26"
+# endif
+# if __cpp_lib_is_virtual_base_of != 202406L
+# error "__cpp_lib_is_virtual_base_of should have the value 202406L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_is_virtual_base_of
+# error "__cpp_lib_is_virtual_base_of should not be defined when the requirement '__has_builtin(__builtin_is_virtual_base_of)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_is_within_lifetime
+# error "__cpp_lib_is_within_lifetime should be defined in c++26"
+# endif
+# if __cpp_lib_is_within_lifetime != 202306L
+# error "__cpp_lib_is_within_lifetime should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_is_within_lifetime
+# error "__cpp_lib_is_within_lifetime should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
+# 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
+# ifdef __cpp_lib_jthread
+# error "__cpp_lib_jthread should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_linalg
+# error "__cpp_lib_linalg should be defined in c++26"
+# endif
+# if __cpp_lib_linalg != 202311L
+# error "__cpp_lib_linalg should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_linalg
+# error "__cpp_lib_linalg should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_list_remove_return_type
+# error "__cpp_lib_list_remove_return_type should be defined in c++26"
+# endif
+# 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
+
+# ifndef __cpp_lib_mdspan
+# error "__cpp_lib_mdspan should be defined in c++26"
+# endif
+# if __cpp_lib_mdspan != 202406L
+# error "__cpp_lib_mdspan should have the value 202406L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# 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
+# else
+# ifdef __cpp_lib_memory_resource
+# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_modules
+# error "__cpp_lib_modules should be defined in c++26"
+# endif
+# if __cpp_lib_modules != 202207L
+# error "__cpp_lib_modules should have the value 202207L 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 != 202306L
+# error "__cpp_lib_not_fn should have the value 202306L 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_optional_range_support
+# error "__cpp_lib_optional_range_support should be defined in c++26"
+# endif
+# if __cpp_lib_optional_range_support != 202406L
+# error "__cpp_lib_optional_range_support should have the value 202406L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_optional_range_support
+# error "__cpp_lib_optional_range_support should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_out_ptr
+# error "__cpp_lib_out_ptr should be defined in c++26"
+# endif
+# if __cpp_lib_out_ptr != 202311L
+# error "__cpp_lib_out_ptr should have the value 202311L 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_philox_engine
+# error "__cpp_lib_philox_engine should be defined in c++26"
+# endif
+# if __cpp_lib_philox_engine != 202406L
+# error "__cpp_lib_philox_engine should have the value 202406L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_philox_engine
+# error "__cpp_lib_philox_engine should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
+# ifndef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should be defined in c++26"
+# endif
+# if __cpp_lib_polymorphic_allocator != 201902L
+# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_polymorphic_allocator
+# error "__cpp_lib_polymorphic_allocator should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
+# ifndef __cpp_lib_print
+# error "__cpp_lib_print should be defined in c++26"
+# endif
+# if __cpp_lib_print != 202207L
+# error "__cpp_lib_print should have the value 202207L in c++26"
+# endif
+# else
+# ifdef __cpp_lib_print
+# error "__cpp_lib_print should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
+# 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
+# else
+# ifdef __cpp_lib_quoted_string_io
+# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges
+# error "__cpp_lib_ranges should be defined in c++26"
+# endif
+# if __cpp_lib_ranges != 202406L
+# error "__cpp_lib_ranges should have the value 202406L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_as_const
+# error "__cpp_lib_ranges_as_const should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_as_const != 202207L
+# error "__cpp_lib_ranges_as_const should have the value 202207L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_as_const
+# error "__cpp_lib_ranges_as_const should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges_as_rvalue
+# error "__cpp_lib_ranges_as_rvalue should be defined in c++26"
+# endif
+# 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
+
+# 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_concat != 202403L
+# error "__cpp_lib_ranges_concat should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_ranges_contains
+# error "__cpp_lib_ranges_contains should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_contains != 202207L
+# error "__cpp_lib_ranges_contains should have the value 202207L in c++26"
+# endif
+
+# ifndef __cpp_lib_ranges_find_last
+# error "__cpp_lib_ranges_find_last should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_find_last != 202207L
+# error "__cpp_lib_ranges_find_last should have the value 202207L in c++26"
+# 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
+
+# ifndef __cpp_lib_ranges_repeat
+# error "__cpp_lib_ranges_repeat should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_repeat != 202207L
+# error "__cpp_lib_ranges_repeat should have the value 202207L in c++26"
+# 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
+
+# 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
+
+# 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
+
+# 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_ratio
+# error "__cpp_lib_ratio should be defined in c++26"
+# endif
+# if __cpp_lib_ratio != 202306L
+# error "__cpp_lib_ratio should have the value 202306L 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_rcu
+# error "__cpp_lib_rcu should be defined in c++26"
+# endif
+# if __cpp_lib_rcu != 202306L
+# error "__cpp_lib_rcu should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined because it is unimplemented in libc++!"
+# endif
+# 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_reference_wrapper
+# error "__cpp_lib_reference_wrapper should be defined in c++26"
+# endif
+# if __cpp_lib_reference_wrapper != 202403L
+# error "__cpp_lib_reference_wrapper should have the value 202403L in c++26"
+# 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_saturation_arithmetic
+# error "__cpp_lib_saturation_arithmetic should be defined in c++26"
+# endif
+# if __cpp_lib_saturation_arithmetic != 202311L
+# error "__cpp_lib_saturation_arithmetic should have the value 202311L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
+# 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
+# else
+# ifdef __cpp_lib_scoped_lock
+# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_senders
+# error "__cpp_lib_senders should be defined in c++26"
+# endif
+# if __cpp_lib_senders != 202406L
+# error "__cpp_lib_senders should have the value 202406L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_senders
+# error "__cpp_lib_senders should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if _LIBCPP_HAS_THREADS
+# 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 '_LIBCPP_HAS_THREADS' 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 _LIBCPP_HAS_THREADS
+# 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 '_LIBCPP_HAS_THREADS' 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
+
+# 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should be defined in c++26"
+# endif
+# if __cpp_lib_smart_ptr_owner_equality != 202306L
+# error "__cpp_lib_smart_ptr_owner_equality should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# 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
+
+# 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
+
+# ifndef __cpp_lib_span_at
+# error "__cpp_lib_span_at should be defined in c++26"
+# endif
+# if __cpp_lib_span_at != 202311L
+# error "__cpp_lib_span_at should have the value 202311L in c++26"
+# endif
+
+# ifndef __cpp_lib_span_initializer_list
+# error "__cpp_lib_span_initializer_list should be defined in c++26"
+# endif
+# if __cpp_lib_span_initializer_list != 202311L
+# error "__cpp_lib_span_initializer_list should have the value 202311L in c++26"
+# endif
+
+# 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
+
+# ifndef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_sstream_from_string_view != 202306L
+# error "__cpp_lib_sstream_from_string_view should have the value 202306L 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 != 202403L
+# error "__cpp_lib_string_view should have the value 202403L in c++26"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should be defined in c++26"
+# endif
+# if __cpp_lib_submdspan != 202306L
+# error "__cpp_lib_submdspan should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM
+# 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
+# ifdef __cpp_lib_syncbuf
+# error "__cpp_lib_syncbuf should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM' is not met!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should be defined in c++26"
+# endif
+# if __cpp_lib_text_encoding != 202306L
+# error "__cpp_lib_text_encoding should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# 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
+
+# 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 != 202306L
+# error "__cpp_lib_to_chars should have the value 202306L 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_string
+# error "__cpp_lib_to_string should be defined in c++26"
+# endif
+# if __cpp_lib_to_string != 202306L
+# error "__cpp_lib_to_string should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string 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
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_tuple_like
+# error "__cpp_lib_tuple_like should be defined in c++26"
+# endif
+# if __cpp_lib_tuple_like != 202311L
+# error "__cpp_lib_tuple_like should have the value 202311L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_tuple_like
+# error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# ifndef __cpp_lib_tuples_by_type
+# error "__cpp_lib_tuples_by_type should be defined in c++26"
+# endif
+# 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 != 202306L
+# error "__cpp_lib_variant should have the value 202306L 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
+>>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/support/counting_predicates.h b/libcxx/test/support/counting_predicates.h
index 6f34ce76302a8..514e70ec9c736 100644
--- a/libcxx/test/support/counting_predicates.h
+++ b/libcxx/test/support/counting_predicates.h
@@ -16,31 +16,34 @@
template <typename Predicate, typename Arg>
struct unary_counting_predicate {
public:
- typedef Arg argument_type;
- typedef bool result_type;
+ typedef Arg argument_type;
+ typedef bool result_type;
- unary_counting_predicate(Predicate p) : p_(p), count_(0) {}
- unary_counting_predicate(const unary_counting_predicate&) = default;
- unary_counting_predicate& operator=(const unary_counting_predicate&) = default;
- ~unary_counting_predicate() {}
+ TEST_CONSTEXPR_CXX20 unary_counting_predicate(Predicate p) : p_(p), count_(0) {}
+ unary_counting_predicate(const unary_counting_predicate&) = default;
+ unary_counting_predicate& operator=(const unary_counting_predicate&) = default;
+ TEST_CONSTEXPR_CXX20 ~unary_counting_predicate() {}
- bool operator () (const Arg &a) const { ++count_; return p_(a); }
- std::size_t count() const { return count_; }
- void reset() { count_ = 0; }
+ TEST_CONSTEXPR_CXX14 bool operator()(const Arg& a) const {
+ ++count_;
+ return p_(a);
+ }
+ TEST_CONSTEXPR std::size_t count() const { return count_; }
+ TEST_CONSTEXPR_CXX14 void reset() { count_ = 0; }
private:
- Predicate p_;
- mutable std::size_t count_;
+ Predicate p_;
+ mutable std::size_t count_;
};
-
-template <typename Predicate, typename Arg1, typename Arg2=Arg1>
+template <typename Predicate, typename Arg1, typename Arg2 = Arg1>
struct binary_counting_predicate {
public:
- typedef Arg1 first_argument_type;
- typedef Arg2 second_argument_type;
- typedef bool result_type;
+ typedef Arg1 first_argument_type;
+ typedef Arg2 second_argument_type;
+ typedef bool result_type;
+<<<<<<< HEAD
TEST_CONSTEXPR binary_counting_predicate(Predicate p) : p_(p), count_(0) {}
TEST_CONSTEXPR_CXX14 bool operator()(const Arg1& a1, const Arg2& a2) const {
++count_;
@@ -52,6 +55,21 @@ struct binary_counting_predicate {
private:
Predicate p_;
mutable std::size_t count_;
+=======
+ binary_counting_predicate(Predicate p) : p_(p), count_(0) {}
+ ~binary_counting_predicate() {}
+
+ bool operator()(const Arg1& a1, const Arg2& a2) const {
+ ++count_;
+ return p_(a1, a2);
+ }
+ std::size_t count() const { return count_; }
+ void reset() { count_ = 0; }
+
+private:
+ Predicate p_;
+ mutable std::size_t count_;
+>>>>>>> 577d8638ae21 (Make forward_list constexpr as part of P3372R3)
};
#if TEST_STD_VER > 14
@@ -66,13 +84,13 @@ class counting_predicate {
constexpr counting_predicate(Predicate pred, int& count) : pred_(std::move(pred)), count_(&count) {}
template <class... Args>
- constexpr decltype(auto) operator()(Args&& ...args) {
+ constexpr decltype(auto) operator()(Args&&... args) {
++(*count_);
return pred_(std::forward<Args>(args)...);
}
template <class... Args>
- constexpr decltype(auto) operator()(Args&& ...args) const {
+ constexpr decltype(auto) operator()(Args&&... args) const {
++(*count_);
return pred_(std::forward<Args>(args)...);
}
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
old mode 100755
new mode 100644
index 82f0d09db5c36..b59c7fdaf0a3d
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -357,6 +357,11 @@ def add_version_header(tc):
"values": {"c++20": 201907},
"headers": ["memory"],
},
+ {
+ "name": "__cpp_lib_constexpr_forward_list",
+ "values": {"c++26": 202502},
+ "headers": ["forward_list"],
+ },
{
"name": "__cpp_lib_constexpr_functional",
"values": {"c++20": 201907},
>From 0964754a2c1d33aba4d9e514e70fe8dfc2225f25 Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Sun, 2 Mar 2025 15:25:55 -0500
Subject: [PATCH 2/7] Address reviewers comments
---
libcxx/include/__memory/allocation_guard.h | 6 +++---
libcxx/include/forward_list | 6 +-----
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/libcxx/include/__memory/allocation_guard.h b/libcxx/include/__memory/allocation_guard.h
index 2fc485f4ed0ed..016e1a3a429b8 100644
--- a/libcxx/include/__memory/allocation_guard.h
+++ b/libcxx/include/__memory/allocation_guard.h
@@ -57,7 +57,9 @@ struct __allocation_guard {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI ~__allocation_guard() _NOEXCEPT { __destroy(); }
- _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard(const __allocation_guard&) = delete;
+ __allocation_guard(const __allocation_guard&) = delete;
+ __allocation_guard& operator=(const __allocation_guard& __other) = delete;
+
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard(__allocation_guard&& __other) _NOEXCEPT
: __alloc_(std::move(__other.__alloc_)),
__n_(__other.__n_),
@@ -65,8 +67,6 @@ struct __allocation_guard {
__other.__ptr_ = nullptr;
}
- _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard&
- operator=(const __allocation_guard& __other) = delete;
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __allocation_guard&
operator=(__allocation_guard&& __other) _NOEXCEPT {
if (std::addressof(__other) != this) {
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index ec91a7bf7441f..ac1badaaea600 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -343,9 +343,7 @@ private:
_ALIGNAS_TYPE(_Tp) char __buffer_[sizeof(_Tp)];
public:
- _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() {
- return *std::__launder(reinterpret_cast<_Tp*>(&__buffer_));
- }
+ _LIBCPP_HIDE_FROM_ABI _Tp& __get_value() { return *std::__launder(reinterpret_cast<_Tp*>(&__buffer_)); }
# endif
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_node(_NodePtr __next) : _Base(__next) {}
@@ -1213,7 +1211,6 @@ forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, size_type __n, const
__last->__next_ = __r->__next_;
__r->__next_ = __first;
__r = __forward_node_traits<__node_pointer>::__as_iter_node(__last);
- // __r = static_cast<__begin_node_pointer>(__last);
}
return iterator(__r);
}
@@ -1255,7 +1252,6 @@ forward_list<_Tp, _Alloc>::__insert_after_with_sentinel(const_iterator __p, _Inp
__last->__next_ = __r->__next_;
__r->__next_ = __first;
__r = __forward_node_traits<__node_pointer>::__as_iter_node(__last);
- // __r = static_cast<__begin_node_pointer>(__last);
}
return iterator(__r);
>From 3c038b80c7911d609952b2ca4f8f3134b1183bd5 Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Mon, 3 Mar 2025 16:15:47 -0500
Subject: [PATCH 3/7] Fix constant evaluation due to non-constant
pointer_traits::pointer_to for gcc
---
libcxx/include/forward_list | 70 ++++++++++++++++++++++++++++++++-----
1 file changed, 61 insertions(+), 9 deletions(-)
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index ac1badaaea600..d0622ba392a3c 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -296,7 +296,16 @@ struct __forward_node_traits {
# endif
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
- return __p ? pointer_traits<__begin_node_pointer>::pointer_to(*__p) : static_cast<__begin_node_pointer>(nullptr);
+# ifdef _LIBCPP_CXX03_LANG
+ return static_cast<__begin_node_pointer>(__p);
+# else
+ if constexpr (std::is_pointer<__begin_node_pointer>::value) {
+ return static_cast<__begin_node_pointer>(__p);
+ } else {
+ return __p ? __begin_node_pointer::pointer_to(*static_cast<__begin_node*>(std::addressof(*__p)))
+ : static_cast<__begin_node_pointer>(nullptr);
+ }
+# endif
}
};
@@ -311,8 +320,16 @@ struct __forward_begin_node {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
- return __next_ ? pointer_traits<__begin_node_pointer>::pointer_to(*__next_)
- : static_cast<__begin_node_pointer>(nullptr);
+# ifdef _LIBCPP_CXX03_LANG
+ return static_cast<__begin_node_pointer>(__next_);
+# else
+ if constexpr (std::is_pointer<__begin_node_pointer>::value) {
+ return static_cast<__begin_node_pointer>(__next_);
+ } else {
+ return __next_ ? __begin_node_pointer::pointer_to(*static_cast<__forward_begin_node*>(std::addressof(*__next_)))
+ : static_cast<__begin_node_pointer>(nullptr);
+ }
+# endif
}
};
@@ -359,6 +376,7 @@ template <class _NodePtr>
class __forward_list_iterator {
typedef __forward_node_traits<_NodePtr> __traits;
typedef typename __traits::__node_type __node_type;
+ typedef typename __traits::__begin_node __begin_node_type;
typedef typename __traits::__node_pointer __node_pointer;
typedef typename __traits::__begin_node_pointer __begin_node_pointer;
typedef typename __traits::__void_pointer __void_pointer;
@@ -367,9 +385,17 @@ class __forward_list_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(
- const_cast<__node_type&>(static_cast<const __node_type&>(*__ptr_)))
- : static_cast<__node_pointer>(nullptr);
+# ifdef _LIBCPP_CXX03_LANG
+ return static_cast<__node_pointer>(__ptr_);
+# else
+ if constexpr (std::is_pointer<__node_pointer>::value) {
+ return static_cast<__node_pointer>(__ptr_);
+ } else {
+ return __ptr_ ? __node_pointer::pointer_to(
+ *static_cast<__node_type*>(const_cast<__begin_node_type*>(std::addressof(*__ptr_))))
+ : static_cast<__node_pointer>(nullptr);
+ }
+# endif
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT
@@ -429,6 +455,7 @@ class __forward_list_const_iterator {
typedef __forward_node_traits<_NodePtr> __traits;
typedef typename __traits::__node_type __node_type;
+ typedef typename __traits::__begin_node __begin_node_type;
typedef typename __traits::__node_pointer __node_pointer;
typedef typename __traits::__begin_node_pointer __begin_node_pointer;
typedef typename __traits::__void_pointer __void_pointer;
@@ -437,9 +464,17 @@ class __forward_list_const_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(
- const_cast<__node_type&>(static_cast<const __node_type&>(*__ptr_)))
- : static_cast<__node_pointer>(nullptr);
+# ifdef _LIBCPP_CXX03_LANG
+ return static_cast<__node_pointer>(__ptr_);
+# else
+ if constexpr (std::is_pointer<__node_pointer>::value) {
+ return static_cast<__node_pointer>(__ptr_);
+ } else {
+ return __ptr_ ? __node_pointer::pointer_to(
+ *static_cast<__node_type*>(const_cast<__begin_node_type*>(std::addressof(*__ptr_))))
+ : static_cast<__node_pointer>(nullptr);
+ }
+# endif
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT
@@ -512,10 +547,27 @@ protected:
_LIBCPP_COMPRESSED_PAIR(__begin_node, __before_begin_, __node_allocator, __alloc_);
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() _NOEXCEPT {
+# ifdef _LIBCPP_CXX03_LANG
return pointer_traits<__begin_node_pointer>::pointer_to(__before_begin_);
+# else
+ if constexpr (std::is_pointer<__begin_node_pointer>::value) {
+ return std::addressof(__before_begin_);
+ } else {
+ return __begin_node_pointer::pointer_to(*std::addressof(__before_begin_));
+ }
+# endif
}
+
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() const _NOEXCEPT {
+# ifdef _LIBCPP_CXX03_LANG
return pointer_traits<__begin_node_pointer>::pointer_to(const_cast<__begin_node&>(__before_begin_));
+# else
+ if constexpr (std::is_pointer<__begin_node_pointer>::value) {
+ return const_cast<__begin_node*>(std::addressof(__before_begin_));
+ } else {
+ return __begin_node_pointer::pointer_to(*const_cast<__begin_node*>(std::addressof(__before_begin_)));
+ }
+# endif
}
typedef __forward_list_iterator<__node_pointer> iterator;
>From 9787e279bcba58e718823e29c1b68d36cba5920e Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Tue, 4 Mar 2025 10:18:30 -0500
Subject: [PATCH 4/7] Revert to libc++ pointer_traits::pointer_to with
necessary cast
---
libcxx/include/forward_list | 70 ++++++-------------------------------
1 file changed, 11 insertions(+), 59 deletions(-)
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index d0622ba392a3c..49ae514b7d04d 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -296,16 +296,8 @@ struct __forward_node_traits {
# endif
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
-# ifdef _LIBCPP_CXX03_LANG
- return static_cast<__begin_node_pointer>(__p);
-# else
- if constexpr (std::is_pointer<__begin_node_pointer>::value) {
- return static_cast<__begin_node_pointer>(__p);
- } else {
- return __p ? __begin_node_pointer::pointer_to(*static_cast<__begin_node*>(std::addressof(*__p)))
- : static_cast<__begin_node_pointer>(nullptr);
- }
-# endif
+ return __p ? pointer_traits<__begin_node_pointer>::pointer_to(*static_cast<__begin_node*>(std::addressof(*__p)))
+ : static_cast<__begin_node_pointer>(nullptr);
}
};
@@ -320,16 +312,9 @@ struct __forward_begin_node {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
-# ifdef _LIBCPP_CXX03_LANG
- return static_cast<__begin_node_pointer>(__next_);
-# else
- if constexpr (std::is_pointer<__begin_node_pointer>::value) {
- return static_cast<__begin_node_pointer>(__next_);
- } else {
- return __next_ ? __begin_node_pointer::pointer_to(*static_cast<__forward_begin_node*>(std::addressof(*__next_)))
- : static_cast<__begin_node_pointer>(nullptr);
- }
-# endif
+ return __next_ ? pointer_traits<__begin_node_pointer>::pointer_to(
+ *static_cast<__forward_begin_node*>(std::addressof(*__next_)))
+ : static_cast<__begin_node_pointer>(nullptr);
}
};
@@ -385,17 +370,8 @@ class __forward_list_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
-# ifdef _LIBCPP_CXX03_LANG
- return static_cast<__node_pointer>(__ptr_);
-# else
- if constexpr (std::is_pointer<__node_pointer>::value) {
- return static_cast<__node_pointer>(__ptr_);
- } else {
- return __ptr_ ? __node_pointer::pointer_to(
- *static_cast<__node_type*>(const_cast<__begin_node_type*>(std::addressof(*__ptr_))))
- : static_cast<__node_pointer>(nullptr);
- }
-# endif
+ return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(*static_cast<__node_type*>(std::addressof(*__ptr_)))
+ : static_cast<__node_pointer>(nullptr);
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT
@@ -464,17 +440,8 @@ class __forward_list_const_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
-# ifdef _LIBCPP_CXX03_LANG
- return static_cast<__node_pointer>(__ptr_);
-# else
- if constexpr (std::is_pointer<__node_pointer>::value) {
- return static_cast<__node_pointer>(__ptr_);
- } else {
- return __ptr_ ? __node_pointer::pointer_to(
- *static_cast<__node_type*>(const_cast<__begin_node_type*>(std::addressof(*__ptr_))))
- : static_cast<__node_pointer>(nullptr);
- }
-# endif
+ return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(*static_cast<__node_type*>(std::addressof(*__ptr_)))
+ : static_cast<__node_pointer>(nullptr);
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT
@@ -547,27 +514,12 @@ protected:
_LIBCPP_COMPRESSED_PAIR(__begin_node, __before_begin_, __node_allocator, __alloc_);
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() _NOEXCEPT {
-# ifdef _LIBCPP_CXX03_LANG
return pointer_traits<__begin_node_pointer>::pointer_to(__before_begin_);
-# else
- if constexpr (std::is_pointer<__begin_node_pointer>::value) {
- return std::addressof(__before_begin_);
- } else {
- return __begin_node_pointer::pointer_to(*std::addressof(__before_begin_));
- }
-# endif
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() const _NOEXCEPT {
-# ifdef _LIBCPP_CXX03_LANG
- return pointer_traits<__begin_node_pointer>::pointer_to(const_cast<__begin_node&>(__before_begin_));
-# else
- if constexpr (std::is_pointer<__begin_node_pointer>::value) {
- return const_cast<__begin_node*>(std::addressof(__before_begin_));
- } else {
- return __begin_node_pointer::pointer_to(*const_cast<__begin_node*>(std::addressof(__before_begin_)));
- }
-# endif
+ return pointer_traits<__begin_node_pointer>::pointer_to(
+ *const_cast<__begin_node*>(std::addressof(__before_begin_)));
}
typedef __forward_list_iterator<__node_pointer> iterator;
>From a02e294dad9af4881b07378e4ad7db8ff64a34ca Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Tue, 4 Mar 2025 12:49:09 -0500
Subject: [PATCH 5/7] Add __static_fancy_pointer_cast
---
libcxx/include/__memory/pointer_traits.h | 12 ++++++++++--
libcxx/include/forward_list | 13 ++++---------
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/libcxx/include/__memory/pointer_traits.h b/libcxx/include/__memory/pointer_traits.h
index 4ba50898fb37d..3a7de082e8821 100644
--- a/libcxx/include/__memory/pointer_traits.h
+++ b/libcxx/include/__memory/pointer_traits.h
@@ -245,8 +245,8 @@ inline _LIBCPP_HIDE_FROM_ABI constexpr auto to_address(_Tp* __p) noexcept {
}
template <class _Pointer>
-inline _LIBCPP_HIDE_FROM_ABI constexpr auto
-to_address(const _Pointer& __p) noexcept -> decltype(std::__to_address(__p)) {
+inline _LIBCPP_HIDE_FROM_ABI constexpr auto to_address(const _Pointer& __p) noexcept
+ -> decltype(std::__to_address(__p)) {
return std::__to_address(__p);
}
#endif
@@ -302,6 +302,14 @@ concept __resettable_smart_pointer_with_args = requires(_Smart __s, _Pointer __p
#endif
+template <class _PtrTo, class _PtrFrom>
+_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI _PtrTo __static_fancy_pointer_cast(const _PtrFrom& __p) {
+ using __ptr_traits = pointer_traits<_PtrTo>;
+ using __element_type = typename __ptr_traits::element_type;
+ return __p ? __ptr_traits::pointer_to(*static_cast<__element_type*>(std::addressof(*__p)))
+ : static_cast<_PtrTo>(nullptr);
+}
+
_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index 49ae514b7d04d..704ea15907c46 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -296,8 +296,7 @@ struct __forward_node_traits {
# endif
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
- return __p ? pointer_traits<__begin_node_pointer>::pointer_to(*static_cast<__begin_node*>(std::addressof(*__p)))
- : static_cast<__begin_node_pointer>(nullptr);
+ return __static_fancy_pointer_cast<__begin_node_pointer>(__p);
}
};
@@ -312,9 +311,7 @@ struct __forward_begin_node {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
- return __next_ ? pointer_traits<__begin_node_pointer>::pointer_to(
- *static_cast<__forward_begin_node*>(std::addressof(*__next_)))
- : static_cast<__begin_node_pointer>(nullptr);
+ return __static_fancy_pointer_cast<__begin_node_pointer>(__next_);
}
};
@@ -370,8 +367,7 @@ class __forward_list_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(*static_cast<__node_type*>(std::addressof(*__ptr_)))
- : static_cast<__node_pointer>(nullptr);
+ return __static_fancy_pointer_cast<__node_pointer>(__ptr_);
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT
@@ -440,8 +436,7 @@ class __forward_list_const_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(*static_cast<__node_type*>(std::addressof(*__ptr_)))
- : static_cast<__node_pointer>(nullptr);
+ return __static_fancy_pointer_cast<__node_pointer>(__ptr_);
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT
>From 9b60d59c351b1a3b05ce1c72737c1982d6e7c0a2 Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Tue, 4 Mar 2025 13:26:43 -0500
Subject: [PATCH 6/7] Fix ADL call
---
libcxx/include/forward_list | 8 ++++----
libcxx/test/support/counting_predicates.h | 24 ++++-------------------
2 files changed, 8 insertions(+), 24 deletions(-)
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index 704ea15907c46..123565a52be01 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -296,7 +296,7 @@ struct __forward_node_traits {
# endif
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
- return __static_fancy_pointer_cast<__begin_node_pointer>(__p);
+ return std::__static_fancy_pointer_cast<__begin_node_pointer>(__p);
}
};
@@ -311,7 +311,7 @@ struct __forward_begin_node {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
- return __static_fancy_pointer_cast<__begin_node_pointer>(__next_);
+ return std::__static_fancy_pointer_cast<__begin_node_pointer>(__next_);
}
};
@@ -367,7 +367,7 @@ class __forward_list_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return __static_fancy_pointer_cast<__node_pointer>(__ptr_);
+ return std::__static_fancy_pointer_cast<__node_pointer>(__ptr_);
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT
@@ -436,7 +436,7 @@ class __forward_list_const_iterator {
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
- return __static_fancy_pointer_cast<__node_pointer>(__ptr_);
+ return std::__static_fancy_pointer_cast<__node_pointer>(__ptr_);
}
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT
diff --git a/libcxx/test/support/counting_predicates.h b/libcxx/test/support/counting_predicates.h
index 514e70ec9c736..8fb2db1af70d3 100644
--- a/libcxx/test/support/counting_predicates.h
+++ b/libcxx/test/support/counting_predicates.h
@@ -43,33 +43,17 @@ struct binary_counting_predicate {
typedef Arg2 second_argument_type;
typedef bool result_type;
-<<<<<<< HEAD
- TEST_CONSTEXPR binary_counting_predicate(Predicate p) : p_(p), count_(0) {}
- TEST_CONSTEXPR_CXX14 bool operator()(const Arg1& a1, const Arg2& a2) const {
- ++count_;
- return p_(a1, a2);
- }
- TEST_CONSTEXPR std::size_t count() const { return count_; }
- TEST_CONSTEXPR_CXX14 void reset() { count_ = 0; }
-
- private:
- Predicate p_;
- mutable std::size_t count_;
-=======
- binary_counting_predicate(Predicate p) : p_(p), count_(0) {}
- ~binary_counting_predicate() {}
-
- bool operator()(const Arg1& a1, const Arg2& a2) const {
+ TEST_CONSTEXPR binary_counting_predicate(Predicate p) : p_(p), count_(0) {}
+ TEST_CONSTEXPR_CXX14 bool operator()(const Arg1& a1, const Arg2& a2) const {
++count_;
return p_(a1, a2);
}
- std::size_t count() const { return count_; }
- void reset() { count_ = 0; }
+ TEST_CONSTEXPR std::size_t count() const { return count_; }
+ TEST_CONSTEXPR_CXX14 void reset() { count_ = 0; }
private:
Predicate p_;
mutable std::size_t count_;
->>>>>>> 577d8638ae21 (Make forward_list constexpr as part of P3372R3)
};
#if TEST_STD_VER > 14
>From 7dfee3d499f362c199d2405ad8b4f43815a1e46f Mon Sep 17 00:00:00 2001
From: Peng Liu <winner245 at hotmail.com>
Date: Thu, 8 May 2025 11:28:19 -0400
Subject: [PATCH 7/7] Rebase onto main to resolve conflicts
---
libcxx/docs/FeatureTestMacroTable.rst | 4 +-
.../forward_list.version.compile.pass.cpp | 27 +
.../version.version.compile.pass.cpp | 6675 +----------------
3 files changed, 54 insertions(+), 6652 deletions(-)
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index aac4ee22989a1..3e6fd643f620c 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -418,11 +418,9 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_bitset`` ``202306L``
---------------------------------------------------------- -----------------
-<<<<<<< HEAD
``__cpp_lib_constexpr_algorithms`` ``202306L``
-=======
+ ---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_forward_list`` ``202502L``
->>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_new`` ``202406L``
---------------------------------------------------------- -----------------
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
index 31b3e900aabcd..05f903dccafe7 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
@@ -24,6 +24,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -54,6 +58,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -87,6 +95,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -126,6 +138,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should not be defined before c++23"
# endif
@@ -171,6 +187,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++23"
# endif
@@ -219,6 +239,13 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
# endif
+# ifndef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_forward_list != 202502L
+# error "__cpp_lib_constexpr_forward_list should have the value 202502L in c++26"
+# endif
+
# ifndef __cpp_lib_containers_ranges
# error "__cpp_lib_containers_ranges should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index a8774e6ac76e1..a13edacd1e46a 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
@@ -13,248 +13,7 @@
// Test the feature test macros defined by <version>
-<<<<<<< HEAD
// clang-format off
-=======
-/* Constant Value
- __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23]
- __cpp_lib_addressof_constexpr 201603L [C++17]
- __cpp_lib_allocate_at_least 202302L [C++23]
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_any 201606L [C++17]
- __cpp_lib_apply 201603L [C++17]
- __cpp_lib_array_constexpr 201603L [C++17]
- 201811L [C++20]
- __cpp_lib_as_const 201510L [C++17]
- __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
- __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
- __cpp_lib_assume_aligned 201811L [C++20]
- __cpp_lib_atomic_flag_test 201907L [C++20]
- __cpp_lib_atomic_float 201711L [C++20]
- __cpp_lib_atomic_is_always_lock_free 201603L [C++17]
- __cpp_lib_atomic_lock_free_type_aliases 201907L [C++20]
- __cpp_lib_atomic_min_max 202403L [C++26]
- __cpp_lib_atomic_ref 201806L [C++20]
- __cpp_lib_atomic_shared_ptr 201711L [C++20]
- __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++23]
- __cpp_lib_bind_front 201907L [C++20]
- 202306L [C++26]
- __cpp_lib_bit_cast 201806L [C++20]
- __cpp_lib_bitops 201907L [C++20]
- __cpp_lib_bitset 202306L [C++26]
- __cpp_lib_bool_constant 201505L [C++17]
- __cpp_lib_bounded_array_traits 201902L [C++20]
- __cpp_lib_boyer_moore_searcher 201603L [C++17]
- __cpp_lib_byte 201603L [C++17]
- __cpp_lib_byteswap 202110L [C++23]
- __cpp_lib_char8_t 201907L [C++20]
- __cpp_lib_chrono 201611L [C++17]
- __cpp_lib_chrono_udls 201304L [C++14]
- __cpp_lib_clamp 201603L [C++17]
- __cpp_lib_complex_udls 201309L [C++14]
- __cpp_lib_concepts 202002L [C++20]
- __cpp_lib_constexpr_algorithms 201806L [C++20]
- __cpp_lib_constexpr_bitset 202207L [C++23]
- __cpp_lib_constexpr_charconv 202207L [C++23]
- __cpp_lib_constexpr_cmath 202202L [C++23]
- __cpp_lib_constexpr_complex 201711L [C++20]
- __cpp_lib_constexpr_dynamic_alloc 201907L [C++20]
- __cpp_lib_constexpr_forward_list 202502L [C++26]
- __cpp_lib_constexpr_functional 201907L [C++20]
- __cpp_lib_constexpr_iterator 201811L [C++20]
- __cpp_lib_constexpr_memory 201811L [C++20]
- 202202L [C++23]
- __cpp_lib_constexpr_new 202406L [C++26]
- __cpp_lib_constexpr_numeric 201911L [C++20]
- __cpp_lib_constexpr_string 201907L [C++20]
- __cpp_lib_constexpr_string_view 201811L [C++20]
- __cpp_lib_constexpr_tuple 201811L [C++20]
- __cpp_lib_constexpr_typeinfo 202106L [C++23]
- __cpp_lib_constexpr_utility 201811L [C++20]
- __cpp_lib_constexpr_vector 201907L [C++20]
- __cpp_lib_constrained_equality 202403L [C++26]
- __cpp_lib_containers_ranges 202202L [C++23]
- __cpp_lib_copyable_function 202306L [C++26]
- __cpp_lib_coroutine 201902L [C++20]
- __cpp_lib_debugging 202311L [C++26]
- __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
- __cpp_lib_destroying_delete 201806L [C++20]
- __cpp_lib_enable_shared_from_this 201603L [C++17]
- __cpp_lib_endian 201907L [C++20]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_exchange_function 201304L [C++14]
- __cpp_lib_execution 201603L [C++17]
- 201902L [C++20]
- __cpp_lib_expected 202211L [C++23]
- __cpp_lib_filesystem 201703L [C++17]
- __cpp_lib_flat_map 202207L [C++23]
- __cpp_lib_flat_set 202207L [C++23]
- __cpp_lib_format 202110L [C++20]
- __cpp_lib_format_path 202403L [C++26]
- __cpp_lib_format_ranges 202207L [C++23]
- __cpp_lib_format_uchar 202311L [C++20]
- __cpp_lib_formatters 202302L [C++23]
- __cpp_lib_forward_like 202207L [C++23]
- __cpp_lib_freestanding_algorithm 202311L [C++26]
- __cpp_lib_freestanding_array 202311L [C++26]
- __cpp_lib_freestanding_cstring 202306L [C++26]
- __cpp_lib_freestanding_expected 202311L [C++26]
- __cpp_lib_freestanding_mdspan 202311L [C++26]
- __cpp_lib_freestanding_optional 202311L [C++26]
- __cpp_lib_freestanding_string_view 202311L [C++26]
- __cpp_lib_freestanding_variant 202311L [C++26]
- __cpp_lib_fstream_native_handle 202306L [C++26]
- __cpp_lib_function_ref 202306L [C++26]
- __cpp_lib_gcd_lcm 201606L [C++17]
- __cpp_lib_generate_random 202403L [C++26]
- __cpp_lib_generic_associative_lookup 201304L [C++14]
- __cpp_lib_generic_unordered_lookup 201811L [C++20]
- __cpp_lib_hardware_interference_size 201703L [C++17]
- __cpp_lib_has_unique_object_representations 201606L [C++17]
- __cpp_lib_hazard_pointer 202306L [C++26]
- __cpp_lib_hypot 201603L [C++17]
- __cpp_lib_incomplete_container_elements 201505L [C++17]
- __cpp_lib_inplace_vector 202406L [C++26]
- __cpp_lib_int_pow2 202002L [C++20]
- __cpp_lib_integer_comparison_functions 202002L [C++20]
- __cpp_lib_integer_sequence 201304L [C++14]
- __cpp_lib_integral_constant_callable 201304L [C++14]
- __cpp_lib_interpolate 201902L [C++20]
- __cpp_lib_invoke 201411L [C++17]
- __cpp_lib_invoke_r 202106L [C++23]
- __cpp_lib_ios_noreplace 202207L [C++23]
- __cpp_lib_is_aggregate 201703L [C++17]
- __cpp_lib_is_constant_evaluated 201811L [C++20]
- __cpp_lib_is_final 201402L [C++14]
- __cpp_lib_is_implicit_lifetime 202302L [C++23]
- __cpp_lib_is_invocable 201703L [C++17]
- __cpp_lib_is_layout_compatible 201907L [C++20]
- __cpp_lib_is_nothrow_convertible 201806L [C++20]
- __cpp_lib_is_null_pointer 201309L [C++14]
- __cpp_lib_is_pointer_interconvertible 201907L [C++20]
- __cpp_lib_is_scoped_enum 202011L [C++23]
- __cpp_lib_is_swappable 201603L [C++17]
- __cpp_lib_is_virtual_base_of 202406L [C++26]
- __cpp_lib_is_within_lifetime 202306L [C++26]
- __cpp_lib_jthread 201911L [C++20]
- __cpp_lib_latch 201907L [C++20]
- __cpp_lib_launder 201606L [C++17]
- __cpp_lib_linalg 202311L [C++26]
- __cpp_lib_list_remove_return_type 201806L [C++20]
- __cpp_lib_logical_traits 201510L [C++17]
- __cpp_lib_make_from_tuple 201606L [C++17]
- __cpp_lib_make_reverse_iterator 201402L [C++14]
- __cpp_lib_make_unique 201304L [C++14]
- __cpp_lib_map_try_emplace 201411L [C++17]
- __cpp_lib_math_constants 201907L [C++20]
- __cpp_lib_math_special_functions 201603L [C++17]
- __cpp_lib_mdspan 202207L [C++23]
- 202406L [C++26]
- __cpp_lib_memory_resource 201603L [C++17]
- __cpp_lib_modules 202207L [C++23]
- __cpp_lib_move_iterator_concept 202207L [C++20]
- __cpp_lib_move_only_function 202110L [C++23]
- __cpp_lib_node_extract 201606L [C++17]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_not_fn 201603L [C++17]
- 202306L [C++26]
- __cpp_lib_null_iterators 201304L [C++14]
- __cpp_lib_optional 201606L [C++17]
- 202106L [C++20]
- 202110L [C++23]
- __cpp_lib_optional_range_support 202406L [C++26]
- __cpp_lib_out_ptr 202106L [C++23]
- 202311L [C++26]
- __cpp_lib_parallel_algorithm 201603L [C++17]
- __cpp_lib_philox_engine 202406L [C++26]
- __cpp_lib_polymorphic_allocator 201902L [C++20]
- __cpp_lib_print 202207L [C++23]
- __cpp_lib_quoted_string_io 201304L [C++14]
- __cpp_lib_ranges 202110L [C++20]
- 202406L [C++23]
- __cpp_lib_ranges_as_const 202207L [C++23]
- __cpp_lib_ranges_as_rvalue 202207L [C++23]
- __cpp_lib_ranges_chunk 202202L [C++23]
- __cpp_lib_ranges_chunk_by 202202L [C++23]
- __cpp_lib_ranges_concat 202403L [C++26]
- __cpp_lib_ranges_contains 202207L [C++23]
- __cpp_lib_ranges_find_last 202207L [C++23]
- __cpp_lib_ranges_iota 202202L [C++23]
- __cpp_lib_ranges_join_with 202202L [C++23]
- __cpp_lib_ranges_repeat 202207L [C++23]
- __cpp_lib_ranges_slide 202202L [C++23]
- __cpp_lib_ranges_starts_ends_with 202106L [C++23]
- __cpp_lib_ranges_to_container 202202L [C++23]
- __cpp_lib_ranges_zip 202110L [C++23]
- __cpp_lib_ratio 202306L [C++26]
- __cpp_lib_raw_memory_algorithms 201606L [C++17]
- __cpp_lib_rcu 202306L [C++26]
- __cpp_lib_reference_from_temporary 202202L [C++23]
- __cpp_lib_reference_wrapper 202403L [C++26]
- __cpp_lib_remove_cvref 201711L [C++20]
- __cpp_lib_result_of_sfinae 201210L [C++14]
- __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
- __cpp_lib_sample 201603L [C++17]
- __cpp_lib_saturation_arithmetic 202311L [C++26]
- __cpp_lib_scoped_lock 201703L [C++17]
- __cpp_lib_semaphore 201907L [C++20]
- __cpp_lib_senders 202406L [C++26]
- __cpp_lib_shared_mutex 201505L [C++17]
- __cpp_lib_shared_ptr_arrays 201611L [C++17]
- 201707L [C++20]
- __cpp_lib_shared_ptr_weak_type 201606L [C++17]
- __cpp_lib_shared_timed_mutex 201402L [C++14]
- __cpp_lib_shift 201806L [C++20]
- __cpp_lib_smart_ptr_for_overwrite 202002L [C++20]
- __cpp_lib_smart_ptr_owner_equality 202306L [C++26]
- __cpp_lib_source_location 201907L [C++20]
- __cpp_lib_span 202002L [C++20]
- __cpp_lib_span_at 202311L [C++26]
- __cpp_lib_span_initializer_list 202311L [C++26]
- __cpp_lib_spanstream 202106L [C++23]
- __cpp_lib_ssize 201902L [C++20]
- __cpp_lib_sstream_from_string_view 202306L [C++26]
- __cpp_lib_stacktrace 202011L [C++23]
- __cpp_lib_starts_ends_with 201711L [C++20]
- __cpp_lib_stdatomic_h 202011L [C++23]
- __cpp_lib_string_contains 202011L [C++23]
- __cpp_lib_string_resize_and_overwrite 202110L [C++23]
- __cpp_lib_string_udls 201304L [C++14]
- __cpp_lib_string_view 201606L [C++17]
- 201803L [C++20]
- 202403L [C++26]
- __cpp_lib_submdspan 202306L [C++26]
- __cpp_lib_syncbuf 201803L [C++20]
- __cpp_lib_text_encoding 202306L [C++26]
- __cpp_lib_three_way_comparison 201907L [C++20]
- __cpp_lib_to_address 201711L [C++20]
- __cpp_lib_to_array 201907L [C++20]
- __cpp_lib_to_chars 201611L [C++17]
- 202306L [C++26]
- __cpp_lib_to_string 202306L [C++26]
- __cpp_lib_to_underlying 202102L [C++23]
- __cpp_lib_transformation_trait_aliases 201304L [C++14]
- __cpp_lib_transparent_operators 201210L [C++14]
- 201510L [C++17]
- __cpp_lib_tuple_element_t 201402L [C++14]
- __cpp_lib_tuple_like 202207L [C++23]
- 202311L [C++26]
- __cpp_lib_tuples_by_type 201304L [C++14]
- __cpp_lib_type_identity 201806L [C++20]
- __cpp_lib_type_trait_variable_templates 201510L [C++17]
- __cpp_lib_uncaught_exceptions 201411L [C++17]
- __cpp_lib_unordered_map_try_emplace 201411L [C++17]
- __cpp_lib_unreachable 202202L [C++23]
- __cpp_lib_unwrap_ref 201811L [C++20]
- __cpp_lib_variant 202102L [C++17]
- 202106L [C++20]
- 202306L [C++26]
- __cpp_lib_void_t 201411L [C++17]
-*/
->>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
#include <version>
#include "test_macros.h"
@@ -433,19 +192,13 @@
# error "__cpp_lib_constexpr_complex should not be defined before c++20"
# endif
-<<<<<<< HEAD
# ifdef __cpp_lib_constexpr_dynamic_alloc
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
-=======
-# ifdef __cpp_lib_constexpr_forward_list
-# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
-# endif
-# ifdef __cpp_lib_constexpr_functional
-# error "__cpp_lib_constexpr_functional should not be defined before c++20"
-# endif
->>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
# ifdef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
@@ -1185,233 +938,9 @@
# error "__cpp_lib_array_constexpr should not be defined before c++17"
# endif
-<<<<<<< HEAD
# ifdef __cpp_lib_as_const
# error "__cpp_lib_as_const should not be defined before c++17"
# endif
-=======
-# ifdef __cpp_lib_associative_heterogeneous_erasure
-# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_associative_heterogeneous_insertion
-# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_assume_aligned
-# error "__cpp_lib_assume_aligned should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_flag_test
-# error "__cpp_lib_atomic_flag_test should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_is_always_lock_free
-# error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17"
-# endif
-
-# ifdef __cpp_lib_atomic_lock_free_type_aliases
-# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_min_max
-# error "__cpp_lib_atomic_min_max should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_atomic_ref
-# error "__cpp_lib_atomic_ref should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_shared_ptr
-# error "__cpp_lib_atomic_shared_ptr should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_value_initialization
-# error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_wait
-# error "__cpp_lib_atomic_wait should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_barrier
-# 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++23"
-# endif
-
-# ifdef __cpp_lib_bind_front
-# error "__cpp_lib_bind_front should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_bit_cast
-# error "__cpp_lib_bit_cast should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_bitops
-# error "__cpp_lib_bitops should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_bitset
-# error "__cpp_lib_bitset should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_bool_constant
-# error "__cpp_lib_bool_constant should not be defined before c++17"
-# endif
-
-# ifdef __cpp_lib_bounded_array_traits
-# error "__cpp_lib_bounded_array_traits should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_boyer_moore_searcher
-# error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
-# endif
-
-# ifdef __cpp_lib_byte
-# error "__cpp_lib_byte should not be defined before c++17"
-# endif
-
-# ifdef __cpp_lib_byteswap
-# error "__cpp_lib_byteswap should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_char8_t
-# error "__cpp_lib_char8_t should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_chrono
-# error "__cpp_lib_chrono should not be defined before c++17"
-# endif
-
-# ifndef __cpp_lib_chrono_udls
-# error "__cpp_lib_chrono_udls should be defined in c++14"
-# endif
-# if __cpp_lib_chrono_udls != 201304L
-# error "__cpp_lib_chrono_udls should have the value 201304L in c++14"
-# endif
-
-# ifdef __cpp_lib_clamp
-# error "__cpp_lib_clamp should not be defined before c++17"
-# endif
-
-# ifndef __cpp_lib_complex_udls
-# error "__cpp_lib_complex_udls should be defined in c++14"
-# endif
-# if __cpp_lib_complex_udls != 201309L
-# error "__cpp_lib_complex_udls should have the value 201309L in c++14"
-# endif
-
-# ifdef __cpp_lib_concepts
-# error "__cpp_lib_concepts should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_algorithms
-# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_bitset
-# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_charconv
-# error "__cpp_lib_constexpr_charconv should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_cmath
-# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_complex
-# error "__cpp_lib_constexpr_complex should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_dynamic_alloc
-# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_forward_list
-# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_constexpr_functional
-# error "__cpp_lib_constexpr_functional should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_iterator
-# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_memory
-# error "__cpp_lib_constexpr_memory should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_new
-# error "__cpp_lib_constexpr_new should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_constexpr_numeric
-# error "__cpp_lib_constexpr_numeric should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_string
-# error "__cpp_lib_constexpr_string should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_string_view
-# error "__cpp_lib_constexpr_string_view should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_tuple
-# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_typeinfo
-# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_utility
-# error "__cpp_lib_constexpr_utility should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_vector
-# error "__cpp_lib_constexpr_vector should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constrained_equality
-# error "__cpp_lib_constrained_equality should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_containers_ranges
-# error "__cpp_lib_containers_ranges should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_copyable_function
-# error "__cpp_lib_copyable_function should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_coroutine
-# error "__cpp_lib_coroutine should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_debugging
-# error "__cpp_lib_debugging should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_default_template_type_for_algorithm_values
-# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_destroying_delete
-# error "__cpp_lib_destroying_delete should not be defined before c++20"
-# endif
->>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
@@ -1559,6 +1088,10 @@
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
@@ -2331,7 +1864,6 @@
#elif TEST_STD_VER == 17
-<<<<<<< HEAD
# ifdef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif
@@ -2550,6 +2082,10 @@
# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
@@ -3780,6 +3316,10 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should be defined in c++20"
# endif
@@ -5232,6 +4772,10 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should be defined in c++23"
# endif
@@ -6903,6 +6447,13 @@
# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++26"
# endif
+# ifndef __cpp_lib_constexpr_forward_list
+# error "__cpp_lib_constexpr_forward_list should be defined in c++26"
+# endif
+# if __cpp_lib_constexpr_forward_list != 202502L
+# error "__cpp_lib_constexpr_forward_list should have the value 202502L in c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_functional
# error "__cpp_lib_constexpr_functional should be defined in c++26"
# endif
@@ -8518,6180 +8069,6 @@
# if __cpp_lib_void_t != 201411L
# error "__cpp_lib_void_t should have the value 201411L in c++26"
# endif
-=======
-# ifdef __cpp_lib_adaptor_iterator_pair_constructor
-# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_addressof_constexpr
-# error "__cpp_lib_addressof_constexpr should be defined in c++17"
-# endif
-# if __cpp_lib_addressof_constexpr != 201603L
-# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++17"
-# endif
-
-# ifdef __cpp_lib_allocate_at_least
-# error "__cpp_lib_allocate_at_least should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_allocator_traits_is_always_equal
-# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17"
-# 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++17"
-# endif
-
-# ifndef __cpp_lib_any
-# error "__cpp_lib_any should be defined in c++17"
-# endif
-# if __cpp_lib_any != 201606L
-# error "__cpp_lib_any should have the value 201606L in c++17"
-# endif
-
-# ifndef __cpp_lib_apply
-# error "__cpp_lib_apply should be defined in c++17"
-# endif
-# if __cpp_lib_apply != 201603L
-# error "__cpp_lib_apply should have the value 201603L in c++17"
-# endif
-
-# ifndef __cpp_lib_array_constexpr
-# error "__cpp_lib_array_constexpr should be defined in c++17"
-# endif
-# if __cpp_lib_array_constexpr != 201603L
-# error "__cpp_lib_array_constexpr should have the value 201603L in c++17"
-# endif
-
-# ifndef __cpp_lib_as_const
-# error "__cpp_lib_as_const should be defined in c++17"
-# endif
-# if __cpp_lib_as_const != 201510L
-# error "__cpp_lib_as_const should have the value 201510L in c++17"
-# endif
-
-# ifdef __cpp_lib_associative_heterogeneous_erasure
-# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_associative_heterogeneous_insertion
-# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_assume_aligned
-# error "__cpp_lib_assume_aligned should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_flag_test
-# error "__cpp_lib_atomic_flag_test should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_atomic_is_always_lock_free
-# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++17"
-# 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++17"
-# endif
-
-# ifdef __cpp_lib_atomic_lock_free_type_aliases
-# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_min_max
-# error "__cpp_lib_atomic_min_max should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_atomic_ref
-# error "__cpp_lib_atomic_ref should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_shared_ptr
-# error "__cpp_lib_atomic_shared_ptr should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_value_initialization
-# error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_atomic_wait
-# error "__cpp_lib_atomic_wait should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_barrier
-# 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++23"
-# endif
-
-# ifdef __cpp_lib_bind_front
-# error "__cpp_lib_bind_front should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_bit_cast
-# error "__cpp_lib_bit_cast should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_bitops
-# error "__cpp_lib_bitops should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_bitset
-# error "__cpp_lib_bitset should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_bool_constant
-# error "__cpp_lib_bool_constant should be defined in c++17"
-# endif
-# if __cpp_lib_bool_constant != 201505L
-# error "__cpp_lib_bool_constant should have the value 201505L in c++17"
-# endif
-
-# ifdef __cpp_lib_bounded_array_traits
-# error "__cpp_lib_bounded_array_traits should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_boyer_moore_searcher
-# error "__cpp_lib_boyer_moore_searcher should be defined in c++17"
-# endif
-# if __cpp_lib_boyer_moore_searcher != 201603L
-# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++17"
-# endif
-
-# ifndef __cpp_lib_byte
-# error "__cpp_lib_byte should be defined in c++17"
-# endif
-# if __cpp_lib_byte != 201603L
-# error "__cpp_lib_byte should have the value 201603L in c++17"
-# endif
-
-# ifdef __cpp_lib_byteswap
-# error "__cpp_lib_byteswap should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_char8_t
-# error "__cpp_lib_char8_t should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_chrono
-# error "__cpp_lib_chrono should be defined in c++17"
-# endif
-# if __cpp_lib_chrono != 201611L
-# error "__cpp_lib_chrono should have the value 201611L in c++17"
-# endif
-
-# ifndef __cpp_lib_chrono_udls
-# error "__cpp_lib_chrono_udls should be defined in c++17"
-# endif
-# if __cpp_lib_chrono_udls != 201304L
-# error "__cpp_lib_chrono_udls should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_clamp
-# error "__cpp_lib_clamp should be defined in c++17"
-# endif
-# if __cpp_lib_clamp != 201603L
-# error "__cpp_lib_clamp should have the value 201603L in c++17"
-# endif
-
-# ifndef __cpp_lib_complex_udls
-# error "__cpp_lib_complex_udls should be defined in c++17"
-# endif
-# if __cpp_lib_complex_udls != 201309L
-# error "__cpp_lib_complex_udls should have the value 201309L in c++17"
-# endif
-
-# ifdef __cpp_lib_concepts
-# error "__cpp_lib_concepts should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_algorithms
-# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_bitset
-# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_charconv
-# error "__cpp_lib_constexpr_charconv should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_cmath
-# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_complex
-# error "__cpp_lib_constexpr_complex should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_dynamic_alloc
-# error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_forward_list
-# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_constexpr_functional
-# error "__cpp_lib_constexpr_functional should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_iterator
-# error "__cpp_lib_constexpr_iterator should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_memory
-# error "__cpp_lib_constexpr_memory should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_new
-# error "__cpp_lib_constexpr_new should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_constexpr_numeric
-# error "__cpp_lib_constexpr_numeric should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_string
-# error "__cpp_lib_constexpr_string should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_string_view
-# error "__cpp_lib_constexpr_string_view should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_tuple
-# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_typeinfo
-# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_utility
-# error "__cpp_lib_constexpr_utility should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_vector
-# error "__cpp_lib_constexpr_vector should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_constrained_equality
-# error "__cpp_lib_constrained_equality should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_containers_ranges
-# error "__cpp_lib_containers_ranges should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_copyable_function
-# error "__cpp_lib_copyable_function should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_coroutine
-# error "__cpp_lib_coroutine should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_debugging
-# error "__cpp_lib_debugging should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_default_template_type_for_algorithm_values
-# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_destroying_delete
-# error "__cpp_lib_destroying_delete should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_enable_shared_from_this
-# error "__cpp_lib_enable_shared_from_this should be defined in c++17"
-# endif
-# if __cpp_lib_enable_shared_from_this != 201603L
-# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++17"
-# endif
-
-# ifdef __cpp_lib_endian
-# error "__cpp_lib_endian should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_erase_if
-# error "__cpp_lib_erase_if should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_exchange_function
-# error "__cpp_lib_exchange_function should be defined in c++17"
-# endif
-# if __cpp_lib_exchange_function != 201304L
-# error "__cpp_lib_exchange_function should have the value 201304L in c++17"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_execution
-# error "__cpp_lib_execution should be defined in c++17"
-# endif
-# if __cpp_lib_execution != 201603L
-# error "__cpp_lib_execution should have the value 201603L in c++17"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_execution
-# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifdef __cpp_lib_expected
-# error "__cpp_lib_expected should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
-# ifndef __cpp_lib_filesystem
-# error "__cpp_lib_filesystem should be defined in c++17"
-# endif
-# if __cpp_lib_filesystem != 201703L
-# error "__cpp_lib_filesystem should have the value 201703L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_filesystem
-# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_flat_map
-# error "__cpp_lib_flat_map should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_flat_set
-# error "__cpp_lib_flat_set should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_format_path
-# error "__cpp_lib_format_path should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_format_ranges
-# error "__cpp_lib_format_ranges should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_format_uchar
-# error "__cpp_lib_format_uchar should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_formatters
-# error "__cpp_lib_formatters should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_forward_like
-# error "__cpp_lib_forward_like should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_freestanding_algorithm
-# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_array
-# error "__cpp_lib_freestanding_array should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_cstring
-# error "__cpp_lib_freestanding_cstring should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_expected
-# error "__cpp_lib_freestanding_expected should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_mdspan
-# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_optional
-# error "__cpp_lib_freestanding_optional should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_string_view
-# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_variant
-# error "__cpp_lib_freestanding_variant should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_fstream_native_handle
-# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_function_ref
-# error "__cpp_lib_function_ref should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_gcd_lcm
-# error "__cpp_lib_gcd_lcm should be defined in c++17"
-# endif
-# if __cpp_lib_gcd_lcm != 201606L
-# error "__cpp_lib_gcd_lcm should have the value 201606L in c++17"
-# endif
-
-# ifdef __cpp_lib_generate_random
-# error "__cpp_lib_generate_random should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_generic_associative_lookup
-# error "__cpp_lib_generic_associative_lookup should be defined in c++17"
-# endif
-# if __cpp_lib_generic_associative_lookup != 201304L
-# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++17"
-# endif
-
-# ifdef __cpp_lib_generic_unordered_lookup
-# error "__cpp_lib_generic_unordered_lookup should not be defined before c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (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++17"
-# endif
-# if __cpp_lib_hardware_interference_size != 201703L
-# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_hardware_interference_size
-# error "__cpp_lib_hardware_interference_size should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (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++17"
-# endif
-# if __cpp_lib_has_unique_object_representations != 201606L
-# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17"
-# endif
-
-# ifdef __cpp_lib_hazard_pointer
-# error "__cpp_lib_hazard_pointer should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_hypot
-# error "__cpp_lib_hypot should be defined in c++17"
-# endif
-# if __cpp_lib_hypot != 201603L
-# error "__cpp_lib_hypot should have the value 201603L in c++17"
-# endif
-
-# ifndef __cpp_lib_incomplete_container_elements
-# error "__cpp_lib_incomplete_container_elements should be defined in c++17"
-# endif
-# if __cpp_lib_incomplete_container_elements != 201505L
-# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17"
-# endif
-
-# ifdef __cpp_lib_inplace_vector
-# error "__cpp_lib_inplace_vector should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_int_pow2
-# error "__cpp_lib_int_pow2 should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_integer_comparison_functions
-# error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_integer_sequence
-# error "__cpp_lib_integer_sequence should be defined in c++17"
-# endif
-# if __cpp_lib_integer_sequence != 201304L
-# error "__cpp_lib_integer_sequence should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_integral_constant_callable
-# error "__cpp_lib_integral_constant_callable should be defined in c++17"
-# endif
-# if __cpp_lib_integral_constant_callable != 201304L
-# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++17"
-# endif
-
-# ifdef __cpp_lib_interpolate
-# error "__cpp_lib_interpolate should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_invoke
-# error "__cpp_lib_invoke should be defined in c++17"
-# endif
-# if __cpp_lib_invoke != 201411L
-# error "__cpp_lib_invoke should have the value 201411L in c++17"
-# endif
-
-# ifdef __cpp_lib_invoke_r
-# error "__cpp_lib_invoke_r should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ios_noreplace
-# error "__cpp_lib_ios_noreplace should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_is_aggregate
-# error "__cpp_lib_is_aggregate should be defined in c++17"
-# endif
-# if __cpp_lib_is_aggregate != 201703L
-# error "__cpp_lib_is_aggregate should have the value 201703L in c++17"
-# endif
-
-# ifdef __cpp_lib_is_constant_evaluated
-# error "__cpp_lib_is_constant_evaluated should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_is_final
-# error "__cpp_lib_is_final should be defined in c++17"
-# endif
-# if __cpp_lib_is_final != 201402L
-# error "__cpp_lib_is_final should have the value 201402L in c++17"
-# endif
-
-# ifdef __cpp_lib_is_implicit_lifetime
-# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_is_invocable
-# error "__cpp_lib_is_invocable should be defined in c++17"
-# endif
-# if __cpp_lib_is_invocable != 201703L
-# error "__cpp_lib_is_invocable should have the value 201703L in c++17"
-# endif
-
-# ifdef __cpp_lib_is_layout_compatible
-# error "__cpp_lib_is_layout_compatible should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_is_nothrow_convertible
-# error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_is_null_pointer
-# error "__cpp_lib_is_null_pointer should be defined in c++17"
-# endif
-# if __cpp_lib_is_null_pointer != 201309L
-# error "__cpp_lib_is_null_pointer should have the value 201309L in c++17"
-# endif
-
-# ifdef __cpp_lib_is_pointer_interconvertible
-# error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_is_scoped_enum
-# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_is_swappable
-# error "__cpp_lib_is_swappable should be defined in c++17"
-# endif
-# if __cpp_lib_is_swappable != 201603L
-# error "__cpp_lib_is_swappable should have the value 201603L in c++17"
-# endif
-
-# ifdef __cpp_lib_is_virtual_base_of
-# error "__cpp_lib_is_virtual_base_of should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_is_within_lifetime
-# error "__cpp_lib_is_within_lifetime should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_jthread
-# error "__cpp_lib_jthread should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_latch
-# error "__cpp_lib_latch should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_launder
-# error "__cpp_lib_launder should be defined in c++17"
-# endif
-# if __cpp_lib_launder != 201606L
-# error "__cpp_lib_launder should have the value 201606L in c++17"
-# endif
-
-# ifdef __cpp_lib_linalg
-# error "__cpp_lib_linalg should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_list_remove_return_type
-# error "__cpp_lib_list_remove_return_type should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_logical_traits
-# error "__cpp_lib_logical_traits should be defined in c++17"
-# endif
-# if __cpp_lib_logical_traits != 201510L
-# error "__cpp_lib_logical_traits should have the value 201510L in c++17"
-# endif
-
-# ifndef __cpp_lib_make_from_tuple
-# error "__cpp_lib_make_from_tuple should be defined in c++17"
-# endif
-# if __cpp_lib_make_from_tuple != 201606L
-# error "__cpp_lib_make_from_tuple should have the value 201606L in c++17"
-# endif
-
-# ifndef __cpp_lib_make_reverse_iterator
-# error "__cpp_lib_make_reverse_iterator should be defined in c++17"
-# endif
-# if __cpp_lib_make_reverse_iterator != 201402L
-# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++17"
-# endif
-
-# ifndef __cpp_lib_make_unique
-# error "__cpp_lib_make_unique should be defined in c++17"
-# endif
-# if __cpp_lib_make_unique != 201304L
-# error "__cpp_lib_make_unique should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_map_try_emplace
-# error "__cpp_lib_map_try_emplace should be defined in c++17"
-# endif
-# if __cpp_lib_map_try_emplace != 201411L
-# error "__cpp_lib_map_try_emplace should have the value 201411L in c++17"
-# endif
-
-# ifdef __cpp_lib_math_constants
-# error "__cpp_lib_math_constants should not be defined before c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_math_special_functions
-# error "__cpp_lib_math_special_functions should be defined in c++17"
-# endif
-# if __cpp_lib_math_special_functions != 201603L
-# error "__cpp_lib_math_special_functions should have the value 201603L in c++17"
-# 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
-
-# ifdef __cpp_lib_mdspan
-# error "__cpp_lib_mdspan should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# ifndef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should be defined in c++17"
-# endif
-# if __cpp_lib_memory_resource != 201603L
-# error "__cpp_lib_memory_resource should have the value 201603L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_modules
-# error "__cpp_lib_modules should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_move_iterator_concept
-# error "__cpp_lib_move_iterator_concept should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_move_only_function
-# error "__cpp_lib_move_only_function should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_node_extract
-# error "__cpp_lib_node_extract should be defined in c++17"
-# endif
-# if __cpp_lib_node_extract != 201606L
-# error "__cpp_lib_node_extract should have the value 201606L in c++17"
-# endif
-
-# ifndef __cpp_lib_nonmember_container_access
-# error "__cpp_lib_nonmember_container_access should be defined in c++17"
-# endif
-# if __cpp_lib_nonmember_container_access != 201411L
-# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
-# endif
-
-# ifndef __cpp_lib_not_fn
-# error "__cpp_lib_not_fn should be defined in c++17"
-# endif
-# if __cpp_lib_not_fn != 201603L
-# error "__cpp_lib_not_fn should have the value 201603L in c++17"
-# endif
-
-# ifndef __cpp_lib_null_iterators
-# error "__cpp_lib_null_iterators should be defined in c++17"
-# endif
-# if __cpp_lib_null_iterators != 201304L
-# error "__cpp_lib_null_iterators should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_optional
-# error "__cpp_lib_optional should be defined in c++17"
-# endif
-# if __cpp_lib_optional != 201606L
-# error "__cpp_lib_optional should have the value 201606L in c++17"
-# endif
-
-# ifdef __cpp_lib_optional_range_support
-# error "__cpp_lib_optional_range_support should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_out_ptr
-# error "__cpp_lib_out_ptr should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_parallel_algorithm
-# error "__cpp_lib_parallel_algorithm should be defined in c++17"
-# endif
-# if __cpp_lib_parallel_algorithm != 201603L
-# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++17"
-# 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
-
-# ifdef __cpp_lib_philox_engine
-# error "__cpp_lib_philox_engine should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_print
-# error "__cpp_lib_print should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
-# ifndef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should be defined in c++17"
-# endif
-# if __cpp_lib_quoted_string_io != 201304L
-# error "__cpp_lib_quoted_string_io should have the value 201304L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_ranges
-# error "__cpp_lib_ranges should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_ranges_as_const
-# error "__cpp_lib_ranges_as_const should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_as_rvalue
-# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_chunk
-# error "__cpp_lib_ranges_chunk should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_chunk_by
-# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_concat
-# error "__cpp_lib_ranges_concat should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_ranges_contains
-# error "__cpp_lib_ranges_contains should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_find_last
-# error "__cpp_lib_ranges_find_last should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_iota
-# error "__cpp_lib_ranges_iota should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_join_with
-# error "__cpp_lib_ranges_join_with should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_repeat
-# error "__cpp_lib_ranges_repeat should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_slide
-# error "__cpp_lib_ranges_slide should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_starts_ends_with
-# error "__cpp_lib_ranges_starts_ends_with should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_to_container
-# error "__cpp_lib_ranges_to_container should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_zip
-# error "__cpp_lib_ranges_zip should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ratio
-# error "__cpp_lib_ratio should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_raw_memory_algorithms
-# error "__cpp_lib_raw_memory_algorithms should be defined in c++17"
-# endif
-# if __cpp_lib_raw_memory_algorithms != 201606L
-# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17"
-# endif
-
-# ifdef __cpp_lib_rcu
-# error "__cpp_lib_rcu should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_reference_from_temporary
-# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_reference_wrapper
-# error "__cpp_lib_reference_wrapper should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_remove_cvref
-# error "__cpp_lib_remove_cvref should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_result_of_sfinae
-# error "__cpp_lib_result_of_sfinae should be defined in c++17"
-# endif
-# if __cpp_lib_result_of_sfinae != 201210L
-# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17"
-# endif
-
-# ifndef __cpp_lib_robust_nonmodifying_seq_ops
-# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++17"
-# endif
-# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
-# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_sample
-# error "__cpp_lib_sample should be defined in c++17"
-# endif
-# if __cpp_lib_sample != 201603L
-# error "__cpp_lib_sample should have the value 201603L in c++17"
-# endif
-
-# ifdef __cpp_lib_saturation_arithmetic
-# error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should be defined in c++17"
-# endif
-# if __cpp_lib_scoped_lock != 201703L
-# error "__cpp_lib_scoped_lock should have the value 201703L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_semaphore
-# error "__cpp_lib_semaphore should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_senders
-# error "__cpp_lib_senders should not be defined before c++26"
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_shared_mutex
-# error "__cpp_lib_shared_mutex should be defined in c++17"
-# endif
-# if __cpp_lib_shared_mutex != 201505L
-# error "__cpp_lib_shared_mutex should have the value 201505L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_shared_mutex
-# error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_shared_ptr_arrays
-# error "__cpp_lib_shared_ptr_arrays should be defined in c++17"
-# endif
-# if __cpp_lib_shared_ptr_arrays != 201611L
-# error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++17"
-# endif
-
-# ifndef __cpp_lib_shared_ptr_weak_type
-# error "__cpp_lib_shared_ptr_weak_type should be defined in c++17"
-# endif
-# if __cpp_lib_shared_ptr_weak_type != 201606L
-# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++17"
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_shared_timed_mutex
-# error "__cpp_lib_shared_timed_mutex should be defined in c++17"
-# endif
-# if __cpp_lib_shared_timed_mutex != 201402L
-# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++17"
-# endif
-# else
-# ifdef __cpp_lib_shared_timed_mutex
-# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_shift
-# error "__cpp_lib_shift should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_smart_ptr_for_overwrite
-# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_smart_ptr_owner_equality
-# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_source_location
-# error "__cpp_lib_source_location should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_span
-# error "__cpp_lib_span should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_span_at
-# error "__cpp_lib_span_at should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_span_initializer_list
-# error "__cpp_lib_span_initializer_list should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_spanstream
-# error "__cpp_lib_spanstream should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ssize
-# error "__cpp_lib_ssize should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_sstream_from_string_view
-# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_stacktrace
-# error "__cpp_lib_stacktrace should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_starts_ends_with
-# error "__cpp_lib_starts_ends_with should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_stdatomic_h
-# error "__cpp_lib_stdatomic_h should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_string_contains
-# error "__cpp_lib_string_contains should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_string_resize_and_overwrite
-# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_string_udls
-# error "__cpp_lib_string_udls should be defined in c++17"
-# endif
-# if __cpp_lib_string_udls != 201304L
-# error "__cpp_lib_string_udls should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_string_view
-# error "__cpp_lib_string_view should be defined in c++17"
-# endif
-# if __cpp_lib_string_view != 201606L
-# error "__cpp_lib_string_view should have the value 201606L in c++17"
-# endif
-
-# ifdef __cpp_lib_submdspan
-# error "__cpp_lib_submdspan should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_syncbuf
-# error "__cpp_lib_syncbuf should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_text_encoding
-# error "__cpp_lib_text_encoding should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_three_way_comparison
-# error "__cpp_lib_three_way_comparison should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_to_address
-# error "__cpp_lib_to_address should not be defined before c++20"
-# endif
-
-# ifdef __cpp_lib_to_array
-# error "__cpp_lib_to_array should not be defined before c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_to_chars
-# error "__cpp_lib_to_chars should be defined in c++17"
-# endif
-# if __cpp_lib_to_chars != 201611L
-# error "__cpp_lib_to_chars should have the value 201611L in c++17"
-# 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
-
-# ifdef __cpp_lib_to_string
-# error "__cpp_lib_to_string should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_to_underlying
-# error "__cpp_lib_to_underlying should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_transformation_trait_aliases
-# error "__cpp_lib_transformation_trait_aliases should be defined in c++17"
-# endif
-# if __cpp_lib_transformation_trait_aliases != 201304L
-# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17"
-# endif
-
-# ifndef __cpp_lib_transparent_operators
-# error "__cpp_lib_transparent_operators should be defined in c++17"
-# endif
-# if __cpp_lib_transparent_operators != 201510L
-# error "__cpp_lib_transparent_operators should have the value 201510L in c++17"
-# endif
-
-# ifndef __cpp_lib_tuple_element_t
-# error "__cpp_lib_tuple_element_t should be defined in c++17"
-# endif
-# if __cpp_lib_tuple_element_t != 201402L
-# error "__cpp_lib_tuple_element_t should have the value 201402L in c++17"
-# endif
-
-# ifdef __cpp_lib_tuple_like
-# error "__cpp_lib_tuple_like should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_tuples_by_type
-# error "__cpp_lib_tuples_by_type should be defined in c++17"
-# endif
-# if __cpp_lib_tuples_by_type != 201304L
-# error "__cpp_lib_tuples_by_type should have the value 201304L in c++17"
-# endif
-
-# ifdef __cpp_lib_type_identity
-# error "__cpp_lib_type_identity should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_type_trait_variable_templates
-# error "__cpp_lib_type_trait_variable_templates should be defined in c++17"
-# endif
-# if __cpp_lib_type_trait_variable_templates != 201510L
-# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17"
-# endif
-
-# ifndef __cpp_lib_uncaught_exceptions
-# error "__cpp_lib_uncaught_exceptions should be defined in c++17"
-# endif
-# if __cpp_lib_uncaught_exceptions != 201411L
-# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++17"
-# endif
-
-# ifndef __cpp_lib_unordered_map_try_emplace
-# error "__cpp_lib_unordered_map_try_emplace should be defined in c++17"
-# endif
-# if __cpp_lib_unordered_map_try_emplace != 201411L
-# 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++23"
-# endif
-
-# ifdef __cpp_lib_unwrap_ref
-# error "__cpp_lib_unwrap_ref should not be defined before c++20"
-# endif
-
-# ifndef __cpp_lib_variant
-# error "__cpp_lib_variant should be defined in c++17"
-# endif
-# if __cpp_lib_variant != 202102L
-# error "__cpp_lib_variant should have the value 202102L in c++17"
-# endif
-
-# ifndef __cpp_lib_void_t
-# error "__cpp_lib_void_t should be defined in c++17"
-# endif
-# if __cpp_lib_void_t != 201411L
-# error "__cpp_lib_void_t should have the value 201411L in c++17"
-# 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++23"
-# endif
-
-# ifndef __cpp_lib_addressof_constexpr
-# error "__cpp_lib_addressof_constexpr should be defined in c++20"
-# endif
-# if __cpp_lib_addressof_constexpr != 201603L
-# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++20"
-# endif
-
-# ifdef __cpp_lib_allocate_at_least
-# error "__cpp_lib_allocate_at_least should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_allocator_traits_is_always_equal
-# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++20"
-# 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++20"
-# endif
-
-# ifndef __cpp_lib_any
-# error "__cpp_lib_any should be defined in c++20"
-# endif
-# if __cpp_lib_any != 201606L
-# error "__cpp_lib_any should have the value 201606L in c++20"
-# endif
-
-# ifndef __cpp_lib_apply
-# error "__cpp_lib_apply should be defined in c++20"
-# endif
-# if __cpp_lib_apply != 201603L
-# error "__cpp_lib_apply should have the value 201603L in c++20"
-# endif
-
-# ifndef __cpp_lib_array_constexpr
-# error "__cpp_lib_array_constexpr should be defined in c++20"
-# endif
-# if __cpp_lib_array_constexpr != 201811L
-# error "__cpp_lib_array_constexpr should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_as_const
-# error "__cpp_lib_as_const should be defined in c++20"
-# endif
-# if __cpp_lib_as_const != 201510L
-# error "__cpp_lib_as_const should have the value 201510L in c++20"
-# endif
-
-# ifdef __cpp_lib_associative_heterogeneous_erasure
-# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_associative_heterogeneous_insertion
-# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_assume_aligned
-# error "__cpp_lib_assume_aligned should be defined in c++20"
-# endif
-# if __cpp_lib_assume_aligned != 201811L
-# error "__cpp_lib_assume_aligned should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_atomic_flag_test
-# error "__cpp_lib_atomic_flag_test should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_flag_test != 201907L
-# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++20"
-# endif
-
-# ifndef __cpp_lib_atomic_is_always_lock_free
-# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++20"
-# 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++20"
-# endif
-
-# ifndef __cpp_lib_atomic_lock_free_type_aliases
-# error "__cpp_lib_atomic_lock_free_type_aliases should be defined in c++20"
-# 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++20"
-# endif
-
-# ifdef __cpp_lib_atomic_min_max
-# error "__cpp_lib_atomic_min_max should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_atomic_ref
-# error "__cpp_lib_atomic_ref should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_ref != 201806L
-# error "__cpp_lib_atomic_ref should have the value 201806L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_shared_ptr
-# error "__cpp_lib_atomic_shared_ptr should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_shared_ptr != 201711L
-# error "__cpp_lib_atomic_shared_ptr should have the value 201711L in c++20"
-# 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++20"
-# endif
-# if __cpp_lib_atomic_value_initialization != 201911L
-# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC
-# ifndef __cpp_lib_atomic_wait
-# error "__cpp_lib_atomic_wait should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_wait != 201907L
-# error "__cpp_lib_atomic_wait should have the value 201907L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_atomic_wait
-# error "__cpp_lib_atomic_wait should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_barrier
-# error "__cpp_lib_barrier should be defined in c++20"
-# endif
-# if __cpp_lib_barrier != 201907L
-# error "__cpp_lib_barrier should have the value 201907L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_barrier
-# error "__cpp_lib_barrier should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_bind_back
-# error "__cpp_lib_bind_back should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_bind_front
-# error "__cpp_lib_bind_front should be defined in c++20"
-# endif
-# if __cpp_lib_bind_front != 201907L
-# error "__cpp_lib_bind_front should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_bit_cast
-# error "__cpp_lib_bit_cast should be defined in c++20"
-# endif
-# if __cpp_lib_bit_cast != 201806L
-# error "__cpp_lib_bit_cast should have the value 201806L in c++20"
-# endif
-
-# ifndef __cpp_lib_bitops
-# error "__cpp_lib_bitops should be defined in c++20"
-# endif
-# if __cpp_lib_bitops != 201907L
-# error "__cpp_lib_bitops should have the value 201907L in c++20"
-# endif
-
-# ifdef __cpp_lib_bitset
-# error "__cpp_lib_bitset should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_bool_constant
-# error "__cpp_lib_bool_constant should be defined in c++20"
-# endif
-# if __cpp_lib_bool_constant != 201505L
-# error "__cpp_lib_bool_constant should have the value 201505L in c++20"
-# endif
-
-# ifndef __cpp_lib_bounded_array_traits
-# error "__cpp_lib_bounded_array_traits should be defined in c++20"
-# endif
-# if __cpp_lib_bounded_array_traits != 201902L
-# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20"
-# endif
-
-# ifndef __cpp_lib_boyer_moore_searcher
-# error "__cpp_lib_boyer_moore_searcher should be defined in c++20"
-# endif
-# if __cpp_lib_boyer_moore_searcher != 201603L
-# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++20"
-# endif
-
-# ifndef __cpp_lib_byte
-# error "__cpp_lib_byte should be defined in c++20"
-# endif
-# if __cpp_lib_byte != 201603L
-# error "__cpp_lib_byte should have the value 201603L in c++20"
-# endif
-
-# ifdef __cpp_lib_byteswap
-# error "__cpp_lib_byteswap should not be defined before c++23"
-# endif
-
-# if defined(__cpp_char8_t)
-# ifndef __cpp_lib_char8_t
-# error "__cpp_lib_char8_t should be defined in c++20"
-# endif
-# if __cpp_lib_char8_t != 201907L
-# error "__cpp_lib_char8_t should have the value 201907L in c++20"
-# 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++20"
-# endif
-# if __cpp_lib_chrono != 201611L
-# error "__cpp_lib_chrono should have the value 201611L in c++20"
-# endif
-
-# ifndef __cpp_lib_chrono_udls
-# error "__cpp_lib_chrono_udls should be defined in c++20"
-# endif
-# if __cpp_lib_chrono_udls != 201304L
-# error "__cpp_lib_chrono_udls should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_clamp
-# error "__cpp_lib_clamp should be defined in c++20"
-# endif
-# if __cpp_lib_clamp != 201603L
-# error "__cpp_lib_clamp should have the value 201603L in c++20"
-# endif
-
-# ifndef __cpp_lib_complex_udls
-# error "__cpp_lib_complex_udls should be defined in c++20"
-# endif
-# if __cpp_lib_complex_udls != 201309L
-# error "__cpp_lib_complex_udls should have the value 201309L in c++20"
-# endif
-
-# ifndef __cpp_lib_concepts
-# error "__cpp_lib_concepts should be defined in c++20"
-# endif
-# if __cpp_lib_concepts != 202002L
-# error "__cpp_lib_concepts should have the value 202002L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_algorithms
-# error "__cpp_lib_constexpr_algorithms should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_algorithms != 201806L
-# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_bitset
-# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_charconv
-# error "__cpp_lib_constexpr_charconv should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_cmath
-# error "__cpp_lib_constexpr_cmath should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_complex
-# error "__cpp_lib_constexpr_complex should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_complex != 201711L
-# error "__cpp_lib_constexpr_complex should have the value 201711L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_dynamic_alloc
-# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_dynamic_alloc != 201907L
-# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_forward_list
-# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_constexpr_functional
-# error "__cpp_lib_constexpr_functional should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_functional != 201907L
-# error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_iterator
-# error "__cpp_lib_constexpr_iterator should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_iterator != 201811L
-# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_memory
-# error "__cpp_lib_constexpr_memory should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_memory != 201811L
-# error "__cpp_lib_constexpr_memory should have the value 201811L in c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_new
-# error "__cpp_lib_constexpr_new should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_constexpr_numeric
-# error "__cpp_lib_constexpr_numeric should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_numeric != 201911L
-# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_string
-# error "__cpp_lib_constexpr_string should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_string != 201907L
-# error "__cpp_lib_constexpr_string should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_string_view
-# error "__cpp_lib_constexpr_string_view should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_string_view != 201811L
-# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_tuple
-# error "__cpp_lib_constexpr_tuple should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_tuple != 201811L
-# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++20"
-# endif
-
-# ifdef __cpp_lib_constexpr_typeinfo
-# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_utility
-# error "__cpp_lib_constexpr_utility should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_utility != 201811L
-# error "__cpp_lib_constexpr_utility should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_constexpr_vector
-# error "__cpp_lib_constexpr_vector should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_vector != 201907L
-# error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
-# endif
-
-# ifdef __cpp_lib_constrained_equality
-# error "__cpp_lib_constrained_equality should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_containers_ranges
-# error "__cpp_lib_containers_ranges should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_copyable_function
-# error "__cpp_lib_copyable_function should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_coroutine
-# error "__cpp_lib_coroutine should be defined in c++20"
-# endif
-# if __cpp_lib_coroutine != 201902L
-# error "__cpp_lib_coroutine should have the value 201902L in c++20"
-# endif
-
-# ifdef __cpp_lib_debugging
-# error "__cpp_lib_debugging should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_default_template_type_for_algorithm_values
-# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
-# endif
-
-# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
-# ifndef __cpp_lib_destroying_delete
-# error "__cpp_lib_destroying_delete should be defined in c++20"
-# endif
-# if __cpp_lib_destroying_delete != 201806L
-# error "__cpp_lib_destroying_delete should have the value 201806L in c++20"
-# 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++20"
-# endif
-# if __cpp_lib_enable_shared_from_this != 201603L
-# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++20"
-# endif
-
-# ifndef __cpp_lib_endian
-# error "__cpp_lib_endian should be defined in c++20"
-# endif
-# if __cpp_lib_endian != 201907L
-# error "__cpp_lib_endian should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_erase_if
-# error "__cpp_lib_erase_if should be defined in c++20"
-# endif
-# if __cpp_lib_erase_if != 202002L
-# error "__cpp_lib_erase_if should have the value 202002L in c++20"
-# endif
-
-# ifndef __cpp_lib_exchange_function
-# error "__cpp_lib_exchange_function should be defined in c++20"
-# endif
-# if __cpp_lib_exchange_function != 201304L
-# error "__cpp_lib_exchange_function should have the value 201304L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_execution
-# error "__cpp_lib_execution should be defined in c++20"
-# endif
-# if __cpp_lib_execution != 201902L
-# error "__cpp_lib_execution should have the value 201902L in c++20"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_execution
-# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifdef __cpp_lib_expected
-# error "__cpp_lib_expected should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
-# ifndef __cpp_lib_filesystem
-# error "__cpp_lib_filesystem should be defined in c++20"
-# endif
-# if __cpp_lib_filesystem != 201703L
-# error "__cpp_lib_filesystem should have the value 201703L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_filesystem
-# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_flat_map
-# error "__cpp_lib_flat_map should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_flat_set
-# error "__cpp_lib_flat_set should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
-# ifndef __cpp_lib_format
-# error "__cpp_lib_format should be defined in c++20"
-# endif
-# if __cpp_lib_format != 202110L
-# error "__cpp_lib_format should have the value 202110L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_format_path
-# error "__cpp_lib_format_path should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_format_ranges
-# error "__cpp_lib_format_ranges should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_format_uchar
-# error "__cpp_lib_format_uchar should be defined in c++20"
-# endif
-# if __cpp_lib_format_uchar != 202311L
-# error "__cpp_lib_format_uchar should have the value 202311L in c++20"
-# endif
-
-# ifdef __cpp_lib_formatters
-# error "__cpp_lib_formatters should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_forward_like
-# error "__cpp_lib_forward_like should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_freestanding_algorithm
-# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_array
-# error "__cpp_lib_freestanding_array should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_cstring
-# error "__cpp_lib_freestanding_cstring should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_expected
-# error "__cpp_lib_freestanding_expected should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_mdspan
-# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_optional
-# error "__cpp_lib_freestanding_optional should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_string_view
-# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_variant
-# error "__cpp_lib_freestanding_variant should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_fstream_native_handle
-# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_function_ref
-# error "__cpp_lib_function_ref should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_gcd_lcm
-# error "__cpp_lib_gcd_lcm should be defined in c++20"
-# endif
-# if __cpp_lib_gcd_lcm != 201606L
-# error "__cpp_lib_gcd_lcm should have the value 201606L in c++20"
-# endif
-
-# ifdef __cpp_lib_generate_random
-# error "__cpp_lib_generate_random should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_generic_associative_lookup
-# error "__cpp_lib_generic_associative_lookup should be defined in c++20"
-# endif
-# if __cpp_lib_generic_associative_lookup != 201304L
-# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_generic_unordered_lookup
-# error "__cpp_lib_generic_unordered_lookup should be defined in c++20"
-# endif
-# if __cpp_lib_generic_unordered_lookup != 201811L
-# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (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++20"
-# endif
-# if __cpp_lib_hardware_interference_size != 201703L
-# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_hardware_interference_size
-# error "__cpp_lib_hardware_interference_size should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (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++20"
-# endif
-# if __cpp_lib_has_unique_object_representations != 201606L
-# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20"
-# endif
-
-# ifdef __cpp_lib_hazard_pointer
-# error "__cpp_lib_hazard_pointer should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_hypot
-# error "__cpp_lib_hypot should be defined in c++20"
-# endif
-# if __cpp_lib_hypot != 201603L
-# error "__cpp_lib_hypot should have the value 201603L in c++20"
-# endif
-
-# ifndef __cpp_lib_incomplete_container_elements
-# error "__cpp_lib_incomplete_container_elements should be defined in c++20"
-# endif
-# if __cpp_lib_incomplete_container_elements != 201505L
-# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++20"
-# endif
-
-# ifdef __cpp_lib_inplace_vector
-# error "__cpp_lib_inplace_vector should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_int_pow2
-# error "__cpp_lib_int_pow2 should be defined in c++20"
-# endif
-# if __cpp_lib_int_pow2 != 202002L
-# error "__cpp_lib_int_pow2 should have the value 202002L in c++20"
-# endif
-
-# ifndef __cpp_lib_integer_comparison_functions
-# error "__cpp_lib_integer_comparison_functions should be defined in c++20"
-# endif
-# if __cpp_lib_integer_comparison_functions != 202002L
-# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++20"
-# endif
-
-# ifndef __cpp_lib_integer_sequence
-# error "__cpp_lib_integer_sequence should be defined in c++20"
-# endif
-# if __cpp_lib_integer_sequence != 201304L
-# error "__cpp_lib_integer_sequence should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_integral_constant_callable
-# error "__cpp_lib_integral_constant_callable should be defined in c++20"
-# endif
-# if __cpp_lib_integral_constant_callable != 201304L
-# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_interpolate
-# error "__cpp_lib_interpolate should be defined in c++20"
-# endif
-# if __cpp_lib_interpolate != 201902L
-# error "__cpp_lib_interpolate should have the value 201902L in c++20"
-# endif
-
-# ifndef __cpp_lib_invoke
-# error "__cpp_lib_invoke should be defined in c++20"
-# endif
-# if __cpp_lib_invoke != 201411L
-# error "__cpp_lib_invoke should have the value 201411L in c++20"
-# endif
-
-# ifdef __cpp_lib_invoke_r
-# error "__cpp_lib_invoke_r should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ios_noreplace
-# error "__cpp_lib_ios_noreplace should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_is_aggregate
-# error "__cpp_lib_is_aggregate should be defined in c++20"
-# endif
-# if __cpp_lib_is_aggregate != 201703L
-# error "__cpp_lib_is_aggregate should have the value 201703L in c++20"
-# endif
-
-# ifndef __cpp_lib_is_constant_evaluated
-# error "__cpp_lib_is_constant_evaluated should be defined in c++20"
-# endif
-# if __cpp_lib_is_constant_evaluated != 201811L
-# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_is_final
-# error "__cpp_lib_is_final should be defined in c++20"
-# endif
-# if __cpp_lib_is_final != 201402L
-# error "__cpp_lib_is_final should have the value 201402L in c++20"
-# endif
-
-# ifdef __cpp_lib_is_implicit_lifetime
-# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_is_invocable
-# error "__cpp_lib_is_invocable should be defined in c++20"
-# endif
-# if __cpp_lib_is_invocable != 201703L
-# error "__cpp_lib_is_invocable should have the value 201703L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_is_layout_compatible
-# error "__cpp_lib_is_layout_compatible should be defined in c++20"
-# endif
-# if __cpp_lib_is_layout_compatible != 201907L
-# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++20"
-# 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++20"
-# endif
-# if __cpp_lib_is_nothrow_convertible != 201806L
-# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++20"
-# endif
-
-# ifndef __cpp_lib_is_null_pointer
-# error "__cpp_lib_is_null_pointer should be defined in c++20"
-# endif
-# if __cpp_lib_is_null_pointer != 201309L
-# error "__cpp_lib_is_null_pointer should have the value 201309L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_is_pointer_interconvertible
-# error "__cpp_lib_is_pointer_interconvertible should be defined in c++20"
-# endif
-# if __cpp_lib_is_pointer_interconvertible != 201907L
-# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++20"
-# 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
-
-# ifdef __cpp_lib_is_scoped_enum
-# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_is_swappable
-# error "__cpp_lib_is_swappable should be defined in c++20"
-# endif
-# if __cpp_lib_is_swappable != 201603L
-# error "__cpp_lib_is_swappable should have the value 201603L in c++20"
-# endif
-
-# ifdef __cpp_lib_is_virtual_base_of
-# error "__cpp_lib_is_virtual_base_of should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_is_within_lifetime
-# error "__cpp_lib_is_within_lifetime should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_jthread
-# error "__cpp_lib_jthread should be defined in c++20"
-# endif
-# if __cpp_lib_jthread != 201911L
-# error "__cpp_lib_jthread should have the value 201911L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_jthread
-# error "__cpp_lib_jthread should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_latch
-# error "__cpp_lib_latch should be defined in c++20"
-# endif
-# if __cpp_lib_latch != 201907L
-# error "__cpp_lib_latch should have the value 201907L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_latch
-# error "__cpp_lib_latch should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_launder
-# error "__cpp_lib_launder should be defined in c++20"
-# endif
-# if __cpp_lib_launder != 201606L
-# error "__cpp_lib_launder should have the value 201606L in c++20"
-# endif
-
-# ifdef __cpp_lib_linalg
-# error "__cpp_lib_linalg should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_list_remove_return_type
-# error "__cpp_lib_list_remove_return_type should be defined in c++20"
-# endif
-# if __cpp_lib_list_remove_return_type != 201806L
-# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++20"
-# endif
-
-# ifndef __cpp_lib_logical_traits
-# error "__cpp_lib_logical_traits should be defined in c++20"
-# endif
-# if __cpp_lib_logical_traits != 201510L
-# error "__cpp_lib_logical_traits should have the value 201510L in c++20"
-# endif
-
-# ifndef __cpp_lib_make_from_tuple
-# error "__cpp_lib_make_from_tuple should be defined in c++20"
-# endif
-# if __cpp_lib_make_from_tuple != 201606L
-# error "__cpp_lib_make_from_tuple should have the value 201606L in c++20"
-# endif
-
-# ifndef __cpp_lib_make_reverse_iterator
-# error "__cpp_lib_make_reverse_iterator should be defined in c++20"
-# endif
-# if __cpp_lib_make_reverse_iterator != 201402L
-# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++20"
-# endif
-
-# ifndef __cpp_lib_make_unique
-# error "__cpp_lib_make_unique should be defined in c++20"
-# endif
-# if __cpp_lib_make_unique != 201304L
-# error "__cpp_lib_make_unique should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_map_try_emplace
-# error "__cpp_lib_map_try_emplace should be defined in c++20"
-# endif
-# if __cpp_lib_map_try_emplace != 201411L
-# error "__cpp_lib_map_try_emplace should have the value 201411L in c++20"
-# endif
-
-# ifndef __cpp_lib_math_constants
-# error "__cpp_lib_math_constants should be defined in c++20"
-# endif
-# if __cpp_lib_math_constants != 201907L
-# error "__cpp_lib_math_constants should have the value 201907L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_math_special_functions
-# error "__cpp_lib_math_special_functions should be defined in c++20"
-# endif
-# if __cpp_lib_math_special_functions != 201603L
-# error "__cpp_lib_math_special_functions should have the value 201603L in c++20"
-# 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
-
-# ifdef __cpp_lib_mdspan
-# error "__cpp_lib_mdspan should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# ifndef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should be defined in c++20"
-# endif
-# if __cpp_lib_memory_resource != 201603L
-# error "__cpp_lib_memory_resource should have the value 201603L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_modules
-# error "__cpp_lib_modules should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_move_iterator_concept
-# error "__cpp_lib_move_iterator_concept should be defined in c++20"
-# endif
-# if __cpp_lib_move_iterator_concept != 202207L
-# error "__cpp_lib_move_iterator_concept should have the value 202207L in c++20"
-# endif
-
-# ifdef __cpp_lib_move_only_function
-# error "__cpp_lib_move_only_function should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_node_extract
-# error "__cpp_lib_node_extract should be defined in c++20"
-# endif
-# if __cpp_lib_node_extract != 201606L
-# error "__cpp_lib_node_extract should have the value 201606L in c++20"
-# endif
-
-# ifndef __cpp_lib_nonmember_container_access
-# error "__cpp_lib_nonmember_container_access should be defined in c++20"
-# endif
-# if __cpp_lib_nonmember_container_access != 201411L
-# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
-# endif
-
-# ifndef __cpp_lib_not_fn
-# error "__cpp_lib_not_fn should be defined in c++20"
-# endif
-# if __cpp_lib_not_fn != 201603L
-# error "__cpp_lib_not_fn should have the value 201603L in c++20"
-# endif
-
-# ifndef __cpp_lib_null_iterators
-# error "__cpp_lib_null_iterators should be defined in c++20"
-# endif
-# if __cpp_lib_null_iterators != 201304L
-# error "__cpp_lib_null_iterators should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_optional
-# error "__cpp_lib_optional should be defined in c++20"
-# endif
-# if __cpp_lib_optional != 202106L
-# error "__cpp_lib_optional should have the value 202106L in c++20"
-# endif
-
-# ifdef __cpp_lib_optional_range_support
-# error "__cpp_lib_optional_range_support should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_out_ptr
-# error "__cpp_lib_out_ptr should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_parallel_algorithm
-# error "__cpp_lib_parallel_algorithm should be defined in c++20"
-# endif
-# if __cpp_lib_parallel_algorithm != 201603L
-# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++20"
-# 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
-
-# ifdef __cpp_lib_philox_engine
-# error "__cpp_lib_philox_engine should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# ifndef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should be defined in c++20"
-# endif
-# if __cpp_lib_polymorphic_allocator != 201902L
-# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_print
-# error "__cpp_lib_print should not be defined before c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
-# ifndef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should be defined in c++20"
-# endif
-# if __cpp_lib_quoted_string_io != 201304L
-# error "__cpp_lib_quoted_string_io should have the value 201304L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_ranges
-# error "__cpp_lib_ranges should be defined in c++20"
-# endif
-# if __cpp_lib_ranges != 202110L
-# error "__cpp_lib_ranges should have the value 202110L in c++20"
-# endif
-
-# ifdef __cpp_lib_ranges_as_const
-# error "__cpp_lib_ranges_as_const should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_as_rvalue
-# error "__cpp_lib_ranges_as_rvalue should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_chunk
-# error "__cpp_lib_ranges_chunk should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_chunk_by
-# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_concat
-# error "__cpp_lib_ranges_concat should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_ranges_contains
-# error "__cpp_lib_ranges_contains should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_find_last
-# error "__cpp_lib_ranges_find_last should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_iota
-# error "__cpp_lib_ranges_iota should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_join_with
-# error "__cpp_lib_ranges_join_with should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_repeat
-# error "__cpp_lib_ranges_repeat should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_slide
-# error "__cpp_lib_ranges_slide should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_starts_ends_with
-# error "__cpp_lib_ranges_starts_ends_with should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_to_container
-# error "__cpp_lib_ranges_to_container should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_zip
-# error "__cpp_lib_ranges_zip should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_ratio
-# error "__cpp_lib_ratio should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_raw_memory_algorithms
-# error "__cpp_lib_raw_memory_algorithms should be defined in c++20"
-# endif
-# if __cpp_lib_raw_memory_algorithms != 201606L
-# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++20"
-# endif
-
-# ifdef __cpp_lib_rcu
-# error "__cpp_lib_rcu should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_reference_from_temporary
-# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_reference_wrapper
-# error "__cpp_lib_reference_wrapper should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_remove_cvref
-# error "__cpp_lib_remove_cvref should be defined in c++20"
-# endif
-# if __cpp_lib_remove_cvref != 201711L
-# error "__cpp_lib_remove_cvref should have the value 201711L in c++20"
-# endif
-
-# ifndef __cpp_lib_result_of_sfinae
-# error "__cpp_lib_result_of_sfinae should be defined in c++20"
-# endif
-# if __cpp_lib_result_of_sfinae != 201210L
-# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++20"
-# endif
-
-# ifndef __cpp_lib_robust_nonmodifying_seq_ops
-# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++20"
-# endif
-# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
-# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_sample
-# error "__cpp_lib_sample should be defined in c++20"
-# endif
-# if __cpp_lib_sample != 201603L
-# error "__cpp_lib_sample should have the value 201603L in c++20"
-# endif
-
-# ifdef __cpp_lib_saturation_arithmetic
-# error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should be defined in c++20"
-# endif
-# if __cpp_lib_scoped_lock != 201703L
-# error "__cpp_lib_scoped_lock should have the value 201703L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_semaphore
-# error "__cpp_lib_semaphore should be defined in c++20"
-# endif
-# if __cpp_lib_semaphore != 201907L
-# error "__cpp_lib_semaphore should have the value 201907L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_semaphore
-# error "__cpp_lib_semaphore should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_senders
-# error "__cpp_lib_senders should not be defined before c++26"
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_shared_mutex
-# error "__cpp_lib_shared_mutex should be defined in c++20"
-# endif
-# if __cpp_lib_shared_mutex != 201505L
-# error "__cpp_lib_shared_mutex should have the value 201505L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_shared_mutex
-# error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_shared_ptr_arrays
-# error "__cpp_lib_shared_ptr_arrays should be defined in c++20"
-# endif
-# if __cpp_lib_shared_ptr_arrays != 201707L
-# error "__cpp_lib_shared_ptr_arrays should have the value 201707L in c++20"
-# endif
-
-# ifndef __cpp_lib_shared_ptr_weak_type
-# error "__cpp_lib_shared_ptr_weak_type should be defined in c++20"
-# endif
-# if __cpp_lib_shared_ptr_weak_type != 201606L
-# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++20"
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_shared_timed_mutex
-# error "__cpp_lib_shared_timed_mutex should be defined in c++20"
-# endif
-# if __cpp_lib_shared_timed_mutex != 201402L
-# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_shared_timed_mutex
-# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_shift
-# error "__cpp_lib_shift should be defined in c++20"
-# endif
-# if __cpp_lib_shift != 201806L
-# error "__cpp_lib_shift should have the value 201806L in c++20"
-# endif
-
-# ifndef __cpp_lib_smart_ptr_for_overwrite
-# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20"
-# endif
-# if __cpp_lib_smart_ptr_for_overwrite != 202002L
-# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20"
-# endif
-
-# ifdef __cpp_lib_smart_ptr_owner_equality
-# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_source_location
-# error "__cpp_lib_source_location should be defined in c++20"
-# endif
-# if __cpp_lib_source_location != 201907L
-# error "__cpp_lib_source_location should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_span
-# error "__cpp_lib_span should be defined in c++20"
-# endif
-# if __cpp_lib_span != 202002L
-# error "__cpp_lib_span should have the value 202002L in c++20"
-# endif
-
-# ifdef __cpp_lib_span_at
-# error "__cpp_lib_span_at should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_span_initializer_list
-# error "__cpp_lib_span_initializer_list should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_spanstream
-# error "__cpp_lib_spanstream should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_ssize
-# error "__cpp_lib_ssize should be defined in c++20"
-# endif
-# if __cpp_lib_ssize != 201902L
-# error "__cpp_lib_ssize should have the value 201902L in c++20"
-# endif
-
-# ifdef __cpp_lib_sstream_from_string_view
-# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_stacktrace
-# error "__cpp_lib_stacktrace should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_starts_ends_with
-# error "__cpp_lib_starts_ends_with should be defined in c++20"
-# endif
-# if __cpp_lib_starts_ends_with != 201711L
-# error "__cpp_lib_starts_ends_with should have the value 201711L in c++20"
-# endif
-
-# ifdef __cpp_lib_stdatomic_h
-# error "__cpp_lib_stdatomic_h should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_string_contains
-# error "__cpp_lib_string_contains should not be defined before c++23"
-# endif
-
-# ifdef __cpp_lib_string_resize_and_overwrite
-# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_string_udls
-# error "__cpp_lib_string_udls should be defined in c++20"
-# endif
-# if __cpp_lib_string_udls != 201304L
-# error "__cpp_lib_string_udls should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_string_view
-# error "__cpp_lib_string_view should be defined in c++20"
-# endif
-# if __cpp_lib_string_view != 201803L
-# error "__cpp_lib_string_view should have the value 201803L in c++20"
-# endif
-
-# ifdef __cpp_lib_submdspan
-# error "__cpp_lib_submdspan should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM
-# ifndef __cpp_lib_syncbuf
-# error "__cpp_lib_syncbuf should be defined in c++20"
-# endif
-# if __cpp_lib_syncbuf != 201803L
-# error "__cpp_lib_syncbuf should have the value 201803L in c++20"
-# endif
-# else
-# ifdef __cpp_lib_syncbuf
-# error "__cpp_lib_syncbuf should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_text_encoding
-# error "__cpp_lib_text_encoding should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_three_way_comparison
-# error "__cpp_lib_three_way_comparison should be defined in c++20"
-# endif
-# if __cpp_lib_three_way_comparison != 201907L
-# error "__cpp_lib_three_way_comparison should have the value 201907L in c++20"
-# endif
-
-# ifndef __cpp_lib_to_address
-# error "__cpp_lib_to_address should be defined in c++20"
-# endif
-# if __cpp_lib_to_address != 201711L
-# error "__cpp_lib_to_address should have the value 201711L in c++20"
-# endif
-
-# ifndef __cpp_lib_to_array
-# error "__cpp_lib_to_array should be defined in c++20"
-# endif
-# if __cpp_lib_to_array != 201907L
-# error "__cpp_lib_to_array should have the value 201907L in c++20"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_to_chars
-# error "__cpp_lib_to_chars should be defined in c++20"
-# endif
-# if __cpp_lib_to_chars != 201611L
-# error "__cpp_lib_to_chars should have the value 201611L in c++20"
-# 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
-
-# ifdef __cpp_lib_to_string
-# error "__cpp_lib_to_string should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_to_underlying
-# error "__cpp_lib_to_underlying should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_transformation_trait_aliases
-# error "__cpp_lib_transformation_trait_aliases should be defined in c++20"
-# endif
-# if __cpp_lib_transformation_trait_aliases != 201304L
-# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_transparent_operators
-# error "__cpp_lib_transparent_operators should be defined in c++20"
-# endif
-# if __cpp_lib_transparent_operators != 201510L
-# error "__cpp_lib_transparent_operators should have the value 201510L in c++20"
-# endif
-
-# ifndef __cpp_lib_tuple_element_t
-# error "__cpp_lib_tuple_element_t should be defined in c++20"
-# endif
-# if __cpp_lib_tuple_element_t != 201402L
-# error "__cpp_lib_tuple_element_t should have the value 201402L in c++20"
-# endif
-
-# ifdef __cpp_lib_tuple_like
-# error "__cpp_lib_tuple_like should not be defined before c++23"
-# endif
-
-# ifndef __cpp_lib_tuples_by_type
-# error "__cpp_lib_tuples_by_type should be defined in c++20"
-# endif
-# if __cpp_lib_tuples_by_type != 201304L
-# error "__cpp_lib_tuples_by_type should have the value 201304L in c++20"
-# endif
-
-# ifndef __cpp_lib_type_identity
-# error "__cpp_lib_type_identity should be defined in c++20"
-# endif
-# if __cpp_lib_type_identity != 201806L
-# error "__cpp_lib_type_identity should have the value 201806L in c++20"
-# endif
-
-# ifndef __cpp_lib_type_trait_variable_templates
-# error "__cpp_lib_type_trait_variable_templates should be defined in c++20"
-# endif
-# if __cpp_lib_type_trait_variable_templates != 201510L
-# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++20"
-# endif
-
-# ifndef __cpp_lib_uncaught_exceptions
-# error "__cpp_lib_uncaught_exceptions should be defined in c++20"
-# endif
-# if __cpp_lib_uncaught_exceptions != 201411L
-# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++20"
-# endif
-
-# ifndef __cpp_lib_unordered_map_try_emplace
-# error "__cpp_lib_unordered_map_try_emplace should be defined in c++20"
-# endif
-# if __cpp_lib_unordered_map_try_emplace != 201411L
-# 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++23"
-# endif
-
-# ifndef __cpp_lib_unwrap_ref
-# error "__cpp_lib_unwrap_ref should be defined in c++20"
-# endif
-# if __cpp_lib_unwrap_ref != 201811L
-# error "__cpp_lib_unwrap_ref should have the value 201811L in c++20"
-# endif
-
-# ifndef __cpp_lib_variant
-# error "__cpp_lib_variant should be defined in c++20"
-# endif
-# if __cpp_lib_variant != 202106L
-# error "__cpp_lib_variant should have the value 202106L in c++20"
-# endif
-
-# ifndef __cpp_lib_void_t
-# error "__cpp_lib_void_t should be defined in c++20"
-# endif
-# if __cpp_lib_void_t != 201411L
-# error "__cpp_lib_void_t should have the value 201411L in c++20"
-# endif
-
-#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"
-# endif
-# if __cpp_lib_adaptor_iterator_pair_constructor != 202106L
-# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++23"
-# endif
-
-# ifndef __cpp_lib_addressof_constexpr
-# error "__cpp_lib_addressof_constexpr should be defined in c++23"
-# endif
-# if __cpp_lib_addressof_constexpr != 201603L
-# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_allocate_at_least
-# error "__cpp_lib_allocate_at_least should be defined in c++23"
-# endif
-# if __cpp_lib_allocate_at_least != 202302L
-# error "__cpp_lib_allocate_at_least should have the value 202302L in c++23"
-# endif
-
-# ifndef __cpp_lib_allocator_traits_is_always_equal
-# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
-# 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++23"
-# endif
-
-# ifndef __cpp_lib_any
-# error "__cpp_lib_any should be defined in c++23"
-# endif
-# if __cpp_lib_any != 201606L
-# error "__cpp_lib_any should have the value 201606L in c++23"
-# endif
-
-# ifndef __cpp_lib_apply
-# error "__cpp_lib_apply should be defined in c++23"
-# endif
-# if __cpp_lib_apply != 201603L
-# error "__cpp_lib_apply should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_array_constexpr
-# error "__cpp_lib_array_constexpr should be defined in c++23"
-# endif
-# if __cpp_lib_array_constexpr != 201811L
-# error "__cpp_lib_array_constexpr should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_as_const
-# error "__cpp_lib_as_const should be defined in c++23"
-# endif
-# if __cpp_lib_as_const != 201510L
-# error "__cpp_lib_as_const should have the value 201510L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_associative_heterogeneous_erasure
-# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++23"
-# endif
-# if __cpp_lib_associative_heterogeneous_erasure != 202110L
-# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++23"
-# 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
-
-# ifdef __cpp_lib_associative_heterogeneous_insertion
-# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_assume_aligned
-# error "__cpp_lib_assume_aligned should be defined in c++23"
-# endif
-# if __cpp_lib_assume_aligned != 201811L
-# error "__cpp_lib_assume_aligned should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_atomic_flag_test
-# error "__cpp_lib_atomic_flag_test should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_flag_test != 201907L
-# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++23"
-# endif
-
-# ifndef __cpp_lib_atomic_is_always_lock_free
-# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++23"
-# 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++23"
-# endif
-
-# ifndef __cpp_lib_atomic_lock_free_type_aliases
-# error "__cpp_lib_atomic_lock_free_type_aliases should be defined in c++23"
-# 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++23"
-# endif
-
-# ifdef __cpp_lib_atomic_min_max
-# error "__cpp_lib_atomic_min_max should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_atomic_ref
-# error "__cpp_lib_atomic_ref should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_ref != 201806L
-# error "__cpp_lib_atomic_ref should have the value 201806L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_shared_ptr
-# error "__cpp_lib_atomic_shared_ptr should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_shared_ptr != 201711L
-# error "__cpp_lib_atomic_shared_ptr should have the value 201711L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_atomic_value_initialization != 201911L
-# error "__cpp_lib_atomic_value_initialization should have the value 201911L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC
-# ifndef __cpp_lib_atomic_wait
-# error "__cpp_lib_atomic_wait should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_wait != 201907L
-# error "__cpp_lib_atomic_wait should have the value 201907L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_atomic_wait
-# error "__cpp_lib_atomic_wait should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_barrier
-# error "__cpp_lib_barrier should be defined in c++23"
-# endif
-# if __cpp_lib_barrier != 201907L
-# error "__cpp_lib_barrier should have the value 201907L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_barrier
-# error "__cpp_lib_barrier should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_bind_back
-# error "__cpp_lib_bind_back should be defined in c++23"
-# endif
-# if __cpp_lib_bind_back != 202202L
-# error "__cpp_lib_bind_back should have the value 202202L in c++23"
-# endif
-
-# ifndef __cpp_lib_bind_front
-# error "__cpp_lib_bind_front should be defined in c++23"
-# endif
-# if __cpp_lib_bind_front != 201907L
-# error "__cpp_lib_bind_front should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_bit_cast
-# error "__cpp_lib_bit_cast should be defined in c++23"
-# endif
-# if __cpp_lib_bit_cast != 201806L
-# error "__cpp_lib_bit_cast should have the value 201806L in c++23"
-# endif
-
-# ifndef __cpp_lib_bitops
-# error "__cpp_lib_bitops should be defined in c++23"
-# endif
-# if __cpp_lib_bitops != 201907L
-# error "__cpp_lib_bitops should have the value 201907L in c++23"
-# endif
-
-# ifdef __cpp_lib_bitset
-# error "__cpp_lib_bitset should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_bool_constant
-# error "__cpp_lib_bool_constant should be defined in c++23"
-# endif
-# if __cpp_lib_bool_constant != 201505L
-# error "__cpp_lib_bool_constant should have the value 201505L in c++23"
-# endif
-
-# ifndef __cpp_lib_bounded_array_traits
-# error "__cpp_lib_bounded_array_traits should be defined in c++23"
-# endif
-# if __cpp_lib_bounded_array_traits != 201902L
-# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++23"
-# endif
-
-# ifndef __cpp_lib_boyer_moore_searcher
-# error "__cpp_lib_boyer_moore_searcher should be defined in c++23"
-# endif
-# if __cpp_lib_boyer_moore_searcher != 201603L
-# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_byte
-# error "__cpp_lib_byte should be defined in c++23"
-# endif
-# if __cpp_lib_byte != 201603L
-# error "__cpp_lib_byte should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_byteswap
-# error "__cpp_lib_byteswap should be defined in c++23"
-# endif
-# if __cpp_lib_byteswap != 202110L
-# error "__cpp_lib_byteswap should have the value 202110L in c++23"
-# endif
-
-# if defined(__cpp_char8_t)
-# ifndef __cpp_lib_char8_t
-# error "__cpp_lib_char8_t should be defined in c++23"
-# endif
-# if __cpp_lib_char8_t != 201907L
-# error "__cpp_lib_char8_t should have the value 201907L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_chrono != 201611L
-# error "__cpp_lib_chrono should have the value 201611L in c++23"
-# endif
-
-# ifndef __cpp_lib_chrono_udls
-# error "__cpp_lib_chrono_udls should be defined in c++23"
-# endif
-# if __cpp_lib_chrono_udls != 201304L
-# error "__cpp_lib_chrono_udls should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_clamp
-# error "__cpp_lib_clamp should be defined in c++23"
-# endif
-# if __cpp_lib_clamp != 201603L
-# error "__cpp_lib_clamp should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_complex_udls
-# error "__cpp_lib_complex_udls should be defined in c++23"
-# endif
-# if __cpp_lib_complex_udls != 201309L
-# error "__cpp_lib_complex_udls should have the value 201309L in c++23"
-# endif
-
-# ifndef __cpp_lib_concepts
-# error "__cpp_lib_concepts should be defined in c++23"
-# endif
-# if __cpp_lib_concepts != 202002L
-# error "__cpp_lib_concepts should have the value 202002L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_algorithms
-# error "__cpp_lib_constexpr_algorithms should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_algorithms != 201806L
-# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_bitset
-# error "__cpp_lib_constexpr_bitset should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_bitset != 202207L
-# error "__cpp_lib_constexpr_bitset should have the value 202207L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_charconv
-# error "__cpp_lib_constexpr_charconv should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_charconv != 202207L
-# error "__cpp_lib_constexpr_charconv should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_constexpr_cmath
-# error "__cpp_lib_constexpr_cmath should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_cmath != 202202L
-# error "__cpp_lib_constexpr_cmath should have the value 202202L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_constexpr_complex != 201711L
-# error "__cpp_lib_constexpr_complex should have the value 201711L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_dynamic_alloc
-# error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_dynamic_alloc != 201907L
-# error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_forward_list
-# error "__cpp_lib_constexpr_forward_list should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_constexpr_functional
-# error "__cpp_lib_constexpr_functional should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_functional != 201907L
-# error "__cpp_lib_constexpr_functional should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_iterator
-# error "__cpp_lib_constexpr_iterator should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_iterator != 201811L
-# error "__cpp_lib_constexpr_iterator should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_memory
-# error "__cpp_lib_constexpr_memory should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_memory != 202202L
-# error "__cpp_lib_constexpr_memory should have the value 202202L in c++23"
-# endif
-
-# ifdef __cpp_lib_constexpr_new
-# error "__cpp_lib_constexpr_new should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_constexpr_numeric
-# error "__cpp_lib_constexpr_numeric should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_numeric != 201911L
-# error "__cpp_lib_constexpr_numeric should have the value 201911L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_string
-# error "__cpp_lib_constexpr_string should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_string != 201907L
-# error "__cpp_lib_constexpr_string should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_string_view
-# error "__cpp_lib_constexpr_string_view should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_string_view != 201811L
-# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_tuple
-# error "__cpp_lib_constexpr_tuple should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_tuple != 201811L
-# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_typeinfo
-# error "__cpp_lib_constexpr_typeinfo should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_typeinfo != 202106L
-# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_utility
-# error "__cpp_lib_constexpr_utility should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_utility != 201811L
-# error "__cpp_lib_constexpr_utility should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_constexpr_vector
-# error "__cpp_lib_constexpr_vector should be defined in c++23"
-# endif
-# if __cpp_lib_constexpr_vector != 201907L
-# error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
-# endif
-
-# ifdef __cpp_lib_constrained_equality
-# error "__cpp_lib_constrained_equality should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_containers_ranges
-# error "__cpp_lib_containers_ranges should be defined in c++23"
-# endif
-# if __cpp_lib_containers_ranges != 202202L
-# error "__cpp_lib_containers_ranges should have the value 202202L in c++23"
-# endif
-
-# ifdef __cpp_lib_copyable_function
-# error "__cpp_lib_copyable_function should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_coroutine
-# error "__cpp_lib_coroutine should be defined in c++23"
-# endif
-# if __cpp_lib_coroutine != 201902L
-# error "__cpp_lib_coroutine should have the value 201902L in c++23"
-# endif
-
-# ifdef __cpp_lib_debugging
-# error "__cpp_lib_debugging should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_default_template_type_for_algorithm_values
-# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
-# endif
-
-# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
-# ifndef __cpp_lib_destroying_delete
-# error "__cpp_lib_destroying_delete should be defined in c++23"
-# endif
-# if __cpp_lib_destroying_delete != 201806L
-# error "__cpp_lib_destroying_delete should have the value 201806L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_enable_shared_from_this != 201603L
-# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_endian
-# error "__cpp_lib_endian should be defined in c++23"
-# endif
-# if __cpp_lib_endian != 201907L
-# error "__cpp_lib_endian should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_erase_if
-# error "__cpp_lib_erase_if should be defined in c++23"
-# endif
-# if __cpp_lib_erase_if != 202002L
-# error "__cpp_lib_erase_if should have the value 202002L in c++23"
-# endif
-
-# ifndef __cpp_lib_exchange_function
-# error "__cpp_lib_exchange_function should be defined in c++23"
-# endif
-# if __cpp_lib_exchange_function != 201304L
-# error "__cpp_lib_exchange_function should have the value 201304L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_execution
-# error "__cpp_lib_execution should be defined in c++23"
-# endif
-# if __cpp_lib_execution != 201902L
-# error "__cpp_lib_execution should have the value 201902L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_expected != 202211L
-# error "__cpp_lib_expected should have the value 202211L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
-# ifndef __cpp_lib_filesystem
-# error "__cpp_lib_filesystem should be defined in c++23"
-# endif
-# if __cpp_lib_filesystem != 201703L
-# error "__cpp_lib_filesystem should have the value 201703L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_filesystem
-# error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_flat_map
-# error "__cpp_lib_flat_map should be defined in c++23"
-# endif
-# if __cpp_lib_flat_map != 202207L
-# error "__cpp_lib_flat_map should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_flat_set
-# error "__cpp_lib_flat_set should be defined in c++23"
-# endif
-# if __cpp_lib_flat_set != 202207L
-# error "__cpp_lib_flat_set should have the value 202207L in c++23"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_flat_set
-# error "__cpp_lib_flat_set should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
-# ifndef __cpp_lib_format
-# error "__cpp_lib_format should be defined in c++23"
-# endif
-# if __cpp_lib_format != 202110L
-# error "__cpp_lib_format should have the value 202110L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_format_path
-# error "__cpp_lib_format_path should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_format_ranges
-# error "__cpp_lib_format_ranges should be defined in c++23"
-# endif
-# if __cpp_lib_format_ranges != 202207L
-# error "__cpp_lib_format_ranges should have the value 202207L in c++23"
-# endif
-
-# ifndef __cpp_lib_format_uchar
-# error "__cpp_lib_format_uchar should be defined in c++23"
-# endif
-# if __cpp_lib_format_uchar != 202311L
-# error "__cpp_lib_format_uchar should have the value 202311L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_formatters
-# error "__cpp_lib_formatters should be defined in c++23"
-# endif
-# if __cpp_lib_formatters != 202302L
-# error "__cpp_lib_formatters should have the value 202302L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_forward_like != 202207L
-# error "__cpp_lib_forward_like should have the value 202207L in c++23"
-# endif
-
-# ifdef __cpp_lib_freestanding_algorithm
-# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_array
-# error "__cpp_lib_freestanding_array should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_cstring
-# error "__cpp_lib_freestanding_cstring should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_expected
-# error "__cpp_lib_freestanding_expected should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_mdspan
-# error "__cpp_lib_freestanding_mdspan should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_optional
-# error "__cpp_lib_freestanding_optional should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_string_view
-# error "__cpp_lib_freestanding_string_view should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_freestanding_variant
-# error "__cpp_lib_freestanding_variant should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_fstream_native_handle
-# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_function_ref
-# error "__cpp_lib_function_ref should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_gcd_lcm
-# error "__cpp_lib_gcd_lcm should be defined in c++23"
-# endif
-# if __cpp_lib_gcd_lcm != 201606L
-# error "__cpp_lib_gcd_lcm should have the value 201606L in c++23"
-# endif
-
-# ifdef __cpp_lib_generate_random
-# error "__cpp_lib_generate_random should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_generic_associative_lookup
-# error "__cpp_lib_generic_associative_lookup should be defined in c++23"
-# endif
-# if __cpp_lib_generic_associative_lookup != 201304L
-# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_generic_unordered_lookup
-# error "__cpp_lib_generic_unordered_lookup should be defined in c++23"
-# endif
-# if __cpp_lib_generic_unordered_lookup != 201811L
-# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (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++23"
-# endif
-# if __cpp_lib_hardware_interference_size != 201703L
-# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_hardware_interference_size
-# error "__cpp_lib_hardware_interference_size should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (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++23"
-# endif
-# if __cpp_lib_has_unique_object_representations != 201606L
-# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++23"
-# endif
-
-# ifdef __cpp_lib_hazard_pointer
-# error "__cpp_lib_hazard_pointer should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_hypot
-# error "__cpp_lib_hypot should be defined in c++23"
-# endif
-# if __cpp_lib_hypot != 201603L
-# error "__cpp_lib_hypot should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_incomplete_container_elements
-# error "__cpp_lib_incomplete_container_elements should be defined in c++23"
-# endif
-# if __cpp_lib_incomplete_container_elements != 201505L
-# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++23"
-# endif
-
-# ifdef __cpp_lib_inplace_vector
-# error "__cpp_lib_inplace_vector should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_int_pow2
-# error "__cpp_lib_int_pow2 should be defined in c++23"
-# endif
-# if __cpp_lib_int_pow2 != 202002L
-# error "__cpp_lib_int_pow2 should have the value 202002L in c++23"
-# endif
-
-# ifndef __cpp_lib_integer_comparison_functions
-# error "__cpp_lib_integer_comparison_functions should be defined in c++23"
-# endif
-# if __cpp_lib_integer_comparison_functions != 202002L
-# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++23"
-# endif
-
-# ifndef __cpp_lib_integer_sequence
-# error "__cpp_lib_integer_sequence should be defined in c++23"
-# endif
-# if __cpp_lib_integer_sequence != 201304L
-# error "__cpp_lib_integer_sequence should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_integral_constant_callable
-# error "__cpp_lib_integral_constant_callable should be defined in c++23"
-# endif
-# if __cpp_lib_integral_constant_callable != 201304L
-# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_interpolate
-# error "__cpp_lib_interpolate should be defined in c++23"
-# endif
-# if __cpp_lib_interpolate != 201902L
-# error "__cpp_lib_interpolate should have the value 201902L in c++23"
-# endif
-
-# ifndef __cpp_lib_invoke
-# error "__cpp_lib_invoke should be defined in c++23"
-# endif
-# if __cpp_lib_invoke != 201411L
-# error "__cpp_lib_invoke should have the value 201411L in c++23"
-# endif
-
-# ifndef __cpp_lib_invoke_r
-# error "__cpp_lib_invoke_r should be defined in c++23"
-# endif
-# if __cpp_lib_invoke_r != 202106L
-# error "__cpp_lib_invoke_r should have the value 202106L in c++23"
-# endif
-
-# ifndef __cpp_lib_ios_noreplace
-# error "__cpp_lib_ios_noreplace should be defined in c++23"
-# endif
-# if __cpp_lib_ios_noreplace != 202207L
-# error "__cpp_lib_ios_noreplace should have the value 202207L in c++23"
-# endif
-
-# ifndef __cpp_lib_is_aggregate
-# error "__cpp_lib_is_aggregate should be defined in c++23"
-# endif
-# if __cpp_lib_is_aggregate != 201703L
-# error "__cpp_lib_is_aggregate should have the value 201703L in c++23"
-# endif
-
-# ifndef __cpp_lib_is_constant_evaluated
-# error "__cpp_lib_is_constant_evaluated should be defined in c++23"
-# endif
-# if __cpp_lib_is_constant_evaluated != 201811L
-# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_is_final
-# error "__cpp_lib_is_final should be defined in c++23"
-# endif
-# if __cpp_lib_is_final != 201402L
-# error "__cpp_lib_is_final should have the value 201402L in c++23"
-# endif
-
-# if __has_builtin(__builtin_is_implicit_lifetime)
-# ifndef __cpp_lib_is_implicit_lifetime
-# error "__cpp_lib_is_implicit_lifetime should be defined in c++23"
-# endif
-# if __cpp_lib_is_implicit_lifetime != 202302L
-# error "__cpp_lib_is_implicit_lifetime should have the value 202302L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_is_implicit_lifetime
-# error "__cpp_lib_is_implicit_lifetime should not be defined when the requirement '__has_builtin(__builtin_is_implicit_lifetime)' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_is_invocable
-# error "__cpp_lib_is_invocable should be defined in c++23"
-# endif
-# if __cpp_lib_is_invocable != 201703L
-# error "__cpp_lib_is_invocable should have the value 201703L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_is_layout_compatible
-# error "__cpp_lib_is_layout_compatible should be defined in c++23"
-# endif
-# if __cpp_lib_is_layout_compatible != 201907L
-# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_is_nothrow_convertible != 201806L
-# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++23"
-# endif
-
-# ifndef __cpp_lib_is_null_pointer
-# error "__cpp_lib_is_null_pointer should be defined in c++23"
-# endif
-# if __cpp_lib_is_null_pointer != 201309L
-# error "__cpp_lib_is_null_pointer should have the value 201309L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_is_pointer_interconvertible
-# error "__cpp_lib_is_pointer_interconvertible should be defined in c++23"
-# endif
-# if __cpp_lib_is_pointer_interconvertible != 201907L
-# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_is_scoped_enum != 202011L
-# error "__cpp_lib_is_scoped_enum should have the value 202011L in c++23"
-# endif
-
-# ifndef __cpp_lib_is_swappable
-# error "__cpp_lib_is_swappable should be defined in c++23"
-# endif
-# if __cpp_lib_is_swappable != 201603L
-# error "__cpp_lib_is_swappable should have the value 201603L in c++23"
-# endif
-
-# ifdef __cpp_lib_is_virtual_base_of
-# error "__cpp_lib_is_virtual_base_of should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_is_within_lifetime
-# error "__cpp_lib_is_within_lifetime should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_jthread
-# error "__cpp_lib_jthread should be defined in c++23"
-# endif
-# if __cpp_lib_jthread != 201911L
-# error "__cpp_lib_jthread should have the value 201911L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_jthread
-# error "__cpp_lib_jthread should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_latch
-# error "__cpp_lib_latch should be defined in c++23"
-# endif
-# if __cpp_lib_latch != 201907L
-# error "__cpp_lib_latch should have the value 201907L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_latch
-# error "__cpp_lib_latch should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_launder
-# error "__cpp_lib_launder should be defined in c++23"
-# endif
-# if __cpp_lib_launder != 201606L
-# error "__cpp_lib_launder should have the value 201606L in c++23"
-# endif
-
-# ifdef __cpp_lib_linalg
-# error "__cpp_lib_linalg should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_list_remove_return_type
-# error "__cpp_lib_list_remove_return_type should be defined in c++23"
-# endif
-# if __cpp_lib_list_remove_return_type != 201806L
-# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++23"
-# endif
-
-# ifndef __cpp_lib_logical_traits
-# error "__cpp_lib_logical_traits should be defined in c++23"
-# endif
-# if __cpp_lib_logical_traits != 201510L
-# error "__cpp_lib_logical_traits should have the value 201510L in c++23"
-# endif
-
-# ifndef __cpp_lib_make_from_tuple
-# error "__cpp_lib_make_from_tuple should be defined in c++23"
-# endif
-# if __cpp_lib_make_from_tuple != 201606L
-# error "__cpp_lib_make_from_tuple should have the value 201606L in c++23"
-# endif
-
-# ifndef __cpp_lib_make_reverse_iterator
-# error "__cpp_lib_make_reverse_iterator should be defined in c++23"
-# endif
-# if __cpp_lib_make_reverse_iterator != 201402L
-# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++23"
-# endif
-
-# ifndef __cpp_lib_make_unique
-# error "__cpp_lib_make_unique should be defined in c++23"
-# endif
-# if __cpp_lib_make_unique != 201304L
-# error "__cpp_lib_make_unique should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_map_try_emplace
-# error "__cpp_lib_map_try_emplace should be defined in c++23"
-# endif
-# if __cpp_lib_map_try_emplace != 201411L
-# error "__cpp_lib_map_try_emplace should have the value 201411L in c++23"
-# endif
-
-# ifndef __cpp_lib_math_constants
-# error "__cpp_lib_math_constants should be defined in c++23"
-# endif
-# if __cpp_lib_math_constants != 201907L
-# error "__cpp_lib_math_constants should have the value 201907L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_math_special_functions
-# error "__cpp_lib_math_special_functions should be defined in c++23"
-# endif
-# if __cpp_lib_math_special_functions != 201603L
-# error "__cpp_lib_math_special_functions should have the value 201603L in c++23"
-# 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
-
-# ifndef __cpp_lib_mdspan
-# error "__cpp_lib_mdspan should be defined in c++23"
-# endif
-# if __cpp_lib_mdspan != 202207L
-# error "__cpp_lib_mdspan should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# ifndef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should be defined in c++23"
-# endif
-# if __cpp_lib_memory_resource != 201603L
-# error "__cpp_lib_memory_resource should have the value 201603L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_modules
-# error "__cpp_lib_modules should be defined in c++23"
-# endif
-# if __cpp_lib_modules != 202207L
-# error "__cpp_lib_modules should have the value 202207L in c++23"
-# endif
-
-# ifndef __cpp_lib_move_iterator_concept
-# error "__cpp_lib_move_iterator_concept should be defined in c++23"
-# endif
-# if __cpp_lib_move_iterator_concept != 202207L
-# error "__cpp_lib_move_iterator_concept should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_move_only_function
-# error "__cpp_lib_move_only_function should be defined in c++23"
-# endif
-# if __cpp_lib_move_only_function != 202110L
-# error "__cpp_lib_move_only_function should have the value 202110L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_node_extract != 201606L
-# error "__cpp_lib_node_extract should have the value 201606L in c++23"
-# endif
-
-# ifndef __cpp_lib_nonmember_container_access
-# error "__cpp_lib_nonmember_container_access should be defined in c++23"
-# endif
-# if __cpp_lib_nonmember_container_access != 201411L
-# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
-# endif
-
-# ifndef __cpp_lib_not_fn
-# error "__cpp_lib_not_fn should be defined in c++23"
-# endif
-# if __cpp_lib_not_fn != 201603L
-# error "__cpp_lib_not_fn should have the value 201603L in c++23"
-# endif
-
-# ifndef __cpp_lib_null_iterators
-# error "__cpp_lib_null_iterators should be defined in c++23"
-# endif
-# if __cpp_lib_null_iterators != 201304L
-# error "__cpp_lib_null_iterators should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_optional
-# error "__cpp_lib_optional should be defined in c++23"
-# endif
-# if __cpp_lib_optional != 202110L
-# error "__cpp_lib_optional should have the value 202110L in c++23"
-# endif
-
-# ifdef __cpp_lib_optional_range_support
-# error "__cpp_lib_optional_range_support should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_out_ptr
-# error "__cpp_lib_out_ptr should be defined in c++23"
-# endif
-# if __cpp_lib_out_ptr != 202106L
-# error "__cpp_lib_out_ptr should have the value 202106L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_parallel_algorithm
-# error "__cpp_lib_parallel_algorithm should be defined in c++23"
-# endif
-# if __cpp_lib_parallel_algorithm != 201603L
-# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++23"
-# 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
-
-# ifdef __cpp_lib_philox_engine
-# error "__cpp_lib_philox_engine should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# ifndef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should be defined in c++23"
-# endif
-# if __cpp_lib_polymorphic_allocator != 201902L
-# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
-# ifndef __cpp_lib_print
-# error "__cpp_lib_print should be defined in c++23"
-# endif
-# if __cpp_lib_print != 202207L
-# error "__cpp_lib_print should have the value 202207L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_print
-# error "__cpp_lib_print should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
-# ifndef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should be defined in c++23"
-# endif
-# if __cpp_lib_quoted_string_io != 201304L
-# error "__cpp_lib_quoted_string_io should have the value 201304L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_ranges
-# error "__cpp_lib_ranges should be defined in c++23"
-# endif
-# if __cpp_lib_ranges != 202406L
-# error "__cpp_lib_ranges should have the value 202406L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_as_const
-# error "__cpp_lib_ranges_as_const should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_as_const != 202207L
-# error "__cpp_lib_ranges_as_const should have the value 202207L in c++23"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_ranges_as_const
-# error "__cpp_lib_ranges_as_const should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_ranges_as_rvalue
-# error "__cpp_lib_ranges_as_rvalue should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_as_rvalue != 202207L
-# error "__cpp_lib_ranges_as_rvalue should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_chunk
-# error "__cpp_lib_ranges_chunk should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_chunk != 202202L
-# error "__cpp_lib_ranges_chunk should have the value 202202L in c++23"
-# 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
-
-# ifndef __cpp_lib_ranges_chunk_by
-# error "__cpp_lib_ranges_chunk_by should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_chunk_by != 202202L
-# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++23"
-# endif
-
-# ifdef __cpp_lib_ranges_concat
-# error "__cpp_lib_ranges_concat should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_ranges_contains
-# error "__cpp_lib_ranges_contains should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_contains != 202207L
-# error "__cpp_lib_ranges_contains should have the value 202207L in c++23"
-# endif
-
-# ifndef __cpp_lib_ranges_find_last
-# error "__cpp_lib_ranges_find_last should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_find_last != 202207L
-# error "__cpp_lib_ranges_find_last should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_iota
-# error "__cpp_lib_ranges_iota should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_iota != 202202L
-# error "__cpp_lib_ranges_iota should have the value 202202L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_ranges_join_with != 202202L
-# error "__cpp_lib_ranges_join_with should have the value 202202L in c++23"
-# 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
-
-# ifndef __cpp_lib_ranges_repeat
-# error "__cpp_lib_ranges_repeat should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_repeat != 202207L
-# error "__cpp_lib_ranges_repeat should have the value 202207L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_slide
-# error "__cpp_lib_ranges_slide should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_slide != 202202L
-# error "__cpp_lib_ranges_slide should have the value 202202L in c++23"
-# 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
-
-# ifndef __cpp_lib_ranges_starts_ends_with
-# error "__cpp_lib_ranges_starts_ends_with should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_starts_ends_with != 202106L
-# error "__cpp_lib_ranges_starts_ends_with should have the value 202106L in c++23"
-# endif
-
-# ifndef __cpp_lib_ranges_to_container
-# error "__cpp_lib_ranges_to_container should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_to_container != 202202L
-# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_zip
-# error "__cpp_lib_ranges_zip should be defined in c++23"
-# endif
-# if __cpp_lib_ranges_zip != 202110L
-# error "__cpp_lib_ranges_zip should have the value 202110L in c++23"
-# 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
-
-# ifdef __cpp_lib_ratio
-# error "__cpp_lib_ratio should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_raw_memory_algorithms
-# error "__cpp_lib_raw_memory_algorithms should be defined in c++23"
-# endif
-# if __cpp_lib_raw_memory_algorithms != 201606L
-# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++23"
-# endif
-
-# ifdef __cpp_lib_rcu
-# error "__cpp_lib_rcu should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_reference_from_temporary
-# error "__cpp_lib_reference_from_temporary should be defined in c++23"
-# endif
-# if __cpp_lib_reference_from_temporary != 202202L
-# error "__cpp_lib_reference_from_temporary should have the value 202202L in c++23"
-# 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
-
-# ifdef __cpp_lib_reference_wrapper
-# error "__cpp_lib_reference_wrapper should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_remove_cvref
-# error "__cpp_lib_remove_cvref should be defined in c++23"
-# endif
-# if __cpp_lib_remove_cvref != 201711L
-# error "__cpp_lib_remove_cvref should have the value 201711L in c++23"
-# endif
-
-# ifndef __cpp_lib_result_of_sfinae
-# error "__cpp_lib_result_of_sfinae should be defined in c++23"
-# endif
-# if __cpp_lib_result_of_sfinae != 201210L
-# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++23"
-# endif
-
-# ifndef __cpp_lib_robust_nonmodifying_seq_ops
-# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++23"
-# endif
-# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
-# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_sample
-# error "__cpp_lib_sample should be defined in c++23"
-# endif
-# if __cpp_lib_sample != 201603L
-# error "__cpp_lib_sample should have the value 201603L in c++23"
-# endif
-
-# ifdef __cpp_lib_saturation_arithmetic
-# error "__cpp_lib_saturation_arithmetic should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should be defined in c++23"
-# endif
-# if __cpp_lib_scoped_lock != 201703L
-# error "__cpp_lib_scoped_lock should have the value 201703L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# ifndef __cpp_lib_semaphore
-# error "__cpp_lib_semaphore should be defined in c++23"
-# endif
-# if __cpp_lib_semaphore != 201907L
-# error "__cpp_lib_semaphore should have the value 201907L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_semaphore
-# error "__cpp_lib_semaphore should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_senders
-# error "__cpp_lib_senders should not be defined before c++26"
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_shared_mutex
-# error "__cpp_lib_shared_mutex should be defined in c++23"
-# endif
-# if __cpp_lib_shared_mutex != 201505L
-# error "__cpp_lib_shared_mutex should have the value 201505L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_shared_mutex
-# error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_shared_ptr_arrays
-# error "__cpp_lib_shared_ptr_arrays should be defined in c++23"
-# endif
-# if __cpp_lib_shared_ptr_arrays != 201707L
-# error "__cpp_lib_shared_ptr_arrays should have the value 201707L in c++23"
-# endif
-
-# ifndef __cpp_lib_shared_ptr_weak_type
-# error "__cpp_lib_shared_ptr_weak_type should be defined in c++23"
-# endif
-# if __cpp_lib_shared_ptr_weak_type != 201606L
-# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++23"
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# ifndef __cpp_lib_shared_timed_mutex
-# error "__cpp_lib_shared_timed_mutex should be defined in c++23"
-# endif
-# if __cpp_lib_shared_timed_mutex != 201402L
-# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_shared_timed_mutex
-# error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_shift
-# error "__cpp_lib_shift should be defined in c++23"
-# endif
-# if __cpp_lib_shift != 201806L
-# error "__cpp_lib_shift should have the value 201806L in c++23"
-# endif
-
-# ifndef __cpp_lib_smart_ptr_for_overwrite
-# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++23"
-# endif
-# if __cpp_lib_smart_ptr_for_overwrite != 202002L
-# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++23"
-# endif
-
-# ifdef __cpp_lib_smart_ptr_owner_equality
-# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_source_location
-# error "__cpp_lib_source_location should be defined in c++23"
-# endif
-# if __cpp_lib_source_location != 201907L
-# error "__cpp_lib_source_location should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_span
-# error "__cpp_lib_span should be defined in c++23"
-# endif
-# if __cpp_lib_span != 202002L
-# error "__cpp_lib_span should have the value 202002L in c++23"
-# endif
-
-# ifdef __cpp_lib_span_at
-# error "__cpp_lib_span_at should not be defined before c++26"
-# endif
-
-# ifdef __cpp_lib_span_initializer_list
-# error "__cpp_lib_span_initializer_list should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_spanstream
-# error "__cpp_lib_spanstream should be defined in c++23"
-# endif
-# if __cpp_lib_spanstream != 202106L
-# error "__cpp_lib_spanstream should have the value 202106L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_ssize != 201902L
-# error "__cpp_lib_ssize should have the value 201902L in c++23"
-# endif
-
-# ifdef __cpp_lib_sstream_from_string_view
-# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_stacktrace
-# error "__cpp_lib_stacktrace should be defined in c++23"
-# endif
-# if __cpp_lib_stacktrace != 202011L
-# error "__cpp_lib_stacktrace should have the value 202011L in c++23"
-# 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++23"
-# endif
-# if __cpp_lib_starts_ends_with != 201711L
-# error "__cpp_lib_starts_ends_with should have the value 201711L in c++23"
-# endif
-
-# ifndef __cpp_lib_stdatomic_h
-# error "__cpp_lib_stdatomic_h should be defined in c++23"
-# endif
-# if __cpp_lib_stdatomic_h != 202011L
-# error "__cpp_lib_stdatomic_h should have the value 202011L in c++23"
-# endif
-
-# ifndef __cpp_lib_string_contains
-# error "__cpp_lib_string_contains should be defined in c++23"
-# endif
-# if __cpp_lib_string_contains != 202011L
-# error "__cpp_lib_string_contains should have the value 202011L in c++23"
-# endif
-
-# ifndef __cpp_lib_string_resize_and_overwrite
-# error "__cpp_lib_string_resize_and_overwrite should be defined in c++23"
-# endif
-# if __cpp_lib_string_resize_and_overwrite != 202110L
-# error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++23"
-# endif
-
-# ifndef __cpp_lib_string_udls
-# error "__cpp_lib_string_udls should be defined in c++23"
-# endif
-# if __cpp_lib_string_udls != 201304L
-# error "__cpp_lib_string_udls should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_string_view
-# error "__cpp_lib_string_view should be defined in c++23"
-# endif
-# if __cpp_lib_string_view != 201803L
-# error "__cpp_lib_string_view should have the value 201803L in c++23"
-# endif
-
-# ifdef __cpp_lib_submdspan
-# error "__cpp_lib_submdspan should not be defined before c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM
-# ifndef __cpp_lib_syncbuf
-# error "__cpp_lib_syncbuf should be defined in c++23"
-# endif
-# if __cpp_lib_syncbuf != 201803L
-# error "__cpp_lib_syncbuf should have the value 201803L in c++23"
-# endif
-# else
-# ifdef __cpp_lib_syncbuf
-# error "__cpp_lib_syncbuf should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM' is not met!"
-# endif
-# endif
-
-# ifdef __cpp_lib_text_encoding
-# error "__cpp_lib_text_encoding should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_three_way_comparison
-# error "__cpp_lib_three_way_comparison should be defined in c++23"
-# endif
-# if __cpp_lib_three_way_comparison != 201907L
-# error "__cpp_lib_three_way_comparison should have the value 201907L in c++23"
-# endif
-
-# ifndef __cpp_lib_to_address
-# error "__cpp_lib_to_address should be defined in c++23"
-# endif
-# if __cpp_lib_to_address != 201711L
-# error "__cpp_lib_to_address should have the value 201711L in c++23"
-# endif
-
-# ifndef __cpp_lib_to_array
-# error "__cpp_lib_to_array should be defined in c++23"
-# endif
-# if __cpp_lib_to_array != 201907L
-# error "__cpp_lib_to_array should have the value 201907L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_to_chars
-# error "__cpp_lib_to_chars should be defined in c++23"
-# endif
-# if __cpp_lib_to_chars != 201611L
-# error "__cpp_lib_to_chars should have the value 201611L in c++23"
-# 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
-
-# ifdef __cpp_lib_to_string
-# error "__cpp_lib_to_string should not be defined before c++26"
-# endif
-
-# ifndef __cpp_lib_to_underlying
-# error "__cpp_lib_to_underlying should be defined in c++23"
-# endif
-# if __cpp_lib_to_underlying != 202102L
-# error "__cpp_lib_to_underlying should have the value 202102L in c++23"
-# endif
-
-# ifndef __cpp_lib_transformation_trait_aliases
-# error "__cpp_lib_transformation_trait_aliases should be defined in c++23"
-# endif
-# if __cpp_lib_transformation_trait_aliases != 201304L
-# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_transparent_operators
-# error "__cpp_lib_transparent_operators should be defined in c++23"
-# endif
-# if __cpp_lib_transparent_operators != 201510L
-# error "__cpp_lib_transparent_operators should have the value 201510L in c++23"
-# endif
-
-# ifndef __cpp_lib_tuple_element_t
-# error "__cpp_lib_tuple_element_t should be defined in c++23"
-# endif
-# if __cpp_lib_tuple_element_t != 201402L
-# error "__cpp_lib_tuple_element_t should have the value 201402L in c++23"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_tuple_like
-# error "__cpp_lib_tuple_like should be defined in c++23"
-# endif
-# if __cpp_lib_tuple_like != 202207L
-# error "__cpp_lib_tuple_like should have the value 202207L in c++23"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_tuple_like
-# error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_tuples_by_type
-# error "__cpp_lib_tuples_by_type should be defined in c++23"
-# endif
-# if __cpp_lib_tuples_by_type != 201304L
-# error "__cpp_lib_tuples_by_type should have the value 201304L in c++23"
-# endif
-
-# ifndef __cpp_lib_type_identity
-# error "__cpp_lib_type_identity should be defined in c++23"
-# endif
-# if __cpp_lib_type_identity != 201806L
-# error "__cpp_lib_type_identity should have the value 201806L in c++23"
-# endif
-
-# ifndef __cpp_lib_type_trait_variable_templates
-# error "__cpp_lib_type_trait_variable_templates should be defined in c++23"
-# endif
-# if __cpp_lib_type_trait_variable_templates != 201510L
-# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++23"
-# endif
-
-# ifndef __cpp_lib_uncaught_exceptions
-# error "__cpp_lib_uncaught_exceptions should be defined in c++23"
-# endif
-# if __cpp_lib_uncaught_exceptions != 201411L
-# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++23"
-# endif
-
-# ifndef __cpp_lib_unordered_map_try_emplace
-# error "__cpp_lib_unordered_map_try_emplace should be defined in c++23"
-# endif
-# if __cpp_lib_unordered_map_try_emplace != 201411L
-# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++23"
-# endif
-
-# ifndef __cpp_lib_unreachable
-# error "__cpp_lib_unreachable should be defined in c++23"
-# endif
-# if __cpp_lib_unreachable != 202202L
-# error "__cpp_lib_unreachable should have the value 202202L in c++23"
-# endif
-
-# ifndef __cpp_lib_unwrap_ref
-# error "__cpp_lib_unwrap_ref should be defined in c++23"
-# endif
-# if __cpp_lib_unwrap_ref != 201811L
-# error "__cpp_lib_unwrap_ref should have the value 201811L in c++23"
-# endif
-
-# ifndef __cpp_lib_variant
-# error "__cpp_lib_variant should be defined in c++23"
-# endif
-# if __cpp_lib_variant != 202106L
-# error "__cpp_lib_variant should have the value 202106L in c++23"
-# endif
-
-# ifndef __cpp_lib_void_t
-# error "__cpp_lib_void_t should be defined in c++23"
-# endif
-# if __cpp_lib_void_t != 201411L
-# error "__cpp_lib_void_t should have the value 201411L in c++23"
-# endif
-
-#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 != 202302L
-# error "__cpp_lib_allocate_at_least should have the value 202302L 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_associative_heterogeneous_insertion
-# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
-# endif
-# if __cpp_lib_associative_heterogeneous_insertion != 202306L
-# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_associative_heterogeneous_insertion
-# error "__cpp_lib_associative_heterogeneous_insertion 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
-
-# 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
-
-# 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_min_max
-# error "__cpp_lib_atomic_min_max should be defined in c++26"
-# endif
-# if __cpp_lib_atomic_min_max != 202403L
-# error "__cpp_lib_atomic_min_max should have the value 202403L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_min_max
-# error "__cpp_lib_atomic_min_max should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# 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
-
-# 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_VERSION) || _LIBCPP_AVAILABILITY_HAS_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_VERSION) || _LIBCPP_AVAILABILITY_HAS_SYNC' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# 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
-
-# ifndef __cpp_lib_bind_front
-# error "__cpp_lib_bind_front should be defined in c++26"
-# endif
-# if __cpp_lib_bind_front != 202306L
-# error "__cpp_lib_bind_front should have the value 202306L 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
-
-# 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
-
-# ifndef __cpp_lib_bitset
-# error "__cpp_lib_bitset should be defined in c++26"
-# endif
-# if __cpp_lib_bitset != 202306L
-# error "__cpp_lib_bitset should have the value 202306L in c++26"
-# 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_forward_list
-# error "__cpp_lib_constexpr_forward_list should be defined in c++26"
-# endif
-# if __cpp_lib_constexpr_forward_list != 202502L
-# error "__cpp_lib_constexpr_forward_list should have the value 202502L 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
-
-# if !defined(_LIBCPP_ABI_VCRUNTIME)
-# ifndef __cpp_lib_constexpr_new
-# error "__cpp_lib_constexpr_new should be defined in c++26"
-# endif
-# if __cpp_lib_constexpr_new != 202406L
-# error "__cpp_lib_constexpr_new should have the value 202406L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_constexpr_new
-# error "__cpp_lib_constexpr_new should not be defined when the requirement '!defined(_LIBCPP_ABI_VCRUNTIME)' is not met!"
-# endif
-# 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_constrained_equality
-# error "__cpp_lib_constrained_equality should be defined in c++26"
-# endif
-# if __cpp_lib_constrained_equality != 202403L
-# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_constrained_equality
-# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_containers_ranges
-# error "__cpp_lib_containers_ranges should be defined in c++26"
-# endif
-# if __cpp_lib_containers_ranges != 202202L
-# error "__cpp_lib_containers_ranges should have the value 202202L in c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_copyable_function
-# error "__cpp_lib_copyable_function should be defined in c++26"
-# endif
-# if __cpp_lib_copyable_function != 202306L
-# error "__cpp_lib_copyable_function should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_copyable_function
-# error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!"
-# endif
-# 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 !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_debugging
-# error "__cpp_lib_debugging should be defined in c++26"
-# endif
-# if __cpp_lib_debugging != 202311L
-# error "__cpp_lib_debugging should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_debugging
-# error "__cpp_lib_debugging should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_default_template_type_for_algorithm_values
-# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
-# endif
-# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
-# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_default_template_type_for_algorithm_values
-# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
-# ifndef __cpp_lib_destroying_delete
-# error "__cpp_lib_destroying_delete should be defined in c++26"
-# 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_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)
-# 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_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_flat_map
-# error "__cpp_lib_flat_map should be defined in c++26"
-# endif
-# if __cpp_lib_flat_map != 202207L
-# error "__cpp_lib_flat_map should have the value 202207L in c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_flat_set
-# error "__cpp_lib_flat_set should be defined in c++26"
-# endif
-# if __cpp_lib_flat_set != 202207L
-# error "__cpp_lib_flat_set should have the value 202207L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_flat_set
-# error "__cpp_lib_flat_set should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
-# ifndef __cpp_lib_format
-# error "__cpp_lib_format should be defined in c++26"
-# endif
-# if __cpp_lib_format != 202110L
-# error "__cpp_lib_format should have the value 202110L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_format_path
-# error "__cpp_lib_format_path should be defined in c++26"
-# endif
-# if __cpp_lib_format_path != 202403L
-# error "__cpp_lib_format_path should have the value 202403L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_format_path
-# error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# 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
-
-# ifndef __cpp_lib_format_uchar
-# error "__cpp_lib_format_uchar should be defined in c++26"
-# endif
-# if __cpp_lib_format_uchar != 202311L
-# error "__cpp_lib_format_uchar should have the value 202311L in c++26"
-# endif
-
-# 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_algorithm
-# error "__cpp_lib_freestanding_algorithm should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_algorithm != 202311L
-# error "__cpp_lib_freestanding_algorithm should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_algorithm
-# error "__cpp_lib_freestanding_algorithm should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_array
-# error "__cpp_lib_freestanding_array should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_array != 202311L
-# error "__cpp_lib_freestanding_array should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_array
-# error "__cpp_lib_freestanding_array should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_cstring
-# error "__cpp_lib_freestanding_cstring should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_cstring != 202306L
-# error "__cpp_lib_freestanding_cstring should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_cstring
-# error "__cpp_lib_freestanding_cstring should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_expected
-# error "__cpp_lib_freestanding_expected should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_expected != 202311L
-# error "__cpp_lib_freestanding_expected should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_expected
-# error "__cpp_lib_freestanding_expected should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_mdspan
-# error "__cpp_lib_freestanding_mdspan should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_mdspan != 202311L
-# error "__cpp_lib_freestanding_mdspan should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_mdspan
-# error "__cpp_lib_freestanding_mdspan should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_optional
-# error "__cpp_lib_freestanding_optional should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_optional != 202311L
-# error "__cpp_lib_freestanding_optional should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_optional
-# error "__cpp_lib_freestanding_optional should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_string_view
-# error "__cpp_lib_freestanding_string_view should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_string_view != 202311L
-# error "__cpp_lib_freestanding_string_view should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_string_view
-# error "__cpp_lib_freestanding_string_view should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_freestanding_variant
-# error "__cpp_lib_freestanding_variant should be defined in c++26"
-# endif
-# if __cpp_lib_freestanding_variant != 202311L
-# error "__cpp_lib_freestanding_variant should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_freestanding_variant
-# error "__cpp_lib_freestanding_variant should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION)
-# ifndef __cpp_lib_fstream_native_handle
-# error "__cpp_lib_fstream_native_handle should be defined in c++26"
-# endif
-# if __cpp_lib_fstream_native_handle != 202306L
-# error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_fstream_native_handle
-# error "__cpp_lib_fstream_native_handle should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION)' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_function_ref
-# error "__cpp_lib_function_ref should be defined in c++26"
-# endif
-# if __cpp_lib_function_ref != 202306L
-# error "__cpp_lib_function_ref should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_function_ref
-# error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!"
-# endif
-# 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_generate_random
-# error "__cpp_lib_generate_random should be defined in c++26"
-# endif
-# if __cpp_lib_generate_random != 202403L
-# error "__cpp_lib_generate_random should have the value 202403L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_generate_random
-# error "__cpp_lib_generate_random should not be defined because it is unimplemented in libc++!"
-# endif
-# 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(_LIBCPP_VERSION) || (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(_LIBCPP_VERSION) || (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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_hazard_pointer
-# error "__cpp_lib_hazard_pointer should be defined in c++26"
-# endif
-# if __cpp_lib_hazard_pointer != 202306L
-# error "__cpp_lib_hazard_pointer should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_hazard_pointer
-# error "__cpp_lib_hazard_pointer 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_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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_inplace_vector
-# error "__cpp_lib_inplace_vector should be defined in c++26"
-# endif
-# if __cpp_lib_inplace_vector != 202406L
-# error "__cpp_lib_inplace_vector should have the value 202406L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_inplace_vector
-# error "__cpp_lib_inplace_vector should not be defined because it is unimplemented in libc++!"
-# endif
-# 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_ios_noreplace
-# error "__cpp_lib_ios_noreplace should be defined in c++26"
-# endif
-# if __cpp_lib_ios_noreplace != 202207L
-# error "__cpp_lib_ios_noreplace should have the value 202207L 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
-
-# if __has_builtin(__builtin_is_implicit_lifetime)
-# ifndef __cpp_lib_is_implicit_lifetime
-# error "__cpp_lib_is_implicit_lifetime should be defined in c++26"
-# endif
-# if __cpp_lib_is_implicit_lifetime != 202302L
-# error "__cpp_lib_is_implicit_lifetime should have the value 202302L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_is_implicit_lifetime
-# error "__cpp_lib_is_implicit_lifetime should not be defined when the requirement '__has_builtin(__builtin_is_implicit_lifetime)' is not met!"
-# endif
-# 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 __has_builtin(__builtin_is_virtual_base_of)
-# ifndef __cpp_lib_is_virtual_base_of
-# error "__cpp_lib_is_virtual_base_of should be defined in c++26"
-# endif
-# if __cpp_lib_is_virtual_base_of != 202406L
-# error "__cpp_lib_is_virtual_base_of should have the value 202406L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_is_virtual_base_of
-# error "__cpp_lib_is_virtual_base_of should not be defined when the requirement '__has_builtin(__builtin_is_virtual_base_of)' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_is_within_lifetime
-# error "__cpp_lib_is_within_lifetime should be defined in c++26"
-# endif
-# if __cpp_lib_is_within_lifetime != 202306L
-# error "__cpp_lib_is_within_lifetime should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_is_within_lifetime
-# error "__cpp_lib_is_within_lifetime should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)
-# 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
-# ifdef __cpp_lib_jthread
-# error "__cpp_lib_jthread should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_linalg
-# error "__cpp_lib_linalg should be defined in c++26"
-# endif
-# if __cpp_lib_linalg != 202311L
-# error "__cpp_lib_linalg should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_linalg
-# error "__cpp_lib_linalg should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_list_remove_return_type
-# error "__cpp_lib_list_remove_return_type should be defined in c++26"
-# endif
-# 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
-
-# ifndef __cpp_lib_mdspan
-# error "__cpp_lib_mdspan should be defined in c++26"
-# endif
-# if __cpp_lib_mdspan != 202406L
-# error "__cpp_lib_mdspan should have the value 202406L in c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# 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
-# else
-# ifdef __cpp_lib_memory_resource
-# error "__cpp_lib_memory_resource should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_modules
-# error "__cpp_lib_modules should be defined in c++26"
-# endif
-# if __cpp_lib_modules != 202207L
-# error "__cpp_lib_modules should have the value 202207L 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 != 202306L
-# error "__cpp_lib_not_fn should have the value 202306L 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_optional_range_support
-# error "__cpp_lib_optional_range_support should be defined in c++26"
-# endif
-# if __cpp_lib_optional_range_support != 202406L
-# error "__cpp_lib_optional_range_support should have the value 202406L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_optional_range_support
-# error "__cpp_lib_optional_range_support should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_out_ptr
-# error "__cpp_lib_out_ptr should be defined in c++26"
-# endif
-# if __cpp_lib_out_ptr != 202311L
-# error "__cpp_lib_out_ptr should have the value 202311L 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_philox_engine
-# error "__cpp_lib_philox_engine should be defined in c++26"
-# endif
-# if __cpp_lib_philox_engine != 202406L
-# error "__cpp_lib_philox_engine should have the value 202406L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_philox_engine
-# error "__cpp_lib_philox_engine should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR
-# ifndef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should be defined in c++26"
-# endif
-# if __cpp_lib_polymorphic_allocator != 201902L
-# error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_polymorphic_allocator
-# error "__cpp_lib_polymorphic_allocator should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT
-# ifndef __cpp_lib_print
-# error "__cpp_lib_print should be defined in c++26"
-# endif
-# if __cpp_lib_print != 202207L
-# error "__cpp_lib_print should have the value 202207L in c++26"
-# endif
-# else
-# ifdef __cpp_lib_print
-# error "__cpp_lib_print should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION
-# 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
-# else
-# ifdef __cpp_lib_quoted_string_io
-# error "__cpp_lib_quoted_string_io should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_LOCALIZATION' is not met!"
-# endif
-# endif
-
-# ifndef __cpp_lib_ranges
-# error "__cpp_lib_ranges should be defined in c++26"
-# endif
-# if __cpp_lib_ranges != 202406L
-# error "__cpp_lib_ranges should have the value 202406L in c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_as_const
-# error "__cpp_lib_ranges_as_const should be defined in c++26"
-# endif
-# if __cpp_lib_ranges_as_const != 202207L
-# error "__cpp_lib_ranges_as_const should have the value 202207L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_ranges_as_const
-# error "__cpp_lib_ranges_as_const should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_ranges_as_rvalue
-# error "__cpp_lib_ranges_as_rvalue should be defined in c++26"
-# endif
-# 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
-
-# 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ranges_concat
-# error "__cpp_lib_ranges_concat should be defined in c++26"
-# endif
-# if __cpp_lib_ranges_concat != 202403L
-# error "__cpp_lib_ranges_concat should have the value 202403L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_ranges_concat
-# error "__cpp_lib_ranges_concat should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_ranges_contains
-# error "__cpp_lib_ranges_contains should be defined in c++26"
-# endif
-# if __cpp_lib_ranges_contains != 202207L
-# error "__cpp_lib_ranges_contains should have the value 202207L in c++26"
-# endif
-
-# ifndef __cpp_lib_ranges_find_last
-# error "__cpp_lib_ranges_find_last should be defined in c++26"
-# endif
-# if __cpp_lib_ranges_find_last != 202207L
-# error "__cpp_lib_ranges_find_last should have the value 202207L in c++26"
-# 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
-
-# ifndef __cpp_lib_ranges_repeat
-# error "__cpp_lib_ranges_repeat should be defined in c++26"
-# endif
-# if __cpp_lib_ranges_repeat != 202207L
-# error "__cpp_lib_ranges_repeat should have the value 202207L in c++26"
-# 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
-
-# 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
-
-# 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
-
-# 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_ratio
-# error "__cpp_lib_ratio should be defined in c++26"
-# endif
-# if __cpp_lib_ratio != 202306L
-# error "__cpp_lib_ratio should have the value 202306L 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_rcu
-# error "__cpp_lib_rcu should be defined in c++26"
-# endif
-# if __cpp_lib_rcu != 202306L
-# error "__cpp_lib_rcu should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_rcu
-# error "__cpp_lib_rcu should not be defined because it is unimplemented in libc++!"
-# endif
-# 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_reference_wrapper
-# error "__cpp_lib_reference_wrapper should be defined in c++26"
-# endif
-# if __cpp_lib_reference_wrapper != 202403L
-# error "__cpp_lib_reference_wrapper should have the value 202403L in c++26"
-# 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_saturation_arithmetic
-# error "__cpp_lib_saturation_arithmetic should be defined in c++26"
-# endif
-# if __cpp_lib_saturation_arithmetic != 202311L
-# error "__cpp_lib_saturation_arithmetic should have the value 202311L in c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS
-# 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
-# else
-# ifdef __cpp_lib_scoped_lock
-# error "__cpp_lib_scoped_lock should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_THREADS' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_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_VERSION) || (_LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_SYNC)' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_senders
-# error "__cpp_lib_senders should be defined in c++26"
-# endif
-# if __cpp_lib_senders != 202406L
-# error "__cpp_lib_senders should have the value 202406L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_senders
-# error "__cpp_lib_senders should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if _LIBCPP_HAS_THREADS
-# 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 '_LIBCPP_HAS_THREADS' 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 _LIBCPP_HAS_THREADS
-# 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 '_LIBCPP_HAS_THREADS' 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
-
-# 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_smart_ptr_owner_equality
-# error "__cpp_lib_smart_ptr_owner_equality should be defined in c++26"
-# endif
-# if __cpp_lib_smart_ptr_owner_equality != 202306L
-# error "__cpp_lib_smart_ptr_owner_equality should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_smart_ptr_owner_equality
-# error "__cpp_lib_smart_ptr_owner_equality should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# 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
-
-# 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
-
-# ifndef __cpp_lib_span_at
-# error "__cpp_lib_span_at should be defined in c++26"
-# endif
-# if __cpp_lib_span_at != 202311L
-# error "__cpp_lib_span_at should have the value 202311L in c++26"
-# endif
-
-# ifndef __cpp_lib_span_initializer_list
-# error "__cpp_lib_span_initializer_list should be defined in c++26"
-# endif
-# if __cpp_lib_span_initializer_list != 202311L
-# error "__cpp_lib_span_initializer_list should have the value 202311L in c++26"
-# endif
-
-# 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
-
-# ifndef __cpp_lib_sstream_from_string_view
-# error "__cpp_lib_sstream_from_string_view should be defined in c++26"
-# endif
-# if __cpp_lib_sstream_from_string_view != 202306L
-# error "__cpp_lib_sstream_from_string_view should have the value 202306L 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 != 202403L
-# error "__cpp_lib_string_view should have the value 202403L in c++26"
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_submdspan
-# error "__cpp_lib_submdspan should be defined in c++26"
-# endif
-# if __cpp_lib_submdspan != 202306L
-# error "__cpp_lib_submdspan should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_submdspan
-# error "__cpp_lib_submdspan should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM
-# 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
-# ifdef __cpp_lib_syncbuf
-# error "__cpp_lib_syncbuf should not be defined when the requirement '!defined(_LIBCPP_VERSION) || _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM' is not met!"
-# endif
-# endif
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_text_encoding
-# error "__cpp_lib_text_encoding should be defined in c++26"
-# endif
-# if __cpp_lib_text_encoding != 202306L
-# error "__cpp_lib_text_encoding should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_text_encoding
-# error "__cpp_lib_text_encoding should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# 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
-
-# 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 != 202306L
-# error "__cpp_lib_to_chars should have the value 202306L 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_to_string
-# error "__cpp_lib_to_string should be defined in c++26"
-# endif
-# if __cpp_lib_to_string != 202306L
-# error "__cpp_lib_to_string should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_to_string
-# error "__cpp_lib_to_string 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
-
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_tuple_like
-# error "__cpp_lib_tuple_like should be defined in c++26"
-# endif
-# if __cpp_lib_tuple_like != 202311L
-# error "__cpp_lib_tuple_like should have the value 202311L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_tuple_like
-# error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"
-# endif
-# endif
-
-# ifndef __cpp_lib_tuples_by_type
-# error "__cpp_lib_tuples_by_type should be defined in c++26"
-# endif
-# 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 != 202306L
-# error "__cpp_lib_variant should have the value 202306L 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
->>>>>>> 3e1b3b8f0316 (Make forward_list constexpr as part of P3372R3)
#endif // TEST_STD_VER > 23
More information about the libcxx-commits
mailing list