Import Cobalt 24.master.0.1033952
diff --git a/third_party/llvm-project/libcxx/include/__concepts/arithmetic.h b/third_party/llvm-project/libcxx/include/__concepts/arithmetic.h
index 215b52a..91a0b18 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/arithmetic.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/arithmetic.h
@@ -22,7 +22,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concepts.arithmetic], arithmetic concepts
 
@@ -45,7 +45,7 @@
 template <class _Tp>
 concept __libcpp_signed_integer = __libcpp_is_signed_integer<_Tp>::value;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/assignable.h b/third_party/llvm-project/libcxx/include/__concepts/assignable.h
index 91edd40..2dabae5 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/assignable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/assignable.h
@@ -22,7 +22,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.assignable]
 
@@ -34,7 +34,7 @@
     { __lhs = _VSTD::forward<_Rhs>(__rhs) } -> same_as<_Lhs>;
   };
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/boolean_testable.h b/third_party/llvm-project/libcxx/include/__concepts/boolean_testable.h
index a96bde7..8efb6e5 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/boolean_testable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/boolean_testable.h
@@ -19,7 +19,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concepts.booleantestable]
 
@@ -31,7 +31,7 @@
   { !_VSTD::forward<_Tp>(__t) } -> __boolean_testable_impl;
 };
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/class_or_enum.h b/third_party/llvm-project/libcxx/include/__concepts/class_or_enum.h
index c4d2f98..04c24bd 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/class_or_enum.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/class_or_enum.h
@@ -21,7 +21,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // Whether a type is a class type or enumeration type according to the Core wording.
 
@@ -33,7 +33,7 @@
 template<class _Tp>
 concept __workaround_52970 = is_class_v<__remove_cvref_t<_Tp>> || is_union_v<__remove_cvref_t<_Tp>>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/common_reference_with.h b/third_party/llvm-project/libcxx/include/__concepts/common_reference_with.h
index cc92762..6ad0db2 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/common_reference_with.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/common_reference_with.h
@@ -20,7 +20,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.commonref]
 
@@ -30,7 +30,7 @@
   convertible_to<_Tp, common_reference_t<_Tp, _Up>> &&
   convertible_to<_Up, common_reference_t<_Tp, _Up>>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/common_with.h b/third_party/llvm-project/libcxx/include/__concepts/common_with.h
index 569a0ee..e159bcc 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/common_with.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/common_with.h
@@ -23,7 +23,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.common]
 
@@ -43,7 +43,7 @@
       add_lvalue_reference_t<const _Tp>,
       add_lvalue_reference_t<const _Up>>>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/constructible.h b/third_party/llvm-project/libcxx/include/__concepts/constructible.h
index 1d78eb5..6e3862c 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/constructible.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/constructible.h
@@ -20,7 +20,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.constructible]
 template<class _Tp, class... _Args>
@@ -49,7 +49,7 @@
   constructible_from<_Tp, const _Tp&> && convertible_to<const _Tp&, _Tp> &&
   constructible_from<_Tp, const _Tp> && convertible_to<const _Tp, _Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/convertible_to.h b/third_party/llvm-project/libcxx/include/__concepts/convertible_to.h
index 2c1d267..20ee31b 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/convertible_to.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/convertible_to.h
@@ -19,7 +19,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.convertible]
 
@@ -30,7 +30,7 @@
     static_cast<_To>(std::declval<_From>());
   };
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/copyable.h b/third_party/llvm-project/libcxx/include/__concepts/copyable.h
index c5d8a80..0d6dd50 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/copyable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/copyable.h
@@ -20,7 +20,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concepts.object]
 
@@ -32,7 +32,7 @@
   assignable_from<_Tp&, const _Tp&> &&
   assignable_from<_Tp&, const _Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/derived_from.h b/third_party/llvm-project/libcxx/include/__concepts/derived_from.h
index 0d3462d..1cbe458 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/derived_from.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/derived_from.h
@@ -19,7 +19,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.derived]
 
@@ -28,7 +28,7 @@
   is_base_of_v<_Bp, _Dp> &&
   is_convertible_v<const volatile _Dp*, const volatile _Bp*>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/destructible.h b/third_party/llvm-project/libcxx/include/__concepts/destructible.h
index ad3819d..8da9c37 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/destructible.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/destructible.h
@@ -18,14 +18,14 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.destructible]
 
 template<class _Tp>
 concept destructible = is_nothrow_destructible_v<_Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/different_from.h b/third_party/llvm-project/libcxx/include/__concepts/different_from.h
index 15fd8f0..5ef1467 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/different_from.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/different_from.h
@@ -19,12 +19,12 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 template<class _Tp, class _Up>
 concept __different_from = !same_as<remove_cvref_t<_Tp>, remove_cvref_t<_Up>>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/equality_comparable.h b/third_party/llvm-project/libcxx/include/__concepts/equality_comparable.h
index b865141..f106288 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/equality_comparable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/equality_comparable.h
@@ -21,7 +21,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.equalitycomparable]
 
@@ -47,7 +47,7 @@
       __make_const_lvalue_ref<_Up>>> &&
   __weakly_equality_comparable_with<_Tp, _Up>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/invocable.h b/third_party/llvm-project/libcxx/include/__concepts/invocable.h
index ec39b7b..59eab01 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/invocable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/invocable.h
@@ -19,7 +19,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.invocable]
 
@@ -33,7 +33,7 @@
 template<class _Fn, class... _Args>
 concept regular_invocable = invocable<_Fn, _Args...>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/movable.h b/third_party/llvm-project/libcxx/include/__concepts/movable.h
index 749b78a..f37d49f 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/movable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/movable.h
@@ -21,7 +21,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concepts.object]
 
@@ -32,7 +32,7 @@
   assignable_from<_Tp&, _Tp> &&
   swappable<_Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/predicate.h b/third_party/llvm-project/libcxx/include/__concepts/predicate.h
index 7ae9783..b09183c 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/predicate.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/predicate.h
@@ -20,7 +20,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.predicate]
 
@@ -28,7 +28,7 @@
 concept predicate =
   regular_invocable<_Fn, _Args...> && __boolean_testable<invoke_result_t<_Fn, _Args...>>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/regular.h b/third_party/llvm-project/libcxx/include/__concepts/regular.h
index d15728d..93fb701 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/regular.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/regular.h
@@ -19,14 +19,14 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.object]
 
 template<class _Tp>
 concept regular = semiregular<_Tp> && equality_comparable<_Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/relation.h b/third_party/llvm-project/libcxx/include/__concepts/relation.h
index 7d5141c..218afef 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/relation.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/relation.h
@@ -18,7 +18,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.relation]
 
@@ -37,7 +37,7 @@
 template<class _Rp, class _Tp, class _Up>
 concept strict_weak_order = relation<_Rp, _Tp, _Up>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/same_as.h b/third_party/llvm-project/libcxx/include/__concepts/same_as.h
index 554ebc3..b86cada 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/same_as.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/same_as.h
@@ -18,7 +18,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.same]
 
@@ -28,7 +28,7 @@
 template<class _Tp, class _Up>
 concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/semiregular.h b/third_party/llvm-project/libcxx/include/__concepts/semiregular.h
index d15bb3b..ae2f3c6 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/semiregular.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/semiregular.h
@@ -19,14 +19,14 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.object]
 
 template<class _Tp>
 concept semiregular = copyable<_Tp> && default_initializable<_Tp>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/swappable.h b/third_party/llvm-project/libcxx/include/__concepts/swappable.h
index d91a7a1..340691d 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/swappable.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/swappable.h
@@ -30,7 +30,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.swappable]
 
@@ -114,7 +114,7 @@
     ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Tp>(__t));
   };
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/third_party/llvm-project/libcxx/include/__concepts/totally_ordered.h b/third_party/llvm-project/libcxx/include/__concepts/totally_ordered.h
index f12d26b..350eff3 100644
--- a/third_party/llvm-project/libcxx/include/__concepts/totally_ordered.h
+++ b/third_party/llvm-project/libcxx/include/__concepts/totally_ordered.h
@@ -21,7 +21,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
 
 // [concept.totallyordered]
 
@@ -51,7 +51,7 @@
       __make_const_lvalue_ref<_Up>>> &&
   __partially_ordered_with<_Tp, _Up>;
 
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
 
 _LIBCPP_END_NAMESPACE_STD