[libcxx-commits] [libcxx] [libc++][span][test] Various cleanups for <span> tests (PR #202319)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jun 8 04:05:35 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: eiytoq (eiytoq)
<details>
<summary>Changes</summary>
This patch does:
- Simplify some test implementations
- Polish comments and synopsis
---
Patch is 92.40 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/202319.diff
36 Files Affected:
- (modified) libcxx/test/std/containers/views/views.span/enable_borrowed_range.compile.pass.cpp (+5-6)
- (modified) libcxx/test/std/containers/views/views.span/range_concept_conformance.compile.pass.cpp (+2-2)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/array.pass.cpp (+39-40)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/assign.pass.cpp (+134-135)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/copy.pass.cpp (+3-3)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/deduct.pass.cpp (+16-16)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/default.pass.cpp (+10-9)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/initializer_list.pass.cpp (+2-3)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/iterator_len.pass.cpp (+7-5)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/iterator_len.verify.cpp (+14-4)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/iterator_sentinel.pass.cpp (+20-14)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/iterator_sentinel.verify.cpp (+9-5)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/range.pass.cpp (+5-4)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/span.dtor.compile.pass.cpp (+2-1)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/span.pass.cpp (+7-6)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/span.verify.cpp (+31-31)
- (modified) libcxx/test/std/containers/views/views.span/span.cons/stdarray.pass.cpp (+22-25)
- (modified) libcxx/test/std/containers/views/views.span/span.elem/at.pass.cpp (+1-1)
- (modified) libcxx/test/std/containers/views/views.span/span.elem/back.pass.cpp (+20-14)
- (modified) libcxx/test/std/containers/views/views.span/span.elem/data.pass.cpp (+33-33)
- (modified) libcxx/test/std/containers/views/views.span/span.elem/front.pass.cpp (+20-13)
- (modified) libcxx/test/std/containers/views/views.span/span.elem/op_idx.pass.cpp (+29-21)
- (modified) libcxx/test/std/containers/views/views.span/span.iterators/begin.pass.cpp (+20-19)
- (modified) libcxx/test/std/containers/views/views.span/span.iterators/end.pass.cpp (+20-19)
- (modified) libcxx/test/std/containers/views/views.span/span.iterators/iterator.pass.cpp (+3-3)
- (modified) libcxx/test/std/containers/views/views.span/span.iterators/iterator_concept_conformance.compile.pass.cpp (+1-1)
- (modified) libcxx/test/std/containers/views/views.span/span.iterators/rbegin.pass.cpp (+20-19)
- (modified) libcxx/test/std/containers/views/views.span/span.iterators/rend.pass.cpp (+20-19)
- (modified) libcxx/test/std/containers/views/views.span/span.objectrep/as_bytes.pass.cpp (+3-2)
- (modified) libcxx/test/std/containers/views/views.span/span.objectrep/as_writable_bytes.pass.cpp (+3-2)
- (modified) libcxx/test/std/containers/views/views.span/span.obs/empty.nodiscard.verify.cpp (+3-2)
- (modified) libcxx/test/std/containers/views/views.span/span.obs/empty.pass.cpp (+23-20)
- (modified) libcxx/test/std/containers/views/views.span/span.obs/size.pass.cpp (+22-19)
- (modified) libcxx/test/std/containers/views/views.span/span.obs/size_bytes.pass.cpp (+24-22)
- (modified) libcxx/test/std/containers/views/views.span/trivially_copyable.compile.pass.cpp (+1-1)
- (modified) libcxx/test/std/containers/views/views.span/types.pass.cpp (+17-19)
``````````diff
diff --git a/libcxx/test/std/containers/views/views.span/enable_borrowed_range.compile.pass.cpp b/libcxx/test/std/containers/views/views.span/enable_borrowed_range.compile.pass.cpp
index 6468d66ab34eb..3b86f6e22b247 100644
--- a/libcxx/test/std/containers/views/views.span/enable_borrowed_range.compile.pass.cpp
+++ b/libcxx/test/std/containers/views/views.span/enable_borrowed_range.compile.pass.cpp
@@ -6,22 +6,21 @@
//
//===----------------------------------------------------------------------===//
-// UNSUPPORTED: c++03, c++11, c++14, c++17
+// REQUIRES: std-at-least-c++20
// <span>
// template<class ElementType, size_t Extent>
-// inline constexpr bool ranges::enable_borrowed_range<
-// span<ElementType, Extent>> = true;
+// constexpr bool ranges::enable_borrowed_range<span<ElementType, Extent>> = true;
#include <span>
#include "test_macros.h"
void test() {
- static_assert(std::ranges::enable_borrowed_range<std::span<int, 0> >);
- static_assert(std::ranges::enable_borrowed_range<std::span<int, 42> >);
- static_assert(std::ranges::enable_borrowed_range<std::span<int, std::dynamic_extent> >);
+ static_assert(std::ranges::enable_borrowed_range<std::span<int, 0>>);
+ static_assert(std::ranges::enable_borrowed_range<std::span<int, 42>>);
+ static_assert(std::ranges::enable_borrowed_range<std::span<int, std::dynamic_extent>>);
static_assert(!std::ranges::enable_borrowed_range<std::span<int, 42>&>);
static_assert(!std::ranges::enable_borrowed_range<std::span<int, 42> const>);
}
diff --git a/libcxx/test/std/containers/views/views.span/range_concept_conformance.compile.pass.cpp b/libcxx/test/std/containers/views/views.span/range_concept_conformance.compile.pass.cpp
index 52f0a76dfd2ce..cb2e7ce95ed52 100644
--- a/libcxx/test/std/containers/views/views.span/range_concept_conformance.compile.pass.cpp
+++ b/libcxx/test/std/containers/views/views.span/range_concept_conformance.compile.pass.cpp
@@ -6,9 +6,9 @@
//
//===----------------------------------------------------------------------===//
-// UNSUPPORTED: c++03, c++11, c++14, c++17
+// REQUIRES: std-at-least-c++20
-// span
+// <span>
#include <span>
diff --git a/libcxx/test/std/containers/views/views.span/span.cons/array.pass.cpp b/libcxx/test/std/containers/views/views.span/span.cons/array.pass.cpp
index 6e40aef8521ea..cbc51f476c543 100644
--- a/libcxx/test/std/containers/views/views.span/span.cons/array.pass.cpp
+++ b/libcxx/test/std/containers/views/views.span/span.cons/array.pass.cpp
@@ -5,17 +5,16 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
-// UNSUPPORTED: c++03, c++11, c++14, c++17
+
+// REQUIRES: std-at-least-c++20
// <span>
-// template<size_t N>
-// constexpr span(element_type (&arr)[N]) noexcept;
+// template<size_t N> constexpr span(type_identity_t<element_type> (&arr)[N]) noexcept;
//
-// Remarks: These constructors shall not participate in overload resolution unless:
+// Constraints: Let U be remove_pointer_t<decltype(std::data(arr))>.
// - extent == dynamic_extent || N == extent is true, and
-// - remove_pointer_t<decltype(data(arr))>(*)[] is convertible to ElementType(*)[].
-//
+// - is_convertible_v<U(*)[], element_type(*)[]> is true.
#include <cassert>
#include <span>
@@ -30,40 +29,40 @@ void checkCV() {
volatile int varr[] = {7, 8, 9};
const volatile int cvarr[] = {1, 3, 5};
- // Types the same (dynamic sized)
+ // Types the same (dynamic sized)
{
- std::span< int> s1{arr}; // a span< int> pointing at int.
- std::span<const int> s2{carr}; // a span<const int> pointing at const int.
- std::span< volatile int> s3{varr}; // a span< volatile int> pointing at volatile int.
+ std::span<int> s1{arr}; // a span<int> pointing at int.
+ std::span<const int> s2{carr}; // a span<const int> pointing at const int.
+ std::span<volatile int> s3{varr}; // a span<volatile int> pointing at volatile int.
std::span<const volatile int> s4{cvarr}; // a span<const volatile int> pointing at const volatile int.
assert(s1.size() + s2.size() + s3.size() + s4.size() == 12);
}
- // Types the same (static sized)
+ // Types the same (static sized)
{
- std::span< int, 3> s1{arr}; // a span< int> pointing at int.
- std::span<const int, 3> s2{carr}; // a span<const int> pointing at const int.
- std::span< volatile int, 3> s3{varr}; // a span< volatile int> pointing at volatile int.
+ std::span<int, 3> s1{arr}; // a span<int> pointing at int.
+ std::span<const int, 3> s2{carr}; // a span<const int> pointing at const int.
+ std::span<volatile int, 3> s3{varr}; // a span<volatile int> pointing at volatile int.
std::span<const volatile int, 3> s4{cvarr}; // a span<const volatile int> pointing at const volatile int.
assert(s1.size() + s2.size() + s3.size() + s4.size() == 12);
}
- // types different (dynamic sized)
+ // types different (dynamic sized)
{
- std::span<const int> s1{arr}; // a span<const int> pointing at int.
- std::span< volatile int> s2{arr}; // a span< volatile int> pointing at int.
- std::span< volatile int> s3{arr}; // a span< volatile int> pointing at const int.
+ std::span<const int> s1{arr}; // a span<const int> pointing at int.
+ std::span<volatile int> s2{arr}; // a span<volatile int> pointing at int.
+ std::span<volatile int> s3{arr}; // a span<volatile int> pointing at const int.
std::span<const volatile int> s4{arr}; // a span<const volatile int> pointing at int.
std::span<const volatile int> s5{carr}; // a span<const volatile int> pointing at const int.
std::span<const volatile int> s6{varr}; // a span<const volatile int> pointing at volatile int.
assert(s1.size() + s2.size() + s3.size() + s4.size() + s5.size() + s6.size() == 18);
}
- // types different (static sized)
+ // types different (static sized)
{
- std::span<const int, 3> s1{arr}; // a span<const int> pointing at int.
- std::span< volatile int, 3> s2{arr}; // a span< volatile int> pointing at int.
- std::span< volatile int, 3> s3{arr}; // a span< volatile int> pointing at const int.
+ std::span<const int, 3> s1{arr}; // a span<const int> pointing at int.
+ std::span<volatile int, 3> s2{arr}; // a span<volatile int> pointing at int.
+ std::span<volatile int, 3> s3{arr}; // a span<volatile int> pointing at const int.
std::span<const volatile int, 3> s4{arr}; // a span<const volatile int> pointing at int.
std::span<const volatile int, 3> s5{carr}; // a span<const volatile int> pointing at const int.
std::span<const volatile int, 3> s6{varr}; // a span<const volatile int> pointing at volatile int.
@@ -102,7 +101,7 @@ constexpr bool testSpan() {
struct A {};
-int main(int, char**) {
+int main() {
testSpan<int>();
testSpan<double>();
testSpan<A>();
@@ -116,39 +115,39 @@ int main(int, char**) {
// Size wrong
{
- static_assert(!std::is_constructible<std::span<int, 2>, int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<int, 2>, int(&)[3]>);
}
// Type wrong
{
- static_assert(!std::is_constructible<std::span<float>, int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<float, 3>, int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<float>, int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<float, 3>, int(&)[3]>);
}
// CV wrong (dynamically sized)
{
- static_assert(!std::is_constructible<std::span<int>, const int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<int>, volatile int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<int>, const volatile int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<int>, const int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<int>, volatile int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<int>, const volatile int(&)[3]>);
- static_assert(!std::is_constructible<std::span<const int>, volatile int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<const int>, const volatile int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<const int>, volatile int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<const int>, const volatile int(&)[3]>);
- static_assert(!std::is_constructible<std::span<volatile int>, const int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<volatile int>, const volatile int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<volatile int>, const int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<volatile int>, const volatile int(&)[3]>);
}
// CV wrong (statically sized)
{
- static_assert(!std::is_constructible<std::span<int, 3>, const int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<int, 3>, volatile int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<int, 3>, const volatile int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<int, 3>, const int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<int, 3>, volatile int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<int, 3>, const volatile int(&)[3]>);
- static_assert(!std::is_constructible<std::span<const int, 3>, volatile int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<const int, 3>, const volatile int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<const int, 3>, volatile int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<const int, 3>, const volatile int(&)[3]>);
- static_assert(!std::is_constructible<std::span<volatile int, 3>, const int(&)[3]>::value, "");
- static_assert(!std::is_constructible<std::span<volatile int, 3>, const volatile int(&)[3]>::value, "");
+ static_assert(!std::is_constructible_v<std::span<volatile int, 3>, const int(&)[3]>);
+ static_assert(!std::is_constructible_v<std::span<volatile int, 3>, const volatile int(&)[3]>);
}
return 0;
diff --git a/libcxx/test/std/containers/views/views.span/span.cons/assign.pass.cpp b/libcxx/test/std/containers/views/views.span/span.cons/assign.pass.cpp
index dcbf0fb36d858..4b313faac235b 100644
--- a/libcxx/test/std/containers/views/views.span/span.cons/assign.pass.cpp
+++ b/libcxx/test/std/containers/views/views.span/span.cons/assign.pass.cpp
@@ -5,11 +5,12 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
-// UNSUPPORTED: c++03, c++11, c++14, c++17
+
+// REQUIRES: std-at-least-c++20
// <span>
-// constexpr span& operator=(const span& other) noexcept = default;
+// constexpr span& operator=(const span& other) noexcept = default;
#include <span>
#include <cassert>
@@ -26,15 +27,13 @@ constexpr bool doAssign(T lhs, T rhs) {
return lhs.data() == rhs.data() && lhs.size() == rhs.size();
}
-struct A {};
-
constexpr int carr1[] = {1, 2, 3, 4};
constexpr int carr2[] = {3, 4, 5};
constexpr int carr3[] = {7, 8};
int arr[] = {5, 6, 7, 9};
std::string strs[] = {"ABC", "DEF", "GHI"};
-int main(int, char**) {
+int main() {
// constexpr dynamically sized assignment
{
// On systems where 'ptrdiff_t' is a synonym for 'int',
@@ -63,118 +62,118 @@ int main(int, char**) {
{carr3, 1U},
{carr3, 2U}};
- static_assert(std::size(spans) == 13, "");
+ static_assert(std::size(spans) == 13);
// No for loops in constexpr land :-(
- static_assert(doAssign(spans[0], spans[0]), "");
- static_assert(doAssign(spans[0], spans[1]), "");
- static_assert(doAssign(spans[0], spans[2]), "");
- static_assert(doAssign(spans[0], spans[3]), "");
- static_assert(doAssign(spans[0], spans[4]), "");
- static_assert(doAssign(spans[0], spans[5]), "");
- static_assert(doAssign(spans[0], spans[6]), "");
- static_assert(doAssign(spans[0], spans[7]), "");
- static_assert(doAssign(spans[0], spans[8]), "");
- static_assert(doAssign(spans[0], spans[9]), "");
- static_assert(doAssign(spans[0], spans[10]), "");
- static_assert(doAssign(spans[0], spans[11]), "");
- static_assert(doAssign(spans[0], spans[12]), "");
-
- static_assert(doAssign(spans[1], spans[1]), "");
- static_assert(doAssign(spans[1], spans[2]), "");
- static_assert(doAssign(spans[1], spans[3]), "");
- static_assert(doAssign(spans[1], spans[4]), "");
- static_assert(doAssign(spans[1], spans[5]), "");
- static_assert(doAssign(spans[1], spans[6]), "");
- static_assert(doAssign(spans[1], spans[7]), "");
- static_assert(doAssign(spans[1], spans[8]), "");
- static_assert(doAssign(spans[1], spans[9]), "");
- static_assert(doAssign(spans[1], spans[10]), "");
- static_assert(doAssign(spans[1], spans[11]), "");
- static_assert(doAssign(spans[1], spans[12]), "");
-
- static_assert(doAssign(spans[2], spans[2]), "");
- static_assert(doAssign(spans[2], spans[3]), "");
- static_assert(doAssign(spans[2], spans[4]), "");
- static_assert(doAssign(spans[2], spans[5]), "");
- static_assert(doAssign(spans[2], spans[6]), "");
- static_assert(doAssign(spans[2], spans[7]), "");
- static_assert(doAssign(spans[2], spans[8]), "");
- static_assert(doAssign(spans[2], spans[9]), "");
- static_assert(doAssign(spans[2], spans[10]), "");
- static_assert(doAssign(spans[2], spans[11]), "");
- static_assert(doAssign(spans[2], spans[12]), "");
-
- static_assert(doAssign(spans[3], spans[3]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[4]), "");
- static_assert(doAssign(spans[3], spans[10]), "");
- static_assert(doAssign(spans[3], spans[11]), "");
- static_assert(doAssign(spans[3], spans[12]), "");
-
- static_assert(doAssign(spans[4], spans[4]), "");
- static_assert(doAssign(spans[4], spans[5]), "");
- static_assert(doAssign(spans[4], spans[6]), "");
- static_assert(doAssign(spans[4], spans[7]), "");
- static_assert(doAssign(spans[4], spans[8]), "");
- static_assert(doAssign(spans[4], spans[9]), "");
- static_assert(doAssign(spans[4], spans[10]), "");
- static_assert(doAssign(spans[4], spans[11]), "");
- static_assert(doAssign(spans[4], spans[12]), "");
-
- static_assert(doAssign(spans[5], spans[5]), "");
- static_assert(doAssign(spans[5], spans[6]), "");
- static_assert(doAssign(spans[5], spans[7]), "");
- static_assert(doAssign(spans[5], spans[8]), "");
- static_assert(doAssign(spans[5], spans[9]), "");
- static_assert(doAssign(spans[5], spans[10]), "");
- static_assert(doAssign(spans[5], spans[11]), "");
- static_assert(doAssign(spans[5], spans[12]), "");
-
- static_assert(doAssign(spans[6], spans[6]), "");
- static_assert(doAssign(spans[6], spans[7]), "");
- static_assert(doAssign(spans[6], spans[8]), "");
- static_assert(doAssign(spans[6], spans[9]), "");
- static_assert(doAssign(spans[6], spans[10]), "");
- static_assert(doAssign(spans[6], spans[11]), "");
- static_assert(doAssign(spans[6], spans[12]), "");
-
- static_assert(doAssign(spans[7], spans[7]), "");
- static_assert(doAssign(spans[7], spans[8]), "");
- static_assert(doAssign(spans[7], spans[9]), "");
- static_assert(doAssign(spans[7], spans[10]), "");
- static_assert(doAssign(spans[7], spans[11]), "");
- static_assert(doAssign(spans[7], spans[12]), "");
-
- static_assert(doAssign(spans[8], spans[8]), "");
- static_assert(doAssign(spans[8], spans[9]), "");
- static_assert(doAssign(spans[8], spans[10]), "");
- static_assert(doAssign(spans[8], spans[11]), "");
- static_assert(doAssign(spans[8], spans[12]), "");
-
- static_assert(doAssign(spans[9], spans[9]), "");
- static_assert(doAssign(spans[9], spans[10]), "");
- static_assert(doAssign(spans[9], spans[11]), "");
- static_assert(doAssign(spans[9], spans[12]), "");
-
- static_assert(doAssign(spans[10], spans[10]), "");
- static_assert(doAssign(spans[10], spans[11]), "");
- static_assert(doAssign(spans[10], spans[12]), "");
-
- static_assert(doAssign(spans[11], spans[11]), "");
- static_assert(doAssign(spans[11], spans[12]), "");
-
- static_assert(doAssign(spans[12], spans[12]), "");
+ static_assert(doAssign(spans[0], spans[0]));
+ static_assert(doAssign(spans[0], spans[1]));
+ static_assert(doAssign(spans[0], spans[2]));
+ static_assert(doAssign(spans[0], spans[3]));
+ static_assert(doAssign(spans[0], spans[4]));
+ static_assert(doAssign(spans[0], spans[5]));
+ static_assert(doAssign(spans[0], spans[6]));
+ static_assert(doAssign(spans[0], spans[7]));
+ static_assert(doAssign(spans[0], spans[8]));
+ static_assert(doAssign(spans[0], spans[9]));
+ static_assert(doAssign(spans[0], spans[10]));
+ static_assert(doAssign(spans[0], spans[11]));
+ static_assert(doAssign(spans[0], spans[12]));
+
+ static_assert(doAssign(spans[1], spans[1]));
+ static_assert(doAssign(spans[1], spans[2]));
+ static_assert(doAssign(spans[1], spans[3]));
+ static_assert(doAssign(spans[1], spans[4]));
+ static_assert(doAssign(spans[1], spans[5]));
+ static_assert(doAssign(spans[1], spans[6]));
+ static_assert(doAssign(spans[1], spans[7]));
+ static_assert(doAssign(spans[1], spans[8]));
+ static_assert(doAssign(spans[1], spans[9]));
+ static_assert(doAssign(spans[1], spans[10]));
+ static_assert(doAssign(spans[1], spans[11]));
+ static_assert(doAssign(spans[1], spans[12]));
+
+ static_assert(doAssign(spans[2], spans[2]));
+ static_assert(doAssign(spans[2], spans[3]));
+ static_assert(doAssign(spans[2], spans[4]));
+ static_assert(doAssign(spans[2], spans[5]));
+ static_assert(doAssign(spans[2], spans[6]));
+ static_assert(doAssign(spans[2], spans[7]));
+ static_assert(doAssign(spans[2], spans[8]));
+ static_assert(doAssign(spans[2], spans[9]));
+ static_assert(doAssign(spans[2], spans[10]));
+ static_assert(doAssign(spans[2], spans[11]));
+ static_assert(doAssign(spans[2], spans[12]));
+
+ static_assert(doAssign(spans[3], spans[3]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[4]));
+ static_assert(doAssign(spans[3], spans[10]));
+ static_assert(doAssign(spans[3], spans[11]));
+ static_assert(doAssign(spans[3], spans[12]));
+
+ static_assert(doAssign(spans[4], spans[4]));
+ static_assert(doAssign(spans[4], spans[5]));
+ static_assert(doAssign(spans[4], spans[6]));
+ static_assert(doAssign(spans[4], spans[7]));
+ static_assert(doAssign(spans[4], spans[8]));
+ static_assert(doAssign(spans[4], spans[9]));
+ static_assert(doAssign(spans[4], spans[10]));
+ static_assert(doAssign(spans[4], spans[11]));
+ static_assert(doAssign(spans[4], spans[12]));
+
+ static_assert(doAssign(spans[5], spans[5]));
+ static_assert(doAssign(spans[5], spans[6]));
+ static_assert(doAssign(spans[5], spans[7]));
+ static_assert(doAssign(spans[5], spans[8]));
+ static_assert(doAssign(spans[5], spans[9]));
+ static_assert(doAssign(spans[5], spans[10]));
+ static_assert(doAssign(spans[5], spans[11]));
+ static_assert(doAssign(spans[5], spans[12]));
+
+ ...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/202319
More information about the libcxx-commits
mailing list