Release Cosmopolitan v3.6.0

This release is an atomic upgrade to GCC 14.1.0 with C23 and C++23
This commit is contained in:
Justine Tunney 2024-07-23 03:16:17 -07:00
parent 62ace3623a
commit 5660ec4741
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
1585 changed files with 117353 additions and 271644 deletions

View file

@ -37,49 +37,49 @@ _LIBCPP_BEGIN_NAMESPACE_STD
#if _LIBCPP_STD_VER >= 20
namespace ranges {
template<range _Range>
requires is_object_v<_Range>
class ref_view : public view_interface<ref_view<_Range>> {
_Range *__range_;
template <range _Range>
requires is_object_v<_Range>
class ref_view : public view_interface<ref_view<_Range>> {
_Range* __range_;
static void __fun(_Range&);
static void __fun(_Range&&) = delete;
static void __fun(_Range&);
static void __fun(_Range&&) = delete; // NOLINT(modernize-use-equals-delete) ; This is llvm.org/PR54276
public:
template<class _Tp>
requires __different_from<_Tp, ref_view> &&
convertible_to<_Tp, _Range&> && requires { __fun(std::declval<_Tp>()); }
_LIBCPP_HIDE_FROM_ABI
constexpr ref_view(_Tp&& __t)
: __range_(std::addressof(static_cast<_Range&>(std::forward<_Tp>(__t))))
{}
template <class _Tp>
requires __different_from<_Tp, ref_view> && convertible_to<_Tp, _Range&> && requires { __fun(std::declval<_Tp>()); }
_LIBCPP_HIDE_FROM_ABI constexpr ref_view(_Tp&& __t)
: __range_(std::addressof(static_cast<_Range&>(std::forward<_Tp>(__t)))) {}
_LIBCPP_HIDE_FROM_ABI constexpr _Range& base() const { return *__range_; }
_LIBCPP_HIDE_FROM_ABI constexpr _Range& base() const { return *__range_; }
_LIBCPP_HIDE_FROM_ABI constexpr iterator_t<_Range> begin() const { return ranges::begin(*__range_); }
_LIBCPP_HIDE_FROM_ABI constexpr sentinel_t<_Range> end() const { return ranges::end(*__range_); }
_LIBCPP_HIDE_FROM_ABI constexpr iterator_t<_Range> begin() const { return ranges::begin(*__range_); }
_LIBCPP_HIDE_FROM_ABI constexpr sentinel_t<_Range> end() const { return ranges::end(*__range_); }
_LIBCPP_HIDE_FROM_ABI
constexpr bool empty() const
requires requires { ranges::empty(*__range_); }
{ return ranges::empty(*__range_); }
_LIBCPP_HIDE_FROM_ABI constexpr bool empty() const
requires requires { ranges::empty(*__range_); }
{
return ranges::empty(*__range_);
}
_LIBCPP_HIDE_FROM_ABI
constexpr auto size() const
requires sized_range<_Range>
{ return ranges::size(*__range_); }
_LIBCPP_HIDE_FROM_ABI constexpr auto size() const
requires sized_range<_Range>
{
return ranges::size(*__range_);
}
_LIBCPP_HIDE_FROM_ABI
constexpr auto data() const
requires contiguous_range<_Range>
{ return ranges::data(*__range_); }
};
_LIBCPP_HIDE_FROM_ABI constexpr auto data() const
requires contiguous_range<_Range>
{
return ranges::data(*__range_);
}
};
template<class _Range>
ref_view(_Range&) -> ref_view<_Range>;
template <class _Range>
ref_view(_Range&) -> ref_view<_Range>;
template<class _Tp>
inline constexpr bool enable_borrowed_range<ref_view<_Tp>> = true;
template <class _Tp>
inline constexpr bool enable_borrowed_range<ref_view<_Tp>> = true;
} // namespace ranges
#endif // _LIBCPP_STD_VER >= 20