On 9/11/25 14:41, Tomasz Kaminski wrote:
On Thu, Sep 11, 2025 at 1:50 PM Luc Grosheintz <luc.groshei...@gmail.com>
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.
Thank you for the reviews. Sorry for reacting slowly, but it might be
easiest to postpone the review. I'll likely be able to make progress
on layout_right_padded (now that many things are cleared up).
The right-padded layout will likely require that I generalize certain
concepts, e.g. a "padded stride" instead of a first/last stride.
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