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

Reply via email to