[libcxx-commits] [libcxx] [libc++] Partially implement P2642R6: Padded mdspan layouts (PR #187873)

via libcxx-commits libcxx-commits at lists.llvm.org
Sat Mar 21 10:35:38 PDT 2026


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions ,inc,cpp,h -- libcxx/include/__mdspan/layout_common.h libcxx/include/__mdspan/layout_left_padded.h libcxx/include/__mdspan/layout_right_padded.h libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_left_padded.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/comparison.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.copy.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.default.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.extents.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.layout_left.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.layout_right.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.layout_right_padded.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.layout_stride.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.mapping.assert.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.mapping.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/ctor.padding.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/extents.verify.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/index_operator.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/properties.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/required_span_size.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/static_requirements.pass.cpp libcxx/test/std/containers/views/mdspan/layout_left_padded/stride.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_right_padded.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/comparison.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.copy.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.default.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.extents.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.layout_left.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.layout_left_padded.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.layout_right.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.layout_stride.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.mapping.assert.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.mapping.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.padding.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/extents.verify.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/index_operator.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/properties.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/required_span_size.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/static_requirements.pass.cpp libcxx/test/std/containers/views/mdspan/layout_right_padded/stride.pass.cpp 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/modules/std/mdspan.inc --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left_padded/comparison.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left_padded/comparison.pass.cpp
index 4f50686d9..ff85c44dc 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left_padded/comparison.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left_padded/comparison.pass.cpp
@@ -71,12 +71,12 @@ constexpr bool test() {
         false, dynamic_mapping(std::extents<size_t, D, 3>(5), 5), dynamic_mapping(std::extents<size_t, D, 3>(5), 8));
   }
 
-  static_assert(compare_layout_mappings(std::layout_left_padded<4>::mapping<std::extents<int, D>>(std::extents<int, D>(5)),
-                                        std::layout_left_padded<4>::mapping<std::extents<int, 5>>()));
-  static_assert(
-      compare_layout_mappings(std::layout_left_padded<4>::mapping<std::extents<int>>(),
-                              std::layout_left_padded<4>::mapping<std::extents<int, 1>>())
-          .does_not_match());
+  static_assert(compare_layout_mappings(
+      std::layout_left_padded<4>::mapping<std::extents<int, D>>(std::extents<int, D>(5)),
+      std::layout_left_padded<4>::mapping<std::extents<int, 5>>()));
+  static_assert(compare_layout_mappings(std::layout_left_padded<4>::mapping<std::extents<int>>(),
+                                        std::layout_left_padded<4>::mapping<std::extents<int, 1>>())
+                    .does_not_match());
   static_assert(compare_layout_mappings(std::layout_left_padded<4>::mapping<std::extents<int, 5, 7>>(),
                                         std::layout_left_padded<4>::mapping<std::extents<int, 5>>())
                     .does_not_match());
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right_padded/comparison.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right_padded/comparison.pass.cpp
index 8eab23675..90d0a05d6 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right_padded/comparison.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right_padded/comparison.pass.cpp
@@ -71,13 +71,12 @@ constexpr bool test() {
         false, dynamic_mapping(std::extents<size_t, D, 3>(5), 5), dynamic_mapping(std::extents<size_t, D, 3>(5), 8));
   }
 
-  static_assert(
-      compare_layout_mappings(std::layout_right_padded<4>::mapping<std::extents<int, D>>(std::extents<int, D>(5)),
-                              std::layout_right_padded<4>::mapping<std::extents<int, 5>>()));
-  static_assert(
-      compare_layout_mappings(std::layout_right_padded<4>::mapping<std::extents<int>>(),
-                              std::layout_right_padded<4>::mapping<std::extents<int, 1>>())
-          .does_not_match());
+  static_assert(compare_layout_mappings(
+      std::layout_right_padded<4>::mapping<std::extents<int, D>>(std::extents<int, D>(5)),
+      std::layout_right_padded<4>::mapping<std::extents<int, 5>>()));
+  static_assert(compare_layout_mappings(std::layout_right_padded<4>::mapping<std::extents<int>>(),
+                                        std::layout_right_padded<4>::mapping<std::extents<int, 1>>())
+                    .does_not_match());
   static_assert(compare_layout_mappings(std::layout_right_padded<4>::mapping<std::extents<int, 5, 7>>(),
                                         std::layout_right_padded<4>::mapping<std::extents<int, 5>>())
                     .does_not_match());
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.copy.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.copy.pass.cpp
index f8e793933..8bdc53ee4 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.copy.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.copy.pass.cpp
@@ -39,13 +39,15 @@ constexpr bool test() {
   test_copy_semantics(
       std::layout_right_padded<4>::mapping<std::extents<uint32_t, 5, 7>>(std::extents<int32_t, 5, 7>()));
   test_copy_semantics(std::layout_right_padded<4>::mapping<std::extents<int8_t, D>>(std::extents<int8_t, D>(5)));
-  test_copy_semantics(std::layout_right_padded<4>::mapping<std::extents<uint8_t, D, 7>>(std::extents<uint8_t, D, 7>(5)));
+  test_copy_semantics(
+      std::layout_right_padded<4>::mapping<std::extents<uint8_t, D, 7>>(std::extents<uint8_t, D, 7>(5)));
 
   test_copy_semantics(std::layout_right_padded<D>::mapping<std::extents<int32_t>>());
   test_copy_semantics(
       std::layout_right_padded<D>::mapping<std::extents<uint32_t, 5, 7>>(std::extents<int32_t, 5, 7>()));
   test_copy_semantics(std::layout_right_padded<D>::mapping<std::extents<int8_t, D>>(std::extents<int8_t, D>(5), 5));
-  test_copy_semantics(std::layout_right_padded<D>::mapping<std::extents<uint8_t, D, 7>>(std::extents<uint8_t, D, 7>(5)));
+  test_copy_semantics(
+      std::layout_right_padded<D>::mapping<std::extents<uint8_t, D, 7>>(std::extents<uint8_t, D, 7>(5)));
 
   return true;
 }
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.extents.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.extents.pass.cpp
index 3ab5f1523..6526b54b9 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.extents.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right_padded/ctor.extents.pass.cpp
@@ -18,8 +18,8 @@
 #include <mdspan>
 
 template <size_t PaddingValue, class Extents>
-constexpr void test_construction(Extents extents,
-                                 std::array<typename Extents::index_type, Extents::rank()> expected_strides) {
+constexpr void
+test_construction(Extents extents, std::array<typename Extents::index_type, Extents::rank()> expected_strides) {
   using Mapping = typename std::layout_right_padded<PaddingValue>::template mapping<Extents>;
   static_assert(Mapping::padding_value == PaddingValue);
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/187873


More information about the libcxx-commits mailing list