libstdc++: Implement P2415R2 changes to viewable_range / views::all
authorPatrick Palka <ppalka@redhat.com>
Tue, 22 Feb 2022 14:37:58 +0000 (09:37 -0500)
committerPatrick Palka <ppalka@redhat.com>
Tue, 22 Feb 2022 14:37:58 +0000 (09:37 -0500)
commit5e1b17f038671df1a6580ece4cd58ef91cc1e234
treed2fec60efe254b26c408c5cbb3c166f090bca081
parentbc91cb8d8cf1d4abbb74fb69d918071e1801fd77
libstdc++: Implement P2415R2 changes to viewable_range / views::all

This implements the wording changes in P2415R2 "What is a view?", which
is a DR for C++20.

libstdc++-v3/ChangeLog:

* include/bits/ranges_base.h (__detail::__is_initializer_list):
Define.
(viewable_range): Adjust as per P2415R2.
* include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value.
* include/std/ranges (owning_view): Define as per P2415R2.
(enable_borrowed_range<owning_view>): Likewise.
(views::__detail::__can_subrange): Replace with ...
(views::__detail::__can_owning_view): ... this.
(views::_All::_S_noexcept): Sync with operator().
(views::_All::operator()): Use owning_view instead of subrange
as per P2415R2.
* include/std/version (__cpp_lib_ranges): Adjust value.
* testsuite/std/ranges/adaptors/all.cc (test06): Adjust now that
views::all uses owning_view instead of subrange.
(test08): New test.
* testsuite/std/ranges/adaptors/lazy_split.cc (test09): Adjust
now that rvalue non-view non-borrowed ranges are viewable.
* testsuite/std/ranges/adaptors/split.cc (test06): Likewise.
libstdc++-v3/include/bits/ranges_base.h
libstdc++-v3/include/bits/ranges_cmp.h
libstdc++-v3/include/std/ranges
libstdc++-v3/include/std/version
libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
libstdc++-v3/testsuite/std/ranges/adaptors/split.cc