This sequence of patches implements submdspan and as far as I'm aware
completes the C++26 header <mdspan>.
The first commit is preparatory (move code, generalize code
and fix some formatting issues). Then, each commit implements:
- submdspan_canonicalize_slices,
- submdspan_extents (with review comments on previous patch),
- submdspan_mapping: for each layout,
- remove internal FTM __glibcxx_padded_layouts,
- set __cpp_lib_submdspan to mark completion of submdspan.
Important changes since v1:
- removed use of `constexpr auto [...i] = _IotaArray` for
compatibility with clang.
Luc Grosheintz (10):
libstdc++: Prepare mdspan-related code for submdspan.
libstdc++: Implement submdspan_canonicalize_slices. [PR110352]
libstdc++: Implement submdspan_extents. [PR110352]
libstdc++: Implement submdspan and submdspan_mapping for layout_left.
[PR110352]
libstdc++: Implement submdspan_mapping for layout_right. [PR110352]
libstdc++: Implement submdspan_mapping for layout_stride. [PR110352]
libstdc++: Implement submdspan_mapping for layout_left_padded. [PR110352]
libstdc++: Implement submdspan_mapping for layout_right_padded. [PR110352]
libstdc++: remove __glibcxx_padded_layouts.
libstdc++: Set __cpp_lib_submdspan to 202411.
libstdc++-v3/include/bits/version.def | 14 +-
libstdc++-v3/include/bits/version.h | 14 +-
libstdc++-v3/include/std/mdspan | 953 +++++++++++++++++-
libstdc++-v3/src/c++23/std.cc.in | 6 +-
.../testsuite/23_containers/mdspan/int_like.h | 34 +-
.../padded_traits.h => layout_traits.h} | 69 +-
.../23_containers/mdspan/layouts/ctors.cc | 2 +-
.../23_containers/mdspan/layouts/mapping.cc | 2 +-
.../23_containers/mdspan/layouts/padded.cc | 2 +-
.../mdspan/layouts/padded_neg.cc | 2 +-
.../mdspan/submdspan/submdspan.cc | 377 +++++++
.../submdspan_canonicalize_slices.cc | 212 ++++
.../submdspan_canonicalize_slices_neg.cc | 208 ++++
.../mdspan/submdspan/submdspan_extents.cc | 169 ++++
.../mdspan/submdspan/submdspan_extents_neg.cc | 48 +
.../mdspan/submdspan/submdspan_mapping.cc | 301 ++++++
.../mdspan/submdspan/submdspan_neg.cc | 120 +++
17 files changed, 2453 insertions(+), 80 deletions(-)
rename libstdc++-v3/testsuite/23_containers/mdspan/{layouts/padded_traits.h =>
layout_traits.h} (67%)
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_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
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
--
2.51.2