libstdc++/ranges: Implement various small LWG issues
This implements the following small LWG issues:
3848. adjacent_view, adjacent_transform_view and slide_view missing base accessor
3851. chunk_view::inner-iterator missing custom iter_move and iter_swap
3947. Unexpected constraints on adjacent_transform_view::base()
4001. iota_view should provide empty
4012. common_view::begin/end are missing the simple-view check
4013. lazy_split_view::outer-iterator::value_type should not provide default constructor
4035. single_view should provide empty
4053. Unary call to std::views::repeat does not decay the argument
4054. Repeating a repeat_view should repeat the view
libstdc++-v3/ChangeLog:
* include/std/ranges (single_view::empty): Define as per LWG 4035.
(iota_view::empty): Define as per LWG 4001.
(lazy_split_view::_OuterIter::value_type): Remove default
constructor and make other constructor private as per LWG 4013.
(common_view::begin): Disable non-const overload for simple
views as per LWG 4012.
(common_view::end): Likewise.
(adjacent_view::base): Define as per LWG 3848.
(adjacent_transform_view::base): Likewise.
(chunk_view::_InnerIter::iter_move): Define as per LWG 3851.
(chunk_view::_InnerIter::itep_swap): Likewise.
(slide_view::base): Define as per LWG 3848.
(repeat_view): Adjust deduction guide as per LWG 4053.
(_Repeat::operator()): Adjust single-parameter overload as per
LWG 4054.
* testsuite/std/ranges/adaptors/adjacent/1.cc: Verify existence
of base member function.
* testsuite/std/ranges/adaptors/adjacent_transform/1.cc: Likewise.
* testsuite/std/ranges/adaptors/chunk/1.cc: Test LWG 3851 example.
* testsuite/std/ranges/adaptors/slide/1.cc: Verify existence of
base member function.
* testsuite/std/ranges/iota/iota_view.cc: Test LWG 4001 example.
* testsuite/std/ranges/repeat/1.cc: Test LWG 4053/4054 examples.
Reviewed-by:
Jonathan Wakely <jwakely@redhat.com>
Showing
- libstdc++-v3/include/std/ranges 76 additions, 8 deletionslibstdc++-v3/include/std/ranges
- libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc 3 additions, 0 deletionslibstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc
- libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc 3 additions, 0 deletions...-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc
- libstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc 15 additions, 0 deletionslibstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc
- libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc 3 additions, 0 deletionslibstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
- libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc 12 additions, 0 deletionslibstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
- libstdc++-v3/testsuite/std/ranges/repeat/1.cc 23 additions, 0 deletionslibstdc++-v3/testsuite/std/ranges/repeat/1.cc
Loading
Please register or sign in to comment