The discussion for v4 is here:
https://gcc.gnu.org/pipermail/libstdc++/2025-May/061665.html
The non-trivial changes are:
* Fixed bug in __offset that called m(0...) even for empty extents; added a
test.
* Fixed buggy tests for class mandates.
* Fix layout_stride::is_{,always_}exhaustive.
* Fix missing private (2x).
* Use cmp_equal in layout_stride::operator==
* Use cmp_equal in tests for std::extents (added to first commit).
Additionally:
* added __empty,
* cleaned up parens near `requires`,
* changed __mapping_like to __mapping_alike,
* use extents_type instead of _Extents,
* don't comment on deviation.
Luc Grosheintz (8):
libstdc++: Improve naming, whitespace and silence warnings for
extents.
libstdc++: Implement layout_left from mdspan.
libstdc++: Add tests for layout_left.
libstdc++: Implement layout_right from mdspan.
libstdc++: Add tests for layout_right.
libstdc++: Implement layout_stride from mdspan.
libstdc++: Add tests for layout_stride.
libstdc++: Make layout_left(layout_stride) noexcept.
libstdc++-v3/include/std/mdspan | 725 +++++++++++++++++-
libstdc++-v3/src/c++23/std.cc.in | 5 +-
.../mdspan/extents/ctor_default.cc | 2 +-
.../mdspan/layouts/class_mandate_neg.cc | 42 +
.../23_containers/mdspan/layouts/ctors.cc | 438 +++++++++++
.../23_containers/mdspan/layouts/empty.cc | 69 ++
.../23_containers/mdspan/layouts/mapping.cc | 568 ++++++++++++++
.../23_containers/mdspan/layouts/stride.cc | 526 +++++++++++++
8 files changed, 2360 insertions(+), 15 deletions(-)
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
create mode 100644
libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
--
2.49.0