[PATCH v4 0/8] Implement layouts from mdspan.

Luc Grosheintz luc.grosheintz@gmail.com
Tue May 27 14:30:07 GMT 2025


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
> 



More information about the Libstdc++ mailing list