[libc++][mdspan] Implement std::mdspan class
authorChristian Trott <crtrott@sandia.gov>
Tue, 25 Jul 2023 04:35:15 +0000 (22:35 -0600)
committerTobias Hieta <tobias@hieta.se>
Wed, 26 Jul 2023 17:30:43 +0000 (19:30 +0200)
commitab863b3e73372e983ff5fb658b4bcb6577c87471
treeaec54e46dbdb9904a77ecceda60fdceb592ee6e9
parent397390a65b8dc50a7bca560b2caa4b99935a03f3
[libc++][mdspan] Implement std::mdspan class

This implements P0009 std::mdspan ((https://wg21.link/p0009)),
a multidimensional span with customization points for
layouts and data access.

Co-authored-by: Damien L-G <dalg24@gmail.com>
Differential Revision: https://reviews.llvm.org/154367
45 files changed:
libcxx/docs/ReleaseNotes/17.rst
libcxx/include/CMakeLists.txt
libcxx/include/__mdspan/extents.h
libcxx/include/__mdspan/layout_left.h
libcxx/include/__mdspan/layout_right.h
libcxx/include/__mdspan/mdspan.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
libcxx/test/std/containers/views/mdspan/extents/assert.obs.pass.cpp
libcxx/test/std/containers/views/mdspan/extents/ctor_from_array.pass.cpp
libcxx/test/std/containers/views/mdspan/extents/ctor_from_span.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_left/assert.index_operator.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_left/assert.stride.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_right/assert.index_operator.pass.cpp
libcxx/test/std/containers/views/mdspan/layout_right/assert.stride.pass.cpp
libcxx/test/std/containers/views/mdspan/mdspan/CustomTestAccessors.h [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/CustomTestLayouts.h [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/assert.conversion.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/assert.index_operator.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/assert.size.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/conversion.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/conversion.verify.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.default.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_span.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/deduction.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/element_type.verify.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/extents.verify.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/index_operator.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/mapping.verify.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/properties.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp [new file with mode: 0644]