public inbox for libstdc++-cvs@sourceware.org help / color / mirror / Atom feed
From: Tamar Christina <tnfchris@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/ARM/heads/arm-perf-staging)] libstdc++: Add ranges_size_t and rename all_view (LWG 3335) Date: Fri, 17 Jul 2020 13:13:02 +0000 (GMT) [thread overview] Message-ID: <20200717131302.75C4439B0437@sourceware.org> (raw) https://gcc.gnu.org/g:aca60ecff35837a1af9383cf67ee7d1c0a718b28 commit aca60ecff35837a1af9383cf67ee7d1c0a718b28 Author: Jonathan Wakely <jwakely@redhat.com> Date: Wed Feb 19 12:30:10 2020 +0000 libstdc++: Add ranges_size_t and rename all_view (LWG 3335) * include/bits/range_access.h (range_size_t): Define alias template. * include/std/ranges (all_view): Rename to views::all_t (LWG 3335). * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. Diff: --- libstdc++-v3/ChangeLog | 4 +++ libstdc++-v3/include/bits/range_access.h | 3 ++ libstdc++-v3/include/std/ranges | 42 +++++++++++----------- .../testsuite/std/ranges/adaptors/filter.cc | 2 +- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9ccba4345d5..f01b78da118 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,9 @@ 2020-02-19 Jonathan Wakely <jwakely@redhat.com> + * include/bits/range_access.h (range_size_t): Define alias template. + * include/std/ranges (all_view): Rename to views::all_t (LWG 3335). + * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. + * include/std/ranges (filter_view, transform_view, take_view) (join_view, split_view, reverse_view): Remove commented-out converting constructors (LWG 3280). diff --git a/libstdc++-v3/include/bits/range_access.h b/libstdc++-v3/include/bits/range_access.h index e2a2c28c7d2..e7a19305d23 100644 --- a/libstdc++-v3/include/bits/range_access.h +++ b/libstdc++-v3/include/bits/range_access.h @@ -905,6 +905,9 @@ namespace ranges concept sized_range = range<_Tp> && requires(_Tp& __t) { ranges::size(__t); }; + template<sized_range _Range> + using range_size_t = decltype(ranges::size(std::declval<_Range&>())); + // [range.refinements] /// A range for which ranges::begin returns an output iterator. diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index cf4c19ffaab..b0806750a08 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -1236,10 +1236,11 @@ namespace views else return subrange{std::forward<_Range>(__r)}; }; - } // namespace views - template<viewable_range _Range> - using all_view = decltype(views::all(declval<_Range>())); + template<viewable_range _Range> + using all_t = decltype(all(std::declval<_Range>())); + + } // namespace views // XXX: the following algos are copied from ranges_algo.h to avoid a circular // dependency with that header. @@ -1503,7 +1504,7 @@ namespace views }; template<typename _Range, typename _Pred> - filter_view(_Range&&, _Pred) -> filter_view<all_view<_Range>, _Pred>; + filter_view(_Range&&, _Pred) -> filter_view<views::all_t<_Range>, _Pred>; namespace views { @@ -1836,7 +1837,7 @@ namespace views }; template<typename _Range, typename _Fp> - transform_view(_Range&&, _Fp) -> transform_view<all_view<_Range>, _Fp>; + transform_view(_Range&&, _Fp) -> transform_view<views::all_t<_Range>, _Fp>; namespace views { @@ -1974,7 +1975,7 @@ namespace views template<range _Range> take_view(_Range&&, range_difference_t<_Range>) - -> take_view<all_view<_Range>>; + -> take_view<views::all_t<_Range>>; namespace views { @@ -2066,7 +2067,7 @@ namespace views template<typename _Range, typename _Pred> take_while_view(_Range&&, _Pred) - -> take_while_view<all_view<_Range>, _Pred>; + -> take_while_view<views::all_t<_Range>, _Pred>; namespace views { @@ -2143,7 +2144,7 @@ namespace views template<typename _Range> drop_view(_Range&&, range_difference_t<_Range>) - -> drop_view<all_view<_Range>>; + -> drop_view<views::all_t<_Range>>; namespace views { @@ -2199,7 +2200,7 @@ namespace views template<typename _Range, typename _Pred> drop_while_view(_Range&&, _Pred) - -> drop_while_view<all_view<_Range>, _Pred>; + -> drop_while_view<views::all_t<_Range>, _Pred>; namespace views { @@ -2450,7 +2451,7 @@ namespace views // XXX: _M_inner is "present only when !is_reference_v<_InnerRange>" [[no_unique_address]] conditional_t<!is_reference_v<_InnerRange>, - all_view<_InnerRange>, __detail::_Empty> _M_inner; + views::all_t<_InnerRange>, __detail::_Empty> _M_inner; public: join_view() = default; @@ -2514,7 +2515,7 @@ namespace views }; template<typename _Range> - explicit join_view(_Range&&) -> join_view<all_view<_Range>>; + explicit join_view(_Range&&) -> join_view<views::all_t<_Range>>; namespace views { @@ -2838,7 +2839,7 @@ namespace views { } template<input_range _Range> - requires constructible_from<_Vp, all_view<_Range>> + requires constructible_from<_Vp, views::all_t<_Range>> && constructible_from<_Pattern, single_view<range_value_t<_Range>>> constexpr split_view(_Range&& __r, range_value_t<_Range> __e) @@ -2893,11 +2894,11 @@ namespace views template<typename _Range, typename _Pred> split_view(_Range&&, _Pred&&) - -> split_view<all_view<_Range>, all_view<_Pred>>; + -> split_view<views::all_t<_Range>, views::all_t<_Pred>>; template<input_range _Range> split_view(_Range&&, range_value_t<_Range>) - -> split_view<all_view<_Range>, single_view<range_value_t<_Range>>>; + -> split_view<views::all_t<_Range>, single_view<range_value_t<_Range>>>; namespace views { @@ -2945,7 +2946,7 @@ namespace views /* XXX: LWG 3280 didn't remove this constructor, but I think it should? template<viewable_range _Range> requires (!common_range<_Range>) - && constructible_from<_Vp, all_view<_Range>> + && constructible_from<_Vp, views::all_t<_Range>> constexpr explicit common_view(_Range&& __r) : _M_base(views::all(std::forward<_Range>(__r))) @@ -3010,7 +3011,7 @@ namespace views }; template<typename _Range> - common_view(_Range&&) -> common_view<all_view<_Range>>; + common_view(_Range&&) -> common_view<views::all_t<_Range>>; namespace views { @@ -3083,7 +3084,7 @@ namespace views }; template<typename _Range> - reverse_view(_Range&&) -> reverse_view<all_view<_Range>>; + reverse_view(_Range&&) -> reverse_view<views::all_t<_Range>>; namespace views { @@ -3356,10 +3357,10 @@ namespace views }; template<typename _Range> - using keys_view = elements_view<all_view<_Range>, 0>; + using keys_view = elements_view<views::all_t<_Range>, 0>; template<typename _Range> - using values_view = elements_view<all_view<_Range>, 1>; + using values_view = elements_view<views::all_t<_Range>, 1>; namespace views { @@ -3367,7 +3368,8 @@ namespace views inline constexpr __adaptor::_RangeAdaptorClosure elements = [] <viewable_range _Range> (_Range&& __r) { - return elements_view<all_view<_Range>, _Nm>{std::forward<_Range>(__r)}; + using _El = elements_view<views::all_t<_Range>, _Nm>; + return _El{std::forward<_Range>(__r)}; }; inline constexpr __adaptor::_RangeAdaptorClosure keys = elements<0>; diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc index 4edbf0b657d..4e41232cd5c 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc @@ -43,7 +43,7 @@ test01() static_assert(!ranges::sized_range<R>); static_assert(ranges::bidirectional_range<R>); static_assert(!ranges::random_access_range<R>); - static_assert(ranges::range<ranges::all_view<R>>); + static_assert(ranges::range<views::all_t<R>>); VERIFY( ranges::equal(v, (int[]){1,3,5}) ); VERIFY( ranges::equal(v | views::reverse, (int[]){5,3,1}) ); VERIFY( v.pred()(3) == true );
reply other threads:[~2020-07-17 13:13 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200717131302.75C4439B0437@sourceware.org \ --to=tnfchris@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ --cc=libstdc++-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).