[RFC v2 2/4] libstdc++: Change meaning of strided_slice::extent per P3982R1

Jonathan Wakely jwakely@redhat.com
Wed Apr 1 13:34:30 GMT 2026


On Fri, 20 Mar 2026 at 08:02, Tomasz Kamiński <tkaminsk@redhat.com> wrote:
>
> This patch implements the changes suggested in D3982R1 (and PL007 NB comment)
> for C++26, but changing the strided_slice::extent to indicate number of
> elements (extent) in the produced (output) mdspan, instead of input.

OK

>
> libstdc++-v3/ChangeLog:
>
>         * include/std/mdspan (__mdspan::__static_slice_extent)
>         (__mdspan::__dynamic_slice_extent): Return unmodified extent
>         value for strided_slice.
>         (__mdspan::__substrides_generic, __mdspan::__substrides_standardized):
>         Multipliy stride, if more than one element is requested.
>         (__mdspan::__canonical_range_slice): Define.
>         (__mdspan::__slice_cast): Use __canonical_range_slice for range_slice
>         and two elements tuples.
>         (__mdspan::__check_inrange_index): Define.
>         (__mdspan::__check_valid_slice): Validate if slice.offset +
>         (slice.extent - 1) * slice.stride fits into extent of given
>         dimension. Check stride if slice.extent > 1.
>         * testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc:
>         Add test for range_slice.
>         * testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc:
>         Add tests validating new conditions.
>         * testsuite/23_containers/mdspan/submdspan/selections/testcases.h:
>         Adjusted for change of meaing of strided_slice::extent.
>         * testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc:
>         Adjusted for change of meaing of strided_slice::extent. And expanded
>         range_slice tests.
>         * testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc:
>         Adjusted for change of meaing of strided_slice::extent.



More information about the Libstdc++ mailing list