I have a question about how to proceed. First we finish the refinement of the current commits. Then I could:
1. start a new patch series for layout_*; 2. or add new commits to the current series for layout_*. The advantage of 2. is that we can do more tests before merging anything into trunk. For example, we can check that the mapping of multi-indices to flat indices (i.e. the job of layout_*) is efficient. In particular, we can make sure that there's nothing in extents that prevents generating efficient code. I'm open to both options and would prefer doing whatever is more convenient to the reviewers and maintainers. On 4/18/25 1:29 PM, Luc Grosheintz wrote:
This is the fourth interation and replaces: https://gcc.gnu.org/pipermail/libstdc++/2025-April/061046.html Changes since v3: * Use `_S_` prefix for static member functions. * Use consteval to reduce code size. * Simplify ctors of _ExtentsStorage. * Added a test to cover the mandates of std::extents. Luc Grosheintz (4): libstdc++: Setup internal FTM for mdspan. libstdc++: Add header mdspan to the build-system. libstdc++: Implement std::extents [PR107761]. libstdc++: Add tests for std::extents. libstdc++-v3/doc/doxygen/user.cfg.in | 1 + libstdc++-v3/include/Makefile.am | 1 + libstdc++-v3/include/Makefile.in | 1 + libstdc++-v3/include/bits/version.def | 9 + libstdc++-v3/include/bits/version.h | 9 + libstdc++-v3/include/precompiled/stdc++.h | 1 + libstdc++-v3/include/std/mdspan | 297 ++++++++++++++++++ libstdc++-v3/src/c++23/std.cc.in | 6 +- .../mdspan/extents/class_mandates_neg.cc | 8 + .../23_containers/mdspan/extents/ctor_copy.cc | 82 +++++ .../23_containers/mdspan/extents/ctor_ints.cc | 62 ++++ .../mdspan/extents/ctor_shape.cc | 160 ++++++++++ .../mdspan/extents/custom_integer.cc | 87 +++++ .../23_containers/mdspan/extents/misc.cc | 223 +++++++++++++ 14 files changed, 946 insertions(+), 1 deletion(-) create mode 100644 libstdc++-v3/include/std/mdspan create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_copy.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_ints.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc