On Thu, Sep 11, 2025 at 1:50 PM Luc Grosheintz <[email protected]> wrote:
> Changes since v1: > > - Use cmp_* when comparing two integers of differnt types. > - Remove the FTM submdspan and replace it with an unofficial > purely internal FTM called padded_layouts. > - Make __get_static_stride consteval. > - Make __is_*_padded_layout only available inside > __glibcxx_padded_layout regions. > - Use size_t for __least_multiple_at_least. > - Implement checks (mandate and prerequisite) for representable padded > static stride. > - Implement checks for representable padded "size", i.e. the product > of padded extents. This product might be larger than the > required_span_size, but the standard requires the product to be > representable (not just required_span_size). > - New overload for __static_extents(__begin, __end). > - Remove the double checked prerequisite. > - Skip some calculations for static first stride (2x). > - Replace array<..., ...> with _Stride. > - s/_S_stride_type/_Stride > - Test additional cases for default ctor. > - Rename ConversionRule::Conventional to Regular. > - Remove empty file testsuite/mdspan/layouts/debug/padded_neg.cc. > - Ensure all tests are run. > - Test remaining prerequisite in mapping(layout_stride). > > I also noticed that some of the changes can be split into separate > commits. > Hi, The first four patches LGTM, however I will put them in one patch, that just least all made changes, they are really small. I do not think I will be able to review layout_left_padded today fully, and I will continue review in two weeks. I will post a partial notes marking them as so. > > Luc Grosheintz (5): > libstdc++: Refactor layout mapping tests to use a concept. > libstdc++: Fix bug in layout mapping tests. > libstdc++: Prepare mapping layout tests for left padded. > libstdc++: Refactor __mdspan::__static_quotient. > libstdc++: Implement std::layout_left_padded. > > libstdc++-v3/include/bits/version.def | 10 + > libstdc++-v3/include/bits/version.h | 9 + > libstdc++-v3/include/std/mdspan | 541 +++++++++++++++- > libstdc++-v3/src/c++23/std.cc.in | 8 +- > .../mdspan/layouts/class_mandate_neg.cc | 1 + > .../23_containers/mdspan/layouts/ctors.cc | 61 +- > .../mdspan/layouts/debug/padded_neg.cc | 22 + > .../23_containers/mdspan/layouts/empty.cc | 12 +- > .../23_containers/mdspan/layouts/mapping.cc | 204 ++++-- > .../23_containers/mdspan/layouts/padded.cc | 611 ++++++++++++++++++ > .../mdspan/layouts/padded_neg.cc | 280 ++++++++ > 11 files changed, 1692 insertions(+), 67 deletions(-) > create mode 100644 > libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/padded_neg.cc > create mode 100644 > libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc > create mode 100644 > libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc > > -- > 2.50.1 > >
