This follows up on: https://gcc.gnu.org/pipermail/libstdc++/2025-May/061572.html
Note that this patch series can only be applied after merging: https://gcc.gnu.org/pipermail/libstdc++/2025-May/061653.html The important changes since v3 are: * Fixed and testsed several related overflow issues that occured in extents of size 0 by using `size_t` to compute products. * Fixed and tested default ctors. * Add missing code for module support. * Documented deviation from standard. The smaller changes include: * Squashed the three small commits that make cosmetic changes to std::extents. * Remove layout_left related changes from the layout_stride commit. * Remove superfluous `mapping(extents_type(__exts))`. * Fix indenting and improve comment in layout_stride. * Add an easy check for representable required_span_size to layout_stride. * Inline __dynamic_extents_prod Thank you Tomasz for all the great reviews! Luc Grosheintz (8): libstdc++: Improve naming and whitespace 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 | 711 +++++++++++++++++- libstdc++-v3/src/c++23/std.cc.in | 5 +- .../mdspan/layouts/class_mandate_neg.cc | 42 ++ .../23_containers/mdspan/layouts/ctors.cc | 459 +++++++++++ .../23_containers/mdspan/layouts/empty.cc | 78 ++ .../23_containers/mdspan/layouts/mapping.cc | 568 ++++++++++++++ .../23_containers/mdspan/layouts/stride.cc | 500 ++++++++++++ 7 files changed, 2349 insertions(+), 14 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