diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-25 17:35:41 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-06 20:13:06 +0000 |
commit | cb14a3fe5122c879eae1fb480ed7ce82a699ddb6 (patch) | |
tree | b983a613c35ece61d561b5a9ef9cd66419f6c7fb /contrib/llvm-project/libcxx/include/__ranges/common_view.h | |
parent | 3d68ee6cbdb244de9fab1df8a2525d2fa592571e (diff) | |
parent | 99aabd70801bd4bc72c4942747f6d62c675112f5 (diff) | |
download | src-cb14a3fe5122c879eae1fb480ed7ce82a699ddb6.tar.gz src-cb14a3fe5122c879eae1fb480ed7ce82a699ddb6.zip |
Merge llvm-project main llvmorg-18-init-15692-g007ed0dccd6a
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-15692-g007ed0dccd6a.
PR: 276104
MFC after: 1 month
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__ranges/common_view.h')
-rw-r--r-- | contrib/llvm-project/libcxx/include/__ranges/common_view.h | 83 |
1 files changed, 43 insertions, 40 deletions
diff --git a/contrib/llvm-project/libcxx/include/__ranges/common_view.h b/contrib/llvm-project/libcxx/include/__ranges/common_view.h index f4cd18074904..4b5b04c9894b 100644 --- a/contrib/llvm-project/libcxx/include/__ranges/common_view.h +++ b/contrib/llvm-project/libcxx/include/__ranges/common_view.h @@ -38,96 +38,99 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -template<view _View> - requires (!common_range<_View> && copyable<iterator_t<_View>>) +template <view _View> + requires(!common_range<_View> && copyable<iterator_t<_View>>) class common_view : public view_interface<common_view<_View>> { _View __base_ = _View(); public: - _LIBCPP_HIDE_FROM_ABI - common_view() requires default_initializable<_View> = default; + _LIBCPP_HIDE_FROM_ABI common_view() + requires default_initializable<_View> + = default; - _LIBCPP_HIDE_FROM_ABI - constexpr explicit common_view(_View __v) : __base_(std::move(__v)) { } + _LIBCPP_HIDE_FROM_ABI constexpr explicit common_view(_View __v) : __base_(std::move(__v)) {} - _LIBCPP_HIDE_FROM_ABI - constexpr _View base() const& requires copy_constructible<_View> { return __base_; } + _LIBCPP_HIDE_FROM_ABI constexpr _View base() const& + requires copy_constructible<_View> + { + return __base_; + } - _LIBCPP_HIDE_FROM_ABI - constexpr _View base() && { return std::move(__base_); } + _LIBCPP_HIDE_FROM_ABI constexpr _View base() && { return std::move(__base_); } - _LIBCPP_HIDE_FROM_ABI - constexpr auto begin() { + _LIBCPP_HIDE_FROM_ABI constexpr auto begin() { if constexpr (random_access_range<_View> && sized_range<_View>) return ranges::begin(__base_); else return common_iterator<iterator_t<_View>, sentinel_t<_View>>(ranges::begin(__base_)); } - _LIBCPP_HIDE_FROM_ABI - constexpr auto begin() const requires range<const _View> { + _LIBCPP_HIDE_FROM_ABI constexpr auto begin() const + requires range<const _View> + { if constexpr (random_access_range<const _View> && sized_range<const _View>) return ranges::begin(__base_); else return common_iterator<iterator_t<const _View>, sentinel_t<const _View>>(ranges::begin(__base_)); } - _LIBCPP_HIDE_FROM_ABI - constexpr auto end() { + _LIBCPP_HIDE_FROM_ABI constexpr auto end() { if constexpr (random_access_range<_View> && sized_range<_View>) return ranges::begin(__base_) + ranges::size(__base_); else return common_iterator<iterator_t<_View>, sentinel_t<_View>>(ranges::end(__base_)); } - _LIBCPP_HIDE_FROM_ABI - constexpr auto end() const requires range<const _View> { + _LIBCPP_HIDE_FROM_ABI constexpr auto end() const + requires range<const _View> + { if constexpr (random_access_range<const _View> && sized_range<const _View>) return ranges::begin(__base_) + ranges::size(__base_); else return common_iterator<iterator_t<const _View>, sentinel_t<const _View>>(ranges::end(__base_)); } - _LIBCPP_HIDE_FROM_ABI - constexpr auto size() requires sized_range<_View> { + _LIBCPP_HIDE_FROM_ABI constexpr auto size() + requires sized_range<_View> + { return ranges::size(__base_); } - _LIBCPP_HIDE_FROM_ABI - constexpr auto size() const requires sized_range<const _View> { + _LIBCPP_HIDE_FROM_ABI constexpr auto size() const + requires sized_range<const _View> + { return ranges::size(__base_); } }; -template<class _Range> -common_view(_Range&&) - -> common_view<views::all_t<_Range>>; +template <class _Range> +common_view(_Range&&) -> common_view<views::all_t<_Range>>; -template<class _View> +template <class _View> inline constexpr bool enable_borrowed_range<common_view<_View>> = enable_borrowed_range<_View>; namespace views { namespace __common { - struct __fn : __range_adaptor_closure<__fn> { - template<class _Range> - requires common_range<_Range> - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI - constexpr auto operator()(_Range&& __range) const +struct __fn : __range_adaptor_closure<__fn> { + template <class _Range> + requires common_range<_Range> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Range&& __range) const noexcept(noexcept(views::all(std::forward<_Range>(__range)))) - -> decltype( views::all(std::forward<_Range>(__range))) - { return views::all(std::forward<_Range>(__range)); } + -> decltype(views::all(std::forward<_Range>(__range))) { + return views::all(std::forward<_Range>(__range)); + } - template<class _Range> - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI - constexpr auto operator()(_Range&& __range) const + template <class _Range> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Range&& __range) const noexcept(noexcept(common_view{std::forward<_Range>(__range)})) - -> decltype( common_view{std::forward<_Range>(__range)}) - { return common_view{std::forward<_Range>(__range)}; } - }; + -> decltype(common_view{std::forward<_Range>(__range)}) { + return common_view{std::forward<_Range>(__range)}; + } +}; } // namespace __common inline namespace __cpo { - inline constexpr auto common = __common::__fn{}; +inline constexpr auto common = __common::__fn{}; } // namespace __cpo } // namespace views } // namespace ranges |