Hi Luc, While running the libc++ test on libstdc++ we have found the following issue in our implementation. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121061 Would you be interested in looking into fixing this?
Also, libc++ makes the default constructor of mdpsan conditionally noexcept as extension (standard does not require it https://eel.is/c++draft/views.multidim#mdspan.mdspan.cons). We could do the same. Instead of writing a big conditional noexcept specification, I would suggest defaultint the constructor on first declaration: constexpr mdspan() requires (rank_dynamic() > 0) && is_default_constructible_v<data_handle_type> && is_default_constructible_v<mapping_type> && is_default_constructible_v<accessor_type> = default; And then having default member initializers: private: [[no_unique_address]] accessor_type _M_accessor = accessor_type(); [[no_unique_address]] mapping_type _M_mapping = mapping_type(); [[no_unique_address]] data_handle_type _M_handle = data_handle_type(); We do not want to use "{}" as the samantis is a bit differnt. Regards, Tomasz On Tue, Jul 8, 2025 at 3:44 PM Tomasz Kaminski <tkami...@redhat.com> wrote: > All patches were merged. I will double check that we got all the papers > listed and the issue, and close it. > Thanks again for your submissions. > > On Tue, Jul 8, 2025 at 10:26 AM Luc Grosheintz <luc.groshei...@gmail.com> > wrote: > >> 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 >> >>