Patches 1/5 ... 4/5 aren't sent because corresponding commits from v3 should be used. The changes for 5/5 are:
* Fix ADL issue in swap and create tests. * Replace pragma once with include guard in layout_like.h. * Use VERIFY(md.empty()) when checking value initialization. Since the code for swap is identical for all three members of mdspan, this commit intentionally checks that the accessor is ADL swappable, but not the other two memebers. Doing so allows us to have a single, short class purely dedicated to ADL. Otherwise we'd need to put OpaqueLayout and LayoutLike into a namespace and add ADL related logic. I tried it and wasn't too happy with the result. This felt shorter, more directly to the point while still checking that the implemented swap function allows ADL for swapping all members variables. I tested effectiveness of the test by reverting the fix and making sure the test fails. This version of the patch series also adds the commit to update the FTM. The changes are: * Update the commit message to mention the related ticket. * Rename the file. * Implement a more verbose version of the test. Luc Grosheintz (6): libstdc++: Check prerequisites of layout_*::operator(). libstdc++: Check prerequisite of extents::extents. libstdc++: Restructure mdspan tests to reuse IntLike. libstdc++: Implement __mdspan::__size. libstdc++: Implement mdspan and tests [PR107761]. libstdc++: Set FMT for complete C++23 mdspan [PR107761]. libstdc++-v3/include/bits/version.def | 3 +- libstdc++-v3/include/bits/version.h | 3 +- libstdc++-v3/include/std/mdspan | 315 ++++++++- libstdc++-v3/src/c++23/std.cc.in | 3 +- .../23_containers/mdspan/class_mandate_neg.cc | 41 ++ .../mdspan/extents/class_mandates_neg.cc | 2 + .../mdspan/extents/custom_integer.cc | 27 +- .../mdspan/extents/extents_mismatch_neg.cc | 35 + .../23_containers/mdspan/extents/int_like.h | 28 + .../testsuite/23_containers/mdspan/ftm.cc | 9 + .../23_containers/mdspan/layout_like.h | 83 +++ .../mdspan/layouts/debug/out_of_bounds_neg.cc | 30 + .../testsuite/23_containers/mdspan/mdspan.cc | 643 ++++++++++++++++++ .../23_containers/mdspan/out_of_bounds_neg.cc | 24 + 14 files changed, 1212 insertions(+), 34 deletions(-) create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/extents/int_like.h create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/ftm.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc create mode 100644 libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc -- 2.49.0