This patch series contains everything up to submdspan_extents and
implements them as described in N5014, i.e. without P3663.
The reasons to not include P3663 are:
- Doing both allows us to benchmark the change.
- Carefully implementing both, automatically leads to looking at the
problem from different angles. We can spot differences between the
two proposals. One such difference is that P3663 seems to allow
ambiguous slices, e.g. slices that convert to both full_extent and
index_type.
- P3663 hasn't been finalized yet, if we implement it now we'll need
to keep track of the difference. That's easier (or at least not
harder) if we have a commit containing the already applied changes
from N5014.
- With a casting layer in place, the changes in the paper are quite
contained, e.g. remove cases for handling tuple, slightly refine
the range checks of slices (more can be done at compile-time).
- We could easily revert P3663 if needed.
Luc Grosheintz (4):
libstdc++: Implement strided_slice from <mdspan>. [PR110352]
libstdc++: Implement full_extent_t. [PR110352]
libstdc++: Implement submdspan_mapping_result. [PR110352]
libstdc++: Implement submdspan_extents. [PR110352]
libstdc++-v3/include/bits/version.def | 9 +
libstdc++-v3/include/bits/version.h | 9 +
libstdc++-v3/include/std/mdspan | 311 ++++++++++++++++++
libstdc++-v3/src/c++23/std.cc.in | 7 +-
.../testsuite/23_containers/mdspan/int_like.h | 9 +
.../mdspan/submdspan/strided_slice.cc | 46 +++
.../mdspan/submdspan/strided_slice_neg.cc | 19 ++
.../mdspan/submdspan/submdspan_extents.cc | 159 +++++++++
.../mdspan/submdspan/submdspan_extents_neg.cc | 66 ++++
9 files changed, 633 insertions(+), 2 deletions(-)
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc
--
2.50.1