On Tue, May 27, 2025 at 4:32 PM Luc Grosheintz <luc.groshei...@gmail.com> wrote:
> 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. > I think we are OK. As you mentioned we are past general discussion, so I need to do more throughroul review with checking against the standard. I will try to book some time for this this week. > 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 > > > >