Since, I believe now we're through the larger questions about
how to implement layouts. If reviewing all three over and over
is too painful, it might now make sense to split the patch into
separate patches, one per layout.

On 5/26/25 16:04, Luc Grosheintz wrote:
This follows up on:
https://gcc.gnu.org/pipermail/libstdc++/2025-May/061572.html

Note that this patch series can only be applied after merging:
https://gcc.gnu.org/pipermail/libstdc++/2025-May/061653.html

The important changes since v3 are:
   * Fixed and testsed several related overflow issues that occured in
     extents of size 0 by using `size_t` to compute products.
   * Fixed and tested default ctors.
   * Add missing code for module support.
   * Documented deviation from standard.

The smaller changes include:
   * Squashed the three small commits that make cosmetic changes to
     std::extents.
   * Remove layout_left related changes from the layout_stride commit.
   * Remove superfluous `mapping(extents_type(__exts))`.
   * Fix indenting and improve comment in layout_stride.
   * Add an easy check for representable required_span_size to
     layout_stride.
   * Inline __dynamic_extents_prod

Thank you Tomasz for all the great reviews!

Luc Grosheintz (8):
   libstdc++: Improve naming and whitespace for extents.
   libstdc++: Implement layout_left from mdspan.
   libstdc++: Add tests for layout_left.
   libstdc++: Implement layout_right from mdspan.
   libstdc++: Add tests for layout_right.
   libstdc++: Implement layout_stride from mdspan.
   libstdc++: Add tests for layout_stride.
   libstdc++: Make layout_left(layout_stride) noexcept.

  libstdc++-v3/include/std/mdspan               | 711 +++++++++++++++++-
  libstdc++-v3/src/c++23/std.cc.in              |   5 +-
  .../mdspan/layouts/class_mandate_neg.cc       |  42 ++
  .../23_containers/mdspan/layouts/ctors.cc     | 459 +++++++++++
  .../23_containers/mdspan/layouts/empty.cc     |  78 ++
  .../23_containers/mdspan/layouts/mapping.cc   | 568 ++++++++++++++
  .../23_containers/mdspan/layouts/stride.cc    | 500 ++++++++++++
  7 files changed, 2349 insertions(+), 14 deletions(-)
  create mode 100644 
libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
  create mode 100644 
libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  create mode 100644 
libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  create mode 100644 
libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  create mode 100644 
libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc


Reply via email to