On Tue, 8 Jul 2025 at 09:26, 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.

Yeah that seems fine. I don't think we'll accidentally re-add the
std:: on the swaps for the other members without realising that's
wrong! So just testing that one of them is swapped via ADL is fine.

>
> 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
>

Reply via email to