[libc++][mdspan] Implement layout_right
authorChristian Trott <crtrott@sandia.gov>
Thu, 29 Jun 2023 14:06:47 +0000 (10:06 -0400)
committerLouis Dionne <ldionne.2@gmail.com>
Thu, 29 Jun 2023 14:12:17 +0000 (10:12 -0400)
commitcfa096d9c92e758c4916dfd06d107fcec2edeca4
treef02b849929843215d4d334804e53f7403ced3776
parent8038086aa75a122e5e632ebb1e7da06a2f7eed4b
[libc++][mdspan] Implement layout_right

This commit implements layout_right in support of C++23 mdspan
(https://wg21.link/p0009). layout_right is a layout mapping policy
whose index mapping corresponds to the memory layout of multidimensional
C-arrays, and is thus also referred to as the C-layout.

Co-authored-by: Damien L-G <dalg24@gmail.com>
Differential Revision: https://reviews.llvm.org/D151267
30 files changed:
libcxx/docs/Status/Cxx23.rst
libcxx/docs/Status/Cxx23Papers.csv
libcxx/include/CMakeLists.txt
libcxx/include/__fwd/mdspan.h [new file with mode: 0644]
libcxx/include/__mdspan/extents.h
libcxx/include/__mdspan/layout_right.h [new file with mode: 0644]
libcxx/include/mdspan
libcxx/include/module.modulemap.in
libcxx/modules/std/mdspan.cppm
libcxx/test/std/containers/views/mdspan/ConvertibleToIntegral.h [moved from libcxx/test/std/containers/views/mdspan/extents/ConvertibleToIntegral.h with 63% similarity]
libcxx/test/std/containers/views/mdspan/extents/CtorTestCombinations.h
libcxx/test/std/containers/views/mdspan/extents/ctad.pass.cpp
libcxx/test/std/containers/views/mdspan/extents/ctor_default.pass.cpp
libcxx/test/std/containers/views/mdspan/extents/ctor_from_array.pass.cpp
libcxx/test/std/containers/views/mdspan/extents/ctor_from_integral.pass.cpp
libcxx/test/std/containers/views/mdspan/extents/ctor_from_span.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_right/assert.conversion.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/assert.index_operator.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/assert.stride.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/comparison.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/ctor.default.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/ctor.extents.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/ctor.mapping.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/extents.verify.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/index_operator.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/properties.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/required_span_size.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/static_requirements.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/layout_right/stride.pass.cpp [new file with mode: 0644]