aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/libcxx/include/__ranges/rend.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__ranges/rend.h')
-rw-r--r--contrib/llvm-project/libcxx/include/__ranges/rend.h71
1 files changed, 29 insertions, 42 deletions
diff --git a/contrib/llvm-project/libcxx/include/__ranges/rend.h b/contrib/llvm-project/libcxx/include/__ranges/rend.h
index 7ee574ccfa67..58d98aafd264 100644
--- a/contrib/llvm-project/libcxx/include/__ranges/rend.h
+++ b/contrib/llvm-project/libcxx/include/__ranges/rend.h
@@ -37,60 +37,47 @@ _LIBCPP_BEGIN_NAMESPACE_STD
namespace ranges {
namespace __rend {
template <class _Tp>
-concept __member_rend =
- __can_borrow<_Tp> &&
- __workaround_52970<_Tp> &&
- requires(_Tp&& __t) {
- ranges::rbegin(__t);
- { _LIBCPP_AUTO_CAST(__t.rend()) } -> sentinel_for<decltype(ranges::rbegin(__t))>;
- };
-
-void rend(auto&) = delete;
+concept __member_rend = __can_borrow<_Tp> && __workaround_52970<_Tp> && requires(_Tp&& __t) {
+ ranges::rbegin(__t);
+ { _LIBCPP_AUTO_CAST(__t.rend()) } -> sentinel_for<decltype(ranges::rbegin(__t))>;
+};
+
+void rend(auto&) = delete;
void rend(const auto&) = delete;
template <class _Tp>
concept __unqualified_rend =
- !__member_rend<_Tp> &&
- __can_borrow<_Tp> &&
- __class_or_enum<remove_cvref_t<_Tp>> &&
- requires(_Tp&& __t) {
- ranges::rbegin(__t);
- { _LIBCPP_AUTO_CAST(rend(__t)) } -> sentinel_for<decltype(ranges::rbegin(__t))>;
- };
+ !__member_rend<_Tp> && __can_borrow<_Tp> && __class_or_enum<remove_cvref_t<_Tp>> && requires(_Tp&& __t) {
+ ranges::rbegin(__t);
+ { _LIBCPP_AUTO_CAST(rend(__t)) } -> sentinel_for<decltype(ranges::rbegin(__t))>;
+ };
template <class _Tp>
-concept __can_reverse =
- __can_borrow<_Tp> &&
- !__member_rend<_Tp> &&
- !__unqualified_rend<_Tp> &&
- requires(_Tp&& __t) {
- { ranges::begin(__t) } -> same_as<decltype(ranges::end(__t))>;
- { ranges::begin(__t) } -> bidirectional_iterator;
- };
+concept __can_reverse = __can_borrow<_Tp> && !__member_rend<_Tp> && !__unqualified_rend<_Tp> && requires(_Tp&& __t) {
+ { ranges::begin(__t) } -> same_as<decltype(ranges::end(__t))>;
+ { ranges::begin(__t) } -> bidirectional_iterator;
+};
class __fn {
public:
template <class _Tp>
requires __member_rend<_Tp>
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
- noexcept(noexcept(_LIBCPP_AUTO_CAST(__t.rend())))
- {
+ noexcept(noexcept(_LIBCPP_AUTO_CAST(__t.rend()))) {
return _LIBCPP_AUTO_CAST(__t.rend());
}
template <class _Tp>
requires __unqualified_rend<_Tp>
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
- noexcept(noexcept(_LIBCPP_AUTO_CAST(rend(__t))))
- {
+ noexcept(noexcept(_LIBCPP_AUTO_CAST(rend(__t)))) {
return _LIBCPP_AUTO_CAST(rend(__t));
}
template <class _Tp>
requires __can_reverse<_Tp>
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
- noexcept(noexcept(ranges::begin(__t)))
- {
+ noexcept(noexcept(ranges::begin(__t))) {
return std::make_reverse_iterator(ranges::begin(__t));
}
@@ -99,7 +86,7 @@ public:
} // namespace __rend
inline namespace __cpo {
- inline constexpr auto rend = __rend::__fn{};
+inline constexpr auto rend = __rend::__fn{};
} // namespace __cpo
} // namespace ranges
@@ -110,24 +97,24 @@ namespace __crend {
struct __fn {
template <class _Tp>
requires is_lvalue_reference_v<_Tp&&>
- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI
- constexpr auto operator()(_Tp&& __t) const
- noexcept(noexcept(ranges::rend(static_cast<const remove_reference_t<_Tp>&>(__t))))
- -> decltype( ranges::rend(static_cast<const remove_reference_t<_Tp>&>(__t)))
- { return ranges::rend(static_cast<const remove_reference_t<_Tp>&>(__t)); }
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
+ noexcept(noexcept(ranges::rend(static_cast<const remove_reference_t<_Tp>&>(__t))))
+ -> decltype(ranges::rend(static_cast<const remove_reference_t<_Tp>&>(__t))) {
+ return ranges::rend(static_cast<const remove_reference_t<_Tp>&>(__t));
+ }
template <class _Tp>
requires is_rvalue_reference_v<_Tp&&>
- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI
- constexpr auto operator()(_Tp&& __t) const
- noexcept(noexcept(ranges::rend(static_cast<const _Tp&&>(__t))))
- -> decltype( ranges::rend(static_cast<const _Tp&&>(__t)))
- { return ranges::rend(static_cast<const _Tp&&>(__t)); }
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
+ noexcept(noexcept(ranges::rend(static_cast<const _Tp&&>(__t))))
+ -> decltype(ranges::rend(static_cast<const _Tp&&>(__t))) {
+ return ranges::rend(static_cast<const _Tp&&>(__t));
+ }
};
} // namespace __crend
inline namespace __cpo {
- inline constexpr auto crend = __crend::__fn{};
+inline constexpr auto crend = __crend::__fn{};
} // namespace __cpo
} // namespace ranges