This implements layout_stride for C++23 and with that completes the implementation of the C++23 mdspan header.
The feature test macro is added, and the status pages updated.
Co-authored-by: Damien L-G <dalg24@gmail.com>
Paths
| Differential D157171
[libc++] mdspan - implement layout_stride ClosedPublic Authored by crtrott on Aug 4 2023, 8:49 PM.
Details
Summary This implements layout_stride for C++23 and with that completes the implementation of the C++23 mdspan header. Co-authored-by: Damien L-G <dalg24@gmail.com>
Diff Detail
Event Timelinephilnik added inline comments.
Comment Actions Address review feedback, and implement missing ctors from layout_stride in layout_left/right crtrott added inline comments.
crtrott marked 2 inline comments as done. Comment ActionsAdd missing test on const mapping for required_span_size crtrott marked an inline comment as done. Comment ActionsSimply disable deduction guide warnings, adding them explicitly ended up either with unused template warning in files where they are not needed, or with a warning from GCC if one adds [[maybe_unused]], will try separately to make this warning go away.
crtrott marked an inline comment as done. Comment ActionsAddress more review comments: fix some assertions when extents are 0 Comment Actions I have a few more comments but this pretty much LGTM assuming CI passes.
crtrott added inline comments.
Closed by commit rG639a0986f3a3: [libc++] mdspan - implement layout_stride (#69650) (authored by crtrott, committed by GitHub <noreply@github.com>). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 557811 libcxx/docs/FeatureTestMacroTable.rst
libcxx/docs/Status/Cxx23.rst
libcxx/docs/Status/Cxx23Papers.csv
libcxx/include/CMakeLists.txt
libcxx/include/__fwd/mdspan.h
libcxx/include/__mdspan/layout_left.h
libcxx/include/__mdspan/layout_right.h
libcxx/include/__mdspan/layout_stride.h
libcxx/include/mdspan
libcxx/include/module.modulemap.in
libcxx/include/version
libcxx/modules/std/mdspan.inc
libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.conversion.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.non_unique.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.non_unique.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.index_operator.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.stride.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/mdspan/assert.conversion.pass.cpp
libcxx/test/libcxx/containers/views/mdspan/mdspan/assert.size.pass.cpp
libcxx/test/libcxx/transitive_includes/cxx03.csv
libcxx/test/libcxx/transitive_includes/cxx11.csv
libcxx/test/libcxx/transitive_includes/cxx14.csv
libcxx/test/libcxx/transitive_includes/cxx17.csv
libcxx/test/libcxx/transitive_includes/cxx20.csv
libcxx/test/libcxx/transitive_includes/cxx23.csv
libcxx/test/libcxx/transitive_includes/cxx26.csv
libcxx/test/std/containers/views/mdspan/CustomTestLayouts.h
libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_stride.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_stride.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/comparison.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/ctor.default.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/ctor.extents_array.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/ctor.extents_span.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/deduction.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/extents.verify.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/index_operator.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/properties.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/required_span_size.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/static_requirements.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_stride/stride.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/CustomTestLayouts.h
libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/conversion.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/conversion.verify.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.default.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_span.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/deduction.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/index_operator.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/properties.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
libcxx/utils/data/ignore_format.txt
libcxx/utils/generate_feature_test_macro_components.py
|
These should all be completed with this patch too.