diff options
author | mikhnenko <mikhnenko@yandex-team.com> | 2023-10-14 13:00:57 +0300 |
---|---|---|
committer | mikhnenko <mikhnenko@yandex-team.com> | 2023-10-14 13:22:30 +0300 |
commit | 4371a757495f375ca7c5b1730f4e9f741a71ec40 (patch) | |
tree | be8f3405e7b0534d29bfb8eec493c0dbe108adc5 /contrib/libs/cxxsupp/libcxx/include/ranges | |
parent | ecb10029a72bb21f92858ff3c0d76c8f255cf4ba (diff) | |
download | ydb-4371a757495f375ca7c5b1730f4e9f741a71ec40.tar.gz |
Update libc++ to 1 May 2022 639b9618f46d75f4dabd2082b3f6ba8433c287bf
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/ranges')
-rw-r--r-- | contrib/libs/cxxsupp/libcxx/include/ranges | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/ranges b/contrib/libs/cxxsupp/libcxx/include/ranges index 67a688bbba..82378a6b0d 100644 --- a/contrib/libs/cxxsupp/libcxx/include/ranges +++ b/contrib/libs/cxxsupp/libcxx/include/ranges @@ -150,6 +150,15 @@ namespace std::ranges { template<class T> inline constexpr bool enable_borrowed_range<owning_view<T>> = enable_borrowed_range<T>; + // [range.filter], filter view + template<input_range V, indirect_unary_predicate<iterator_t<V>> Pred> + requires view<V> && is_object_v<Pred> + class filter_view; + + namespace views { + inline constexpr unspecified filter = unspecified; + } + // [range.drop], drop view template<view V> class drop_view; @@ -204,6 +213,31 @@ namespace std::ranges { template<input_range V> requires view<V> && input_range<range_reference_t<V>> class join_view; + + // [range.lazy.split], lazy split view + template<class R> + concept tiny-range = see below; // exposition only + + template<input_range V, forward_range Pattern> + requires view<V> && view<Pattern> && + indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to> && + (forward_range<V> || tiny-range<Pattern>) + class lazy_split_view; + + namespace views { + inline constexpr unspecified lazy_split = unspecified; + } + + // [range.zip], zip view + template<input_range... Views> + requires (view<Views> && ...) && (sizeof...(Views) > 0) + class zip_view; // C++2b + + template<class... Views> + inline constexpr bool enable_borrowed_range<zip_view<Views...>> = // C++2b + (enable_borrowed_range<Views> && ...); + + namespace views { inline constexpr unspecified zip = unspecified; } // C++2b } namespace std { @@ -252,8 +286,10 @@ namespace std { #include <__ranges/empty_view.h> #include <__ranges/enable_borrowed_range.h> #include <__ranges/enable_view.h> +#include <__ranges/filter_view.h> #include <__ranges/iota_view.h> #include <__ranges/join_view.h> +#include <__ranges/lazy_split_view.h> #include <__ranges/rbegin.h> #include <__ranges/ref_view.h> #include <__ranges/rend.h> @@ -265,6 +301,7 @@ namespace std { #include <__ranges/transform_view.h> #include <__ranges/view_interface.h> #include <__ranges/views.h> +#include <__ranges/zip_view.h> #include <__tuple> // TODO: <ranges> has to export std::tuple_size. Replace this, once <tuple> is granularized. #include <compare> // Required by the standard. #include <initializer_list> // Required by the standard. |