[libcxx-commits] [libcxx] [libc++] P2770R0: "Stashing stashing iterators for proper flattening" (PR #66033)
via libcxx-commits
libcxx-commits at lists.llvm.org
Sat Sep 23 15:31:49 PDT 2023
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 fab28e0e140eb55da25b7923a548ab357a9da544 214414d208623fa82393451e8364f263c9a2e222 -- libcxx/include/__utility/as_lvalue.h libcxx/test/libcxx/ranges/range.adaptors/range.adaptor.helpers/as-lvalue.verify.cpp libcxx/test/libcxx/ranges/range.adaptors/range.join/segmented_iterator.compile.pass.cpp libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp libcxx/test/std/re/re.iter/re.regiter/iterator_concept_conformance.compile.pass.cpp libcxx/test/std/re/re.iter/re.regiter/types.pass.cpp libcxx/test/std/re/re.iter/re.tokiter/iterator_concept_conformance.compile.pass.cpp libcxx/test/std/re/re.iter/re.tokiter/types.pass.cpp libcxx/test/libcxx/ranges/range.adaptors/range.adaptor.helpers/tuple-for-each.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/adaptor.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/base.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/ctad.compile.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/ctad.verify.cpp libcxx/test/std/ranges/range.adaptors/range.join/ctor.default.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/ctor.view.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/general.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/arrow.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.default.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.other.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/decrement.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/eq.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/increment.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/iter.move.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/iter.swap.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/member_types.compile.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/iterator/star.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.default.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.other.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.parent.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/sentinel/eq.pass.cpp libcxx/test/std/ranges/range.adaptors/range.join/types.h
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libcxx/test/libcxx/ranges/range.adaptors/range.adaptor.helpers/as-lvalue.verify.cpp b/libcxx/test/libcxx/ranges/range.adaptors/range.adaptor.helpers/as-lvalue.verify.cpp
index 32c64020d..878ef91b1 100644
--- a/libcxx/test/libcxx/ranges/range.adaptors/range.adaptor.helpers/as-lvalue.verify.cpp
+++ b/libcxx/test/libcxx/ranges/range.adaptors/range.adaptor.helpers/as-lvalue.verify.cpp
@@ -27,7 +27,8 @@ constexpr bool test() {
// Check prvalue
{
- [[maybe_unused]] std::same_as<int&> decltype(auto) check = std::ranges::__as_lvalue(0); // expected-warning {{temporary bound to local reference 'check' will be destroyed at the end of the full-expression}}
+ [[maybe_unused]] std::same_as<int&> decltype(auto) check = std::ranges::__as_lvalue(
+ 0); // expected-warning {{temporary bound to local reference 'check' will be destroyed at the end of the full-expression}}
}
// Check xvalue
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/adaptor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/adaptor.pass.cpp
index 9beb3d282..3e5f2b6f0 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/adaptor.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/adaptor.pass.cpp
@@ -20,10 +20,10 @@
struct MoveOnlyOuter : SimpleForwardCommonOuter<ForwardCommonInner> {
using SimpleForwardCommonOuter<ForwardCommonInner>::SimpleForwardCommonOuter;
- constexpr MoveOnlyOuter(MoveOnlyOuter&&) = default;
+ constexpr MoveOnlyOuter(MoveOnlyOuter&&) = default;
constexpr MoveOnlyOuter(const MoveOnlyOuter&) = delete;
- constexpr MoveOnlyOuter& operator=(MoveOnlyOuter&&) = default;
+ constexpr MoveOnlyOuter& operator=(MoveOnlyOuter&&) = default;
constexpr MoveOnlyOuter& operator=(const MoveOnlyOuter&) = delete;
};
@@ -38,15 +38,15 @@ concept CanBePiped = requires(View&& view, T&& t) {
};
constexpr bool test() {
- int buffer1[3] = {1, 2, 3};
- int buffer2[2] = {4, 5};
- int buffer3[4] = {6, 7, 8, 9};
+ int buffer1[3] = {1, 2, 3};
+ int buffer2[2] = {4, 5};
+ int buffer3[4] = {6, 7, 8, 9};
Foo nested[2][3][3] = {{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, {{10, 11, 12}, {13, 14, 15}, {16, 17, 18}}};
{
// Test `views::join(v)`
- ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
- using Result = std::ranges::join_view<std::ranges::ref_view<ForwardCommonInner[3]>>;
+ ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
+ using Result = std::ranges::join_view<std::ranges::ref_view<ForwardCommonInner[3]>>;
std::same_as<Result> decltype(auto) v = std::views::join(inners);
assert(std::ranges::next(v.begin(), 9) == v.end());
assert(&(*v.begin()) == buffer1);
@@ -54,8 +54,8 @@ constexpr bool test() {
{
// Test `views::join(move-only-view)`
- ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
- using Result = std::ranges::join_view<MoveOnlyOuter>;
+ ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
+ using Result = std::ranges::join_view<MoveOnlyOuter>;
std::same_as<Result> decltype(auto) v = std::views::join(MoveOnlyOuter{inners});
assert(std::ranges::next(v.begin(), 9) == v.end());
assert(&(*v.begin()) == buffer1);
@@ -80,7 +80,7 @@ constexpr bool test() {
// Test `v | views::join`
ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
- using Result = std::ranges::join_view<std::ranges::ref_view<ForwardCommonInner[3]>>;
+ using Result = std::ranges::join_view<std::ranges::ref_view<ForwardCommonInner[3]>>;
std::same_as<Result> decltype(auto) v = inners | std::views::join;
assert(std::ranges::next(v.begin(), 9) == v.end());
assert(&(*v.begin()) == buffer1);
@@ -89,8 +89,8 @@ constexpr bool test() {
{
// Test `move-only-view | views::join`
- ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
- using Result = std::ranges::join_view<MoveOnlyOuter>;
+ ForwardCommonInner inners[3] = {buffer1, buffer2, buffer3};
+ using Result = std::ranges::join_view<MoveOnlyOuter>;
std::same_as<Result> decltype(auto) v = MoveOnlyOuter{inners} | std::views::join;
assert(std::ranges::next(v.begin(), 9) == v.end());
assert(&(*v.begin()) == buffer1);
@@ -112,7 +112,7 @@ constexpr bool test() {
{
// Test `adaptor | views::join`
auto join_twice = std::views::join | std::views::join;
- auto jv = nested | join_twice;
+ auto jv = nested | join_twice;
ASSERT_SAME_TYPE(std::ranges::range_reference_t<decltype(jv)>, Foo&);
assert(&(*jv.begin()) == &nested[0][0][0]);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/base.pass.cpp
index caf018b58..6fdc637f6 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/base.pass.cpp
@@ -18,7 +18,7 @@
#include "types.h"
constexpr bool hasLValueQualifiedBase(auto&& view) {
- return requires { view.base(); };
+ return requires { view.base(); };
}
constexpr bool test() {
@@ -26,7 +26,7 @@ constexpr bool test() {
{
ChildView children[4] = {ChildView(buffer[0]), ChildView(buffer[1]), ChildView(buffer[2]), ChildView(buffer[3])};
- auto jv = std::ranges::join_view(ParentView{children});
+ auto jv = std::ranges::join_view(ParentView{children});
assert(std::move(jv).base().ptr_ == children);
static_assert(!hasLValueQualifiedBase(jv));
@@ -38,7 +38,7 @@ constexpr bool test() {
assert(jv.base().base() == buffer + 0);
static_assert(hasLValueQualifiedBase(jv));
- ASSERT_SAME_TYPE(decltype(jv.base()), std::ranges::ref_view<int [4][4]>);
+ ASSERT_SAME_TYPE(decltype(jv.base()), std::ranges::ref_view<int[4][4]>);
}
{
@@ -46,7 +46,7 @@ constexpr bool test() {
assert(jv.base().base() == buffer + 0);
static_assert(hasLValueQualifiedBase(jv));
- ASSERT_SAME_TYPE(decltype(jv.base()), std::ranges::ref_view<int [4][4]>);
+ ASSERT_SAME_TYPE(decltype(jv.base()), std::ranges::ref_view<int[4][4]>);
}
return true;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp
index 005d0d1d2..b11cae35f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/begin.pass.cpp
@@ -47,21 +47,24 @@ constexpr bool test() {
{
ChildView children[4] = {ChildView(buffer[0]), ChildView(buffer[1]), ChildView(buffer[2]), ChildView(buffer[3])};
- auto jv = std::ranges::join_view(ParentView{children});
+ auto jv = std::ranges::join_view(ParentView{children});
assert(*jv.begin() == 1111);
}
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 4), CopyableChild(buffer[1], 0), CopyableChild(buffer[2], 1),
- CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 4),
+ CopyableChild(buffer[1], 0),
+ CopyableChild(buffer[2], 1),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView{children});
assert(*jv.begin() == 1111);
}
// Parent is empty.
{
- CopyableChild children[4] = {CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]),
- CopyableChild(buffer[3])};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
std::ranges::join_view jv(ParentView(children, 0));
assert(jv.begin() == jv.end());
}
@@ -89,24 +92,33 @@ constexpr bool test() {
// Has all empty children.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 0), CopyableChild(buffer[1], 0), CopyableChild(buffer[2], 0),
- CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 0),
+ CopyableChild(buffer[1], 0),
+ CopyableChild(buffer[2], 0),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView{children});
assert(jv.begin() == jv.end());
}
// First child is empty, others are not.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 4), CopyableChild(buffer[1], 0), CopyableChild(buffer[2], 0),
- CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 4),
+ CopyableChild(buffer[1], 0),
+ CopyableChild(buffer[2], 0),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView{children});
assert(*jv.begin() == 1111);
}
// Last child is empty, others are not.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 4), CopyableChild(buffer[1], 4), CopyableChild(buffer[2], 4),
- CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 4),
+ CopyableChild(buffer[1], 4),
+ CopyableChild(buffer[2], 4),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView{children});
assert(*jv.begin() == 1111);
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/ctad.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/ctad.compile.pass.cpp
index a8eafc5a9..0b78f74d5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/ctad.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/ctad.compile.pass.cpp
@@ -15,25 +15,25 @@
#include <utility>
struct Child {
- int *begin() const;
- int *end() const;
+ int* begin() const;
+ int* end() const;
};
struct View : std::ranges::view_base {
- Child *begin() const;
- Child *end() const;
+ Child* begin() const;
+ Child* end() const;
};
struct Range {
- Child *begin() const;
- Child *end() const;
+ Child* begin() const;
+ Child* end() const;
};
struct BorrowedRange {
- Child *begin() const;
- Child *end() const;
+ Child* begin() const;
+ Child* end() const;
};
-template<>
+template <>
inline constexpr bool std::ranges::enable_borrowed_range<BorrowedRange> = true;
struct NestedChildren : std::ranges::view_base {
@@ -42,41 +42,27 @@ struct NestedChildren : std::ranges::view_base {
};
void testCTAD() {
- View v;
- Range r;
- BorrowedRange br;
+ View v;
+ Range r;
+ BorrowedRange br;
- static_assert(std::same_as<
- decltype(std::ranges::join_view(v)),
- std::ranges::join_view<View>
- >);
- static_assert(std::same_as<
- decltype(std::ranges::join_view(std::move(v))),
- std::ranges::join_view<View>
- >);
- static_assert(std::same_as<
- decltype(std::ranges::join_view(r)),
- std::ranges::join_view<std::ranges::ref_view<Range>>
- >);
- static_assert(std::same_as<
- decltype(std::ranges::join_view(std::move(r))),
- std::ranges::join_view<std::ranges::owning_view<Range>>
- >);
- static_assert(std::same_as<
- decltype(std::ranges::join_view(br)),
- std::ranges::join_view<std::ranges::ref_view<BorrowedRange>>
- >);
- static_assert(std::same_as<
- decltype(std::ranges::join_view(std::move(br))),
- std::ranges::join_view<std::ranges::owning_view<BorrowedRange>>
- >);
+ static_assert(std::same_as< decltype(std::ranges::join_view(v)), std::ranges::join_view<View> >);
+ static_assert(std::same_as< decltype(std::ranges::join_view(std::move(v))), std::ranges::join_view<View> >);
+ static_assert(
+ std::same_as< decltype(std::ranges::join_view(r)), std::ranges::join_view<std::ranges::ref_view<Range>> >);
+ static_assert(std::same_as< decltype(std::ranges::join_view(std::move(r))),
+ std::ranges::join_view<std::ranges::owning_view<Range>> >);
+ static_assert(std::same_as< decltype(std::ranges::join_view(br)),
+ std::ranges::join_view<std::ranges::ref_view<BorrowedRange>> >);
+ static_assert(std::same_as< decltype(std::ranges::join_view(std::move(br))),
+ std::ranges::join_view<std::ranges::owning_view<BorrowedRange>> >);
- NestedChildren n;
- std::ranges::join_view jv(n);
+ NestedChildren n;
+ std::ranges::join_view jv(n);
- // CTAD generated from the copy constructor instead of joining the join_view
- static_assert(std::same_as< decltype(std::ranges::join_view(jv)), decltype(jv) >);
+ // CTAD generated from the copy constructor instead of joining the join_view
+ static_assert(std::same_as< decltype(std::ranges::join_view(jv)), decltype(jv) >);
- // CTAD generated from the move constructor instead of joining the join_view
- static_assert(std::same_as< decltype(std::ranges::join_view(std::move(jv))), decltype(jv) >);
+ // CTAD generated from the move constructor instead of joining the join_view
+ static_assert(std::same_as< decltype(std::ranges::join_view(std::move(jv))), decltype(jv) >);
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/ctad.verify.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/ctad.verify.cpp
index 2c6eea500..928aa4e98 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/ctad.verify.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/ctad.verify.cpp
@@ -17,7 +17,7 @@
#include "test_iterators.h"
-template<class T>
+template <class T>
struct Range {
friend T* begin(Range&) { return nullptr; }
friend T* begin(Range const&) { return nullptr; }
@@ -27,5 +27,6 @@ struct Range {
void testExplicitCTAD() {
Range<Range<int>> r;
- std::ranges::join_view v = r; // expected-error {{no viable constructor or deduction guide for deduction of template arguments of 'join_view'}}
+ std::ranges::join_view v =
+ r; // expected-error {{no viable constructor or deduction guide for deduction of template arguments of 'join_view'}}
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/ctor.default.pass.cpp
index 0daff7d3b..003990332 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/ctor.default.pass.cpp
@@ -34,7 +34,7 @@ constexpr bool test() {
assert(jv.base().i == 0);
}
- static_assert( std::default_initializable<std::ranges::join_view<ParentView<ChildView>>>);
+ static_assert(std::default_initializable<std::ranges::join_view<ParentView<ChildView>>>);
static_assert(!std::default_initializable<std::ranges::join_view<CopyableParent>>);
return true;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/ctor.view.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/ctor.view.pass.cpp
index 75d4c7e59..21f3ba8e2 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/ctor.view.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/ctor.view.pass.cpp
@@ -21,7 +21,7 @@ constexpr bool test() {
{
ChildView children[4] = {ChildView(buffer[0]), ChildView(buffer[1]), ChildView(buffer[2]), ChildView(buffer[3])};
- auto jv = std::ranges::join_view(ParentView{children});
+ auto jv = std::ranges::join_view(ParentView{children});
assert(std::move(jv).base().ptr_ == children);
}
@@ -32,7 +32,7 @@ constexpr bool test() {
{
// Test explicitness.
- static_assert( std::is_constructible_v<std::ranges::join_view<ParentView<ChildView>>, ParentView<ChildView>>);
+ static_assert(std::is_constructible_v<std::ranges::join_view<ParentView<ChildView>>, ParentView<ChildView>>);
static_assert(!std::is_convertible_v<std::ranges::join_view<ParentView<ChildView>>, ParentView<ChildView>>);
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp
index 516ba25a0..b7502d9a8 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/end.pass.cpp
@@ -22,10 +22,7 @@
#include "types.h"
template <class T>
-concept HasConstEnd = requires (const T& t){
- t.end();
-};
-
+concept HasConstEnd = requires(const T& t) { t.end(); };
// | ID | outer | outer | outer | inner | inner | inner | end() | end() |
// | | simple | forward | common | l_ref | forward | common | | const |
@@ -232,14 +229,19 @@ constexpr bool test() {
// Has some empty children.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 4), CopyableChild(buffer[1], 0), CopyableChild(buffer[2], 1), CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 4),
+ CopyableChild(buffer[1], 0),
+ CopyableChild(buffer[2], 1),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView(children));
assert(jv.end() == std::ranges::next(jv.begin(), 5));
}
// Parent is empty.
{
- CopyableChild children[4] = {CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
std::ranges::join_view jv(ParentView(children, 0));
assert(jv.end() == jv.begin());
}
@@ -267,21 +269,33 @@ constexpr bool test() {
// Has all empty children.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 0), CopyableChild(buffer[1], 0), CopyableChild(buffer[2], 0), CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 0),
+ CopyableChild(buffer[1], 0),
+ CopyableChild(buffer[2], 0),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView(children));
assert(jv.end() == jv.begin());
}
// First child is empty, others are not.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 4), CopyableChild(buffer[1], 0), CopyableChild(buffer[2], 0), CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 4),
+ CopyableChild(buffer[1], 0),
+ CopyableChild(buffer[2], 0),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView(children));
assert(jv.end() == std::ranges::next(jv.begin(), 4));
}
// Last child is empty, others are not.
{
- CopyableChild children[4] = {CopyableChild(buffer[0], 4), CopyableChild(buffer[1], 4), CopyableChild(buffer[2], 4), CopyableChild(buffer[3], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0], 4),
+ CopyableChild(buffer[1], 4),
+ CopyableChild(buffer[2], 4),
+ CopyableChild(buffer[3], 0)};
auto jv = std::ranges::join_view(ParentView(children));
assert(jv.end() == std::ranges::next(jv.begin(), 12));
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/general.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/general.pass.cpp
index f92eb418f..68b3850b0 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/general.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/general.pass.cpp
@@ -29,16 +29,16 @@ bool isEqual(R& r, I i) {
int main(int, char**) {
{
int buffer[4][4] = {{1111, 2222, 3333, 4444}, {555, 666, 777, 888}, {99, 1010, 1111, 1212}, {13, 14, 15, 16}};
- int* flattened = reinterpret_cast<int*>(buffer);
+ int* flattened = reinterpret_cast<int*>(buffer);
ChildView children[4] = {ChildView(buffer[0]), ChildView(buffer[1]), ChildView(buffer[2]), ChildView(buffer[3])};
- auto jv = std::ranges::join_view(ParentView(children));
+ auto jv = std::ranges::join_view(ParentView(children));
assert(isEqual(jv, flattened));
}
{
std::vector<std::string> vec = {"Hello", ",", " ", "World", "!"};
- std::string check = "Hello, World!";
+ std::string check = "Hello, World!";
std::ranges::join_view jv(vec);
assert(isEqual(jv, check.begin()));
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/arrow.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/arrow.pass.cpp
index ddcf66bfe..7834a2e8d 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/arrow.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/arrow.pass.cpp
@@ -23,14 +23,14 @@ template <class Base>
struct move_only_input_iter_with_arrow {
Base it_;
- using value_type = std::iter_value_t<Base>;
- using difference_type = std::intptr_t;
+ using value_type = std::iter_value_t<Base>;
+ using difference_type = std::intptr_t;
using iterator_concept = std::input_iterator_tag;
constexpr move_only_input_iter_with_arrow(Base it) : it_(std::move(it)) {}
- constexpr move_only_input_iter_with_arrow(move_only_input_iter_with_arrow&&) = default;
- constexpr move_only_input_iter_with_arrow(const move_only_input_iter_with_arrow&) = delete;
- constexpr move_only_input_iter_with_arrow& operator=(move_only_input_iter_with_arrow&&) = default;
+ constexpr move_only_input_iter_with_arrow(move_only_input_iter_with_arrow&&) = default;
+ constexpr move_only_input_iter_with_arrow(const move_only_input_iter_with_arrow&) = delete;
+ constexpr move_only_input_iter_with_arrow& operator=(move_only_input_iter_with_arrow&&) = default;
constexpr move_only_input_iter_with_arrow& operator=(const move_only_input_iter_with_arrow&) = delete;
constexpr move_only_input_iter_with_arrow& operator++() {
@@ -41,7 +41,8 @@ struct move_only_input_iter_with_arrow {
constexpr std::iter_reference_t<Base> operator*() const { return *it_; }
constexpr auto operator->() const
- requires(HasArrow<Base> && std::copyable<Base>) {
+ requires(HasArrow<Base> && std::copyable<Base>)
+ {
return it_;
}
};
@@ -72,8 +73,8 @@ template <class Base>
struct arrow_input_iter {
Base it_;
- using value_type = std::iter_value_t<Base>;
- using difference_type = std::intptr_t;
+ using value_type = std::iter_value_t<Base>;
+ using difference_type = std::intptr_t;
using iterator_concept = std::input_iterator_tag;
arrow_input_iter() = default;
@@ -96,14 +97,15 @@ static_assert(std::ranges::input_range<ArrowInner>);
static_assert(HasArrow<std::ranges::iterator_t<ArrowInner>>);
constexpr bool test() {
- Box buffer[4][4] = {{{1111}, {2222}, {3333}, {4444}},
- {{555}, {666}, {777}, {888}},
- {{99}, {1010}, {1111}, {1212}},
- {{13}, {14}, {15}, {16}}};
+ Box buffer[4][4] = {
+ {{1111}, {2222}, {3333}, {4444}},
+ {{555}, {666}, {777}, {888}},
+ {{99}, {1010}, {1111}, {1212}},
+ {{13}, {14}, {15}, {16}}};
{
// Copyable input iterator with arrow.
- using BoxView = ValueView<Box>;
+ using BoxView = ValueView<Box>;
ValueView<Box> children[4] = {BoxView(buffer[0]), BoxView(buffer[1]), BoxView(buffer[2]), BoxView(buffer[3])};
std::ranges::join_view jv(ValueView<ValueView<Box>>{children});
assert(jv.begin()->x == 1111);
@@ -137,7 +139,7 @@ constexpr bool test() {
// LWG3500 `join_view::iterator::operator->()` is bogus
// `operator->` should not be defined if inner iterator does not have `operator->`
// !has-arrow<InnerIter> && copyable<InnerIter>
- using Inner = BufferView<forward_iterator<Box*>>;
+ using Inner = BufferView<forward_iterator<Box*>>;
Inner inners[2] = {buffer[0], buffer[1]};
std::ranges::join_view jv{inners};
static_assert(!HasArrow<decltype(std::ranges::begin(inners[0]))>);
@@ -151,7 +153,7 @@ constexpr bool test() {
static_assert(HasArrow<decltype(std::ranges::begin(inners[0]))>);
static_assert(HasArrow<decltype(jv.begin())>);
- auto jv_it = jv.begin();
+ auto jv_it = jv.begin();
std::same_as<arrow_input_iter<Box*>> auto arrow_it = jv_it.operator->();
assert(arrow_it->x == 1111);
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.default.pass.cpp
index 82fe824fa..d940b078f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.default.pass.cpp
@@ -25,7 +25,7 @@ struct view : std::ranges::view_base {
template <class It>
constexpr void test_default_constructible() {
- using JoinView = std::ranges::join_view<view<It>>;
+ using JoinView = std::ranges::join_view<view<It>>;
using JoinIterator = std::ranges::iterator_t<JoinView>;
static_assert(std::is_default_constructible_v<JoinIterator>);
[[maybe_unused]] JoinIterator it;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.other.pass.cpp
index e220b2cfe..5f59ec448 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/ctor.other.pass.cpp
@@ -21,24 +21,30 @@
using ConstCompatibleInner = BufferView<int*>;
-using ConstIncompatibleInner = BufferView<forward_iterator<const int*>, forward_iterator<const int*>,
- bidirectional_iterator<int*>, bidirectional_iterator<int*>>;
+using ConstIncompatibleInner =
+ BufferView<forward_iterator<const int*>,
+ forward_iterator<const int*>,
+ bidirectional_iterator<int*>,
+ bidirectional_iterator<int*>>;
template <class Inner>
using ConstCompatibleOuter = BufferView<const Inner*, const Inner*, Inner*, Inner*>;
template <class Inner>
-using ConstIncompatibleOuter = BufferView<forward_iterator<const Inner*>, forward_iterator<const Inner*>,
- bidirectional_iterator<Inner*>, bidirectional_iterator<Inner*>>;
+using ConstIncompatibleOuter =
+ BufferView<forward_iterator<const Inner*>,
+ forward_iterator<const Inner*>,
+ bidirectional_iterator<Inner*>,
+ bidirectional_iterator<Inner*>>;
constexpr bool test() {
int buffer[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
{
- CopyableChild children[4] = {CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]),
- CopyableChild(buffer[3])};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
std::ranges::join_view jv(ForwardCopyableParent{children});
- auto iter1 = jv.begin();
- using iterator = decltype(iter1);
+ auto iter1 = jv.begin();
+ using iterator = decltype(iter1);
using const_iterator = decltype(std::as_const(jv).begin());
static_assert(!std::is_same_v<iterator, const_iterator>);
const_iterator iter2 = iter1;
@@ -53,7 +59,7 @@ constexpr bool test() {
ConstIncompatibleInner inners[2] = {buffer[0], buffer[1]};
ConstCompatibleOuter<ConstIncompatibleInner> outer{inners};
std::ranges::join_view jv(outer);
- using iterator = decltype(jv.begin());
+ using iterator = decltype(jv.begin());
using const_iterator = decltype(std::as_const(jv).begin());
static_assert(!std::is_same_v<iterator, const_iterator>);
@@ -66,7 +72,7 @@ constexpr bool test() {
ConstCompatibleInner inners[2] = {buffer[0], buffer[1]};
ConstIncompatibleOuter<ConstCompatibleInner> outer{inners};
std::ranges::join_view jv(outer);
- using iterator = decltype(jv.begin());
+ using iterator = decltype(jv.begin());
using const_iterator = decltype(std::as_const(jv).begin());
static_assert(!std::is_same_v<iterator, const_iterator>);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/decrement.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/decrement.pass.cpp
index c07bf4cc2..6b00f5879 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/decrement.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/decrement.pass.cpp
@@ -115,7 +115,7 @@ constexpr bool test() {
{
// basic type checking
std::ranges::join_view jv(buffer);
- auto iter1 = std::ranges::next(jv.begin(), 4);
+ auto iter1 = std::ranges::next(jv.begin(), 4);
using iterator = decltype(iter1);
decltype(auto) iter2 = --iter1;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/eq.pass.cpp
index 8b7e694b0..623e5bc50 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/eq.pass.cpp
@@ -54,7 +54,7 @@ constexpr bool test() {
{
// !equality_comparable<iterator_t<range_reference_t<Base>>>;
- using Inner = BufferView<cpp20_input_iterator<int*>, sentinel_wrapper<cpp20_input_iterator<int*>>>;
+ using Inner = BufferView<cpp20_input_iterator<int*>, sentinel_wrapper<cpp20_input_iterator<int*>>>;
Inner inners[1] = {buffer[0]};
std::ranges::join_view jv{inners};
auto iter = jv.begin();
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/increment.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/increment.pass.cpp
index dada91462..05241e63f 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/increment.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/increment.pass.cpp
@@ -23,8 +23,8 @@
constexpr bool test() {
// This way if we read past end we'll catch the error.
int buffer1[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}};
- int dummy = 42;
- (void) dummy;
+ int dummy = 42;
+ (void)dummy;
int buffer2[2][4] = {{9, 10, 11, 12}, {13, 14, 15, 16}};
// operator++(int);
@@ -37,7 +37,7 @@ constexpr bool test() {
}
{
- using IntView = ValueView<int>;
+ using IntView = ValueView<int>;
IntView children[4] = {IntView(buffer1[0]), IntView(buffer1[1]), IntView(buffer2[0]), IntView(buffer2[1])};
std::ranges::join_view jv(ValueView<IntView>{children});
auto iter = jv.begin();
@@ -67,20 +67,30 @@ constexpr bool test() {
// Has some empty children.
{
- CopyableChild children[4] = {CopyableChild(buffer1[0], 4), CopyableChild(buffer1[1], 0), CopyableChild(buffer2[0], 1), CopyableChild(buffer2[1], 0)};
- auto jv = std::ranges::join_view(ParentView(children));
+ CopyableChild children[4] = {
+ CopyableChild(buffer1[0], 4),
+ CopyableChild(buffer1[1], 0),
+ CopyableChild(buffer2[0], 1),
+ CopyableChild(buffer2[1], 0)};
+ auto jv = std::ranges::join_view(ParentView(children));
auto iter = jv.begin();
- assert(*iter == 1); iter++;
- assert(*iter == 2); iter++;
- assert(*iter == 3); iter++;
- assert(*iter == 4); iter++;
- assert(*iter == 9); iter++;
+ assert(*iter == 1);
+ iter++;
+ assert(*iter == 2);
+ iter++;
+ assert(*iter == 3);
+ iter++;
+ assert(*iter == 4);
+ iter++;
+ assert(*iter == 9);
+ iter++;
assert(iter == jv.end());
}
// Parent is empty.
{
- CopyableChild children[4] = {CopyableChild(buffer1[0]), CopyableChild(buffer1[1]), CopyableChild(buffer2[0]), CopyableChild(buffer2[1])};
+ CopyableChild children[4] = {
+ CopyableChild(buffer1[0]), CopyableChild(buffer1[1]), CopyableChild(buffer2[0]), CopyableChild(buffer2[1])};
std::ranges::join_view jv(ParentView(children, 0));
assert(jv.begin() == jv.end());
}
@@ -90,10 +100,14 @@ constexpr bool test() {
CopyableChild children[1] = {CopyableChild(buffer1[0])};
std::ranges::join_view jv(ParentView(children, 1));
auto iter = jv.begin();
- assert(*iter == 1); iter++;
- assert(*iter == 2); iter++;
- assert(*iter == 3); iter++;
- assert(*iter == 4); iter++;
+ assert(*iter == 1);
+ iter++;
+ assert(*iter == 2);
+ iter++;
+ assert(*iter == 3);
+ iter++;
+ assert(*iter == 4);
+ iter++;
assert(iter == jv.end());
}
@@ -102,7 +116,8 @@ constexpr bool test() {
CopyableChild children[1] = {CopyableChild(buffer1[0], 1)};
std::ranges::join_view jv(ParentView(children, 1));
auto iter = jv.begin();
- assert(*iter == 1); iter++;
+ assert(*iter == 1);
+ iter++;
assert(iter == jv.end());
}
@@ -115,27 +130,43 @@ constexpr bool test() {
// Has all empty children.
{
- CopyableChild children[4] = {CopyableChild(buffer1[0], 0), CopyableChild(buffer1[1], 0), CopyableChild(buffer2[0], 0), CopyableChild(buffer2[1], 0)};
+ CopyableChild children[4] = {
+ CopyableChild(buffer1[0], 0),
+ CopyableChild(buffer1[1], 0),
+ CopyableChild(buffer2[0], 0),
+ CopyableChild(buffer2[1], 0)};
auto jv = std::ranges::join_view(ParentView(children));
assert(jv.begin() == jv.end());
}
// First child is empty, others are not.
{
- CopyableChild children[4] = {CopyableChild(buffer1[0], 4), CopyableChild(buffer1[1], 0), CopyableChild(buffer2[0], 0), CopyableChild(buffer2[1], 0)};
- auto jv = std::ranges::join_view(ParentView(children));
+ CopyableChild children[4] = {
+ CopyableChild(buffer1[0], 4),
+ CopyableChild(buffer1[1], 0),
+ CopyableChild(buffer2[0], 0),
+ CopyableChild(buffer2[1], 0)};
+ auto jv = std::ranges::join_view(ParentView(children));
auto iter = jv.begin();
- assert(*iter == 1); iter++;
- assert(*iter == 2); iter++;
- assert(*iter == 3); iter++;
- assert(*iter == 4); iter++;
+ assert(*iter == 1);
+ iter++;
+ assert(*iter == 2);
+ iter++;
+ assert(*iter == 3);
+ iter++;
+ assert(*iter == 4);
+ iter++;
assert(iter == jv.end());
}
// Last child is empty, others are not.
{
- CopyableChild children[4] = {CopyableChild(buffer1[0], 4), CopyableChild(buffer1[1], 4), CopyableChild(buffer2[0], 4), CopyableChild(buffer2[1], 0)};
- auto jv = std::ranges::join_view(ParentView(children));
+ CopyableChild children[4] = {
+ CopyableChild(buffer1[0], 4),
+ CopyableChild(buffer1[1], 4),
+ CopyableChild(buffer2[0], 4),
+ CopyableChild(buffer2[1], 0)};
+ auto jv = std::ranges::join_view(ParentView(children));
auto iter = jv.begin();
for (int i = 1; i < 13; ++i) {
assert(*iter == i);
@@ -153,7 +184,7 @@ constexpr bool test() {
}
{
- using IntView = ValueView<int>;
+ using IntView = ValueView<int>;
IntView children[4] = {IntView(buffer1[0]), IntView(buffer1[1]), IntView(buffer2[0]), IntView(buffer2[1])};
std::ranges::join_view jv(ValueView<IntView>{children});
auto iter = jv.begin();
@@ -167,7 +198,7 @@ constexpr bool test() {
{
// check return value
std::ranges::join_view jv(buffer1);
- auto iter = jv.begin();
+ auto iter = jv.begin();
using iterator = decltype(iter);
decltype(auto) iter2 = ++iter;
@@ -190,7 +221,7 @@ constexpr bool test() {
{
// !forward_range<Base>
BufferView<int*> inners[2] = {buffer1[0], buffer1[1]};
- using Outer = SimpleInputCommonOuter<BufferView<int*>>;
+ using Outer = SimpleInputCommonOuter<BufferView<int*>>;
std::ranges::join_view jv{Outer(inners)};
auto iter = jv.begin();
static_assert(std::is_void_v<decltype(iter++)>);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/member_types.compile.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/member_types.compile.pass.cpp
index b9b9d73d7..6cee60857 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/member_types.compile.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/member_types.compile.pass.cpp
@@ -16,13 +16,13 @@
#include "test_macros.h"
#include "../types.h"
-template<class T>
+template <class T>
struct ForwardView : std::ranges::view_base {
forward_iterator<T*> begin() const;
sentinel_wrapper<forward_iterator<T*>> end() const;
};
-template<class T>
+template <class T>
struct InputView : std::ranges::view_base {
cpp17_input_iterator<T*> begin() const;
sentinel_wrapper<cpp17_input_iterator<T*>> end() const;
@@ -31,8 +31,8 @@ struct InputView : std::ranges::view_base {
template <class T, class V>
struct diff_type_iter {
using iterator_category = std::input_iterator_tag;
- using value_type = V;
- using difference_type = T;
+ using value_type = V;
+ using difference_type = T;
V& operator*() const;
diff_type_iter& operator++();
@@ -46,7 +46,7 @@ struct DiffTypeRange : std::ranges::view_base {
diff_type_iter<T, V> end() const;
};
-template<class T>
+template <class T>
concept HasIterCategory = requires { typename T::iterator_category; };
void test() {
@@ -96,20 +96,20 @@ void test() {
{
// !ref-is-glvalue
using Outer = InnerRValue<BidiCommonOuter<BidiCommonInner>>;
- using Iter = std::ranges::iterator_t<std::ranges::join_view<Outer>>;
+ using Iter = std::ranges::iterator_t<std::ranges::join_view<Outer>>;
static_assert(!HasIterCategory<Iter>);
static_assert(std::is_same_v<Iter::iterator_concept, std::input_iterator_tag>);
}
{
// value_type == inner's value_type
- using Inner = IterMoveSwapAwareView;
- using InnerValue = std::ranges::range_value_t<Inner>;
+ using Inner = IterMoveSwapAwareView;
+ using InnerValue = std::ranges::range_value_t<Inner>;
using InnerReference = std::ranges::range_reference_t<Inner>;
static_assert(!std::is_same_v<InnerValue, std::remove_cvref<InnerReference>>);
using Outer = BidiCommonOuter<Inner>;
- using Iter = std::ranges::iterator_t<std::ranges::join_view<Outer>>;
+ using Iter = std::ranges::iterator_t<std::ranges::join_view<Outer>>;
static_assert(std::is_same_v<InnerValue, std::pair<int, int>>);
static_assert(std::is_same_v<Iter::value_type, std::pair<int, int>>);
}
@@ -118,7 +118,7 @@ void test() {
// difference_type
using Inner = DiffTypeRange<std::intptr_t>;
using Outer = DiffTypeRange<std::ptrdiff_t, Inner>;
- using Iter = std::ranges::iterator_t<std::ranges::join_view<Outer>>;
+ using Iter = std::ranges::iterator_t<std::ranges::join_view<Outer>>;
static_assert(std::is_same_v<Iter::difference_type, std::common_type_t<std::intptr_t, std::ptrdiff_t>>);
}
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/star.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/star.pass.cpp
index 73457b826..9e0997144 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/iterator/star.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/iterator/star.pass.cpp
@@ -34,8 +34,8 @@ constexpr bool test() {
}
{
ChildView children[4] = {ChildView(buffer[0]), ChildView(buffer[1]), ChildView(buffer[2]), ChildView(buffer[3])};
- auto jv = std::ranges::join_view(ParentView(children));
- auto iter = jv.begin();
+ auto jv = std::ranges::join_view(ParentView(children));
+ auto iter = jv.begin();
for (int i = 1; i < 17; ++i) {
assert(*iter == i);
++iter;
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.default.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.default.pass.cpp
index 42fcc733e..2d63cf760 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.default.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.default.pass.cpp
@@ -18,7 +18,7 @@
constexpr bool test() {
std::ranges::sentinel_t<std::ranges::join_view<CopyableParent>> sent;
- (void) sent;
+ (void)sent;
return true;
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.other.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.other.pass.cpp
index 4bd8025ef..9546ca188 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.other.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.other.pass.cpp
@@ -34,7 +34,7 @@ struct convertible_sentinel_wrapper {
struct ConstConveritbleView : BufferView<BufferView<int*>*> {
using BufferView<BufferView<int*>*>::BufferView;
- using sentinel = convertible_sentinel_wrapper<BufferView<int*>*>;
+ using sentinel = convertible_sentinel_wrapper<BufferView<int*>*>;
using const_sentinel = convertible_sentinel_wrapper<const BufferView<int*>*>;
constexpr BufferView<int*>* begin() { return data_; }
@@ -53,7 +53,7 @@ constexpr bool test() {
BufferView<int*> inners[] = {buffer[0], buffer[1], buffer[2]};
ConstConveritbleView outer(inners);
std::ranges::join_view jv(outer);
- auto sent1 = jv.end();
+ auto sent1 = jv.end();
std::ranges::sentinel_t<const decltype(jv)> sent2 = sent1;
assert(std::as_const(jv).begin() != sent2);
assert(std::ranges::next(std::as_const(jv).begin(), 12) == sent2);
@@ -67,10 +67,12 @@ constexpr bool test() {
// const sentinel cannot be created from the underlying non-const sentinel
using Inner = BufferView<int*>;
using ConstInconvertibleOuter =
- BufferView<forward_iterator<const Inner*>, sentinel_wrapper<forward_iterator<const Inner*>>,
- bidirectional_iterator<Inner*>, sentinel_wrapper<bidirectional_iterator<Inner*>>>;
- using JoinView = std::ranges::join_view<ConstInconvertibleOuter>;
- using sentinel = std::ranges::sentinel_t<JoinView>;
+ BufferView<forward_iterator<const Inner*>,
+ sentinel_wrapper<forward_iterator<const Inner*>>,
+ bidirectional_iterator<Inner*>,
+ sentinel_wrapper<bidirectional_iterator<Inner*>>>;
+ using JoinView = std::ranges::join_view<ConstInconvertibleOuter>;
+ using sentinel = std::ranges::sentinel_t<JoinView>;
using const_sentinel = std::ranges::sentinel_t<const JoinView>;
static_assert(!std::constructible_from<sentinel, const_sentinel>);
static_assert(!std::constructible_from<const_sentinel, sentinel>);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.parent.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.parent.pass.cpp
index 1ac682773..26f68a9c5 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.parent.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/ctor.parent.pass.cpp
@@ -19,7 +19,8 @@
constexpr bool test() {
int buffer[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
- CopyableChild children[4] = {CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
CopyableParent parent{children};
std::ranges::join_view jv(parent);
std::ranges::sentinel_t<decltype(jv)> sent(jv);
@@ -35,7 +36,7 @@ int main(int, char**) {
{
// Test explicitness.
using Parent = std::ranges::join_view<ParentView<ChildView>>;
- static_assert( std::is_constructible_v<std::ranges::sentinel_t<Parent>, Parent&>);
+ static_assert(std::is_constructible_v<std::ranges::sentinel_t<Parent>, Parent&>);
static_assert(!std::is_convertible_v<std::ranges::sentinel_t<Parent>, Parent&>);
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/eq.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/eq.pass.cpp
index bc7d4bec9..97fdef5a8 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/eq.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/sentinel/eq.pass.cpp
@@ -21,14 +21,13 @@
#include "../types.h"
template <class Iter, class Sent>
-concept EqualityComparable = std::invocable<std::equal_to<>, const Iter&, const Sent&> ;
+concept EqualityComparable = std::invocable<std::equal_to<>, const Iter&, const Sent&>;
-using Iterator = random_access_iterator<BufferView<int*>*>;
+using Iterator = random_access_iterator<BufferView<int*>*>;
using ConstIterator = random_access_iterator<const BufferView<int*>*>;
template <bool Const>
struct ConstComparableSentinel {
-
using Iter = std::conditional_t<Const, ConstIterator, Iterator>;
Iter iter_;
@@ -78,10 +77,10 @@ constexpr bool test() {
// test iterator<true> == sentinel<true>
{
- CopyableChild children[4] = {CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]),
- CopyableChild(buffer[3])};
- using ParentT = std::remove_all_extents_t<decltype(children)>;
- const auto jv = std::ranges::join_view(ForwardParentView<ParentT>(children));
+ CopyableChild children[4] = {
+ CopyableChild(buffer[0]), CopyableChild(buffer[1]), CopyableChild(buffer[2]), CopyableChild(buffer[3])};
+ using ParentT = std::remove_all_extents_t<decltype(children)>;
+ const auto jv = std::ranges::join_view(ForwardParentView<ParentT>(children));
assert(jv.end() == std::ranges::next(jv.begin(), 16));
}
diff --git a/libcxx/test/std/ranges/range.adaptors/range.join/types.h b/libcxx/test/std/ranges/range.adaptors/range.join/types.h
index c1378dc11..9f64b8cc2 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.join/types.h
+++ b/libcxx/test/std/ranges/range.adaptors/range.join/types.h
@@ -24,20 +24,20 @@ inline int globalBuffer[4][4] = {
{13, 14, 15, 16},
};
-template <template<class...> class Iter>
+template <template <class...> class Iter>
struct ChildViewBase : std::ranges::view_base {
int* ptr_;
- using iterator = Iter<int*>;
+ using iterator = Iter<int*>;
using const_iterator = Iter<const int*>;
- using sentinel = sentinel_wrapper<iterator>;
+ using sentinel = sentinel_wrapper<iterator>;
using const_sentinel = sentinel_wrapper<const_iterator>;
constexpr ChildViewBase(int* ptr = globalBuffer[0]) : ptr_(ptr) {}
- ChildViewBase(const ChildViewBase&) = delete;
- ChildViewBase(ChildViewBase&&) = default;
+ ChildViewBase(const ChildViewBase&) = delete;
+ ChildViewBase(ChildViewBase&&) = default;
ChildViewBase& operator=(const ChildViewBase&) = delete;
- ChildViewBase& operator=(ChildViewBase&&) = default;
+ ChildViewBase& operator=(ChildViewBase&&) = default;
constexpr iterator begin() { return iterator(ptr_); }
constexpr const_iterator begin() const { return const_iterator(ptr_); }
@@ -53,24 +53,24 @@ inline ChildView globalChildren[4] = {
ChildView(globalBuffer[3]),
};
-template <class T, template<class...> class Iter = cpp17_input_iterator>
+template <class T, template <class...> class Iter = cpp17_input_iterator>
struct ParentView : std::ranges::view_base {
T* ptr_;
unsigned size_;
- using iterator = Iter<T*>;
+ using iterator = Iter<T*>;
using const_iterator = Iter<const T*>;
- using sentinel = sentinel_wrapper<iterator>;
+ using sentinel = sentinel_wrapper<iterator>;
using const_sentinel = sentinel_wrapper<const_iterator>;
constexpr ParentView(T* ptr, unsigned size = 4) : ptr_(ptr), size_(size) {}
constexpr ParentView(ChildView* ptr = globalChildren, unsigned size = 4)
requires std::same_as<ChildView, T>
- : ptr_(ptr), size_(size) {}
- ParentView(const ParentView&) = delete;
- ParentView(ParentView&&) = default;
+ : ptr_(ptr), size_(size) {}
+ ParentView(const ParentView&) = delete;
+ ParentView(ParentView&&) = default;
ParentView& operator=(const ParentView&) = delete;
- ParentView& operator=(ParentView&&) = default;
+ ParentView& operator=(ParentView&&) = default;
constexpr iterator begin() { return iterator(ptr_); }
constexpr const_iterator begin() const { return const_iterator(ptr_); }
@@ -81,16 +81,16 @@ struct ParentView : std::ranges::view_base {
template <class T>
ParentView(T*) -> ParentView<T>;
-template<class T>
+template <class T>
using ForwardParentView = ParentView<T, forward_iterator>;
struct CopyableChild : std::ranges::view_base {
int* ptr_;
unsigned size_;
- using iterator = cpp17_input_iterator<int*>;
+ using iterator = cpp17_input_iterator<int*>;
using const_iterator = cpp17_input_iterator<const int*>;
- using sentinel = sentinel_wrapper<iterator>;
+ using sentinel = sentinel_wrapper<iterator>;
using const_sentinel = sentinel_wrapper<const_iterator>;
constexpr CopyableChild(int* ptr = globalBuffer[0], unsigned size = 4) : ptr_(ptr), size_(size) {}
@@ -101,13 +101,13 @@ struct CopyableChild : std::ranges::view_base {
constexpr const_sentinel end() const { return const_sentinel(const_iterator(ptr_ + size_)); }
};
-template<template<class...> class Iter>
+template <template <class...> class Iter>
struct CopyableParentTemplate : std::ranges::view_base {
CopyableChild* ptr_;
- using iterator = Iter<CopyableChild*>;
+ using iterator = Iter<CopyableChild*>;
using const_iterator = Iter<const CopyableChild*>;
- using sentinel = sentinel_wrapper<iterator>;
+ using sentinel = sentinel_wrapper<iterator>;
using const_sentinel = sentinel_wrapper<const_iterator>;
constexpr CopyableParentTemplate(CopyableChild* ptr) : ptr_(ptr) {}
@@ -118,7 +118,7 @@ struct CopyableParentTemplate : std::ranges::view_base {
constexpr const_sentinel end() const { return const_sentinel(const_iterator(ptr_ + 4)); }
};
-using CopyableParent = CopyableParentTemplate<cpp17_input_iterator>;
+using CopyableParent = CopyableParentTemplate<cpp17_input_iterator>;
using ForwardCopyableParent = CopyableParentTemplate<forward_iterator>;
struct Box {
@@ -132,7 +132,7 @@ struct InputValueIter {
typedef int difference_type;
typedef T reference;
- T* ptr_ = nullptr;
+ T* ptr_ = nullptr;
constexpr InputValueIter() = default;
constexpr InputValueIter(T* ptr) : ptr_(ptr) {}
@@ -159,12 +159,12 @@ struct ValueView : std::ranges::view_base {
constexpr ValueView(ValueView&& other) : ptr_(other.ptr_) { other.ptr_.ptr_ = nullptr; }
constexpr ValueView& operator=(ValueView&& other) {
- ptr_ = other.ptr_;
+ ptr_ = other.ptr_;
other.ptr_ = InputValueIter<T>(nullptr);
return *this;
}
- ValueView(const ValueView&) = delete;
+ ValueView(const ValueView&) = delete;
ValueView& operator=(const ValueView&) = delete;
constexpr InputValueIter<T> begin() const { return ptr_; }
@@ -173,7 +173,6 @@ struct ValueView : std::ranges::view_base {
template <class Iter, class Sent = Iter, class NonConstIter = Iter, class NonConstSent = Sent>
struct BufferView : std::ranges::view_base {
-
using T = std::iter_value_t<Iter>;
T* data_;
std::size_t size_;
@@ -183,13 +182,15 @@ struct BufferView : std::ranges::view_base {
constexpr BufferView(T* p, std::size_t s) : data_(p), size_(s) {}
constexpr NonConstIter begin()
- requires(!std::is_same_v<Iter, NonConstIter>) {
+ requires(!std::is_same_v<Iter, NonConstIter>)
+ {
return NonConstIter(this->data_);
}
constexpr Iter begin() const { return Iter(this->data_); }
constexpr NonConstSent end()
- requires(!std::is_same_v<Sent, NonConstSent>) {
+ requires(!std::is_same_v<Sent, NonConstSent>)
+ {
if constexpr (std::is_same_v<NonConstIter, NonConstSent>) {
return NonConstIter(this->data_ + this->size_);
} else {
@@ -242,8 +243,11 @@ static_assert(std::ranges::common_range<SimpleInputCommonOuter<>>);
LIBCPP_STATIC_ASSERT(std::ranges::__simple_view<SimpleInputCommonOuter<>>);
template <class Inner = BufferView<int*>>
-using NonSimpleInputCommonOuter = BufferView<common_input_iterator<const Inner*>, common_input_iterator<const Inner*>,
- common_input_iterator< Inner*>, common_input_iterator< Inner*>>;
+using NonSimpleInputCommonOuter =
+ BufferView<common_input_iterator<const Inner*>,
+ common_input_iterator<const Inner*>,
+ common_input_iterator< Inner*>,
+ common_input_iterator< Inner*>>;
static_assert(!std::ranges::forward_range<NonSimpleInputCommonOuter<>>);
static_assert(!std::ranges::bidirectional_range<NonSimpleInputCommonOuter<>>);
static_assert(std::ranges::common_range<NonSimpleInputCommonOuter<>>);
@@ -257,8 +261,11 @@ static_assert(std::ranges::common_range<SimpleForwardCommonOuter<>>);
LIBCPP_STATIC_ASSERT(std::ranges::__simple_view<SimpleForwardCommonOuter<>>);
template <class Inner = BufferView<int*>>
-using NonSimpleForwardCommonOuter = BufferView<forward_iterator<const Inner*>, forward_iterator<const Inner*>,
- forward_iterator<Inner*>, forward_iterator<Inner*>>;
+using NonSimpleForwardCommonOuter =
+ BufferView<forward_iterator<const Inner*>,
+ forward_iterator<const Inner*>,
+ forward_iterator<Inner*>,
+ forward_iterator<Inner*>>;
static_assert(std::ranges::forward_range<NonSimpleForwardCommonOuter<>>);
static_assert(!std::ranges::bidirectional_range<NonSimpleForwardCommonOuter<>>);
static_assert(std::ranges::common_range<NonSimpleForwardCommonOuter<>>);
@@ -273,8 +280,10 @@ LIBCPP_STATIC_ASSERT(std::ranges::__simple_view<SimpleForwardNonCommonOuter<>>);
template <class Inner = BufferView<int*>>
using NonSimpleForwardNonCommonOuter =
- BufferView<forward_iterator<const Inner*>, sentinel_wrapper<forward_iterator<const Inner*>>,
- forward_iterator<Inner*>, sentinel_wrapper<forward_iterator<Inner*>>>;
+ BufferView<forward_iterator<const Inner*>,
+ sentinel_wrapper<forward_iterator<const Inner*>>,
+ forward_iterator<Inner*>,
+ sentinel_wrapper<forward_iterator<Inner*>>>;
static_assert(std::ranges::forward_range<NonSimpleForwardNonCommonOuter<>>);
static_assert(!std::ranges::bidirectional_range<NonSimpleForwardNonCommonOuter<>>);
static_assert(!std::ranges::common_range<NonSimpleForwardNonCommonOuter<>>);
@@ -291,11 +300,13 @@ template <class It>
struct copying_iterator {
It it_ = It();
- using value_type = typename std::iterator_traits<It>::value_type;
+ using value_type = typename std::iterator_traits<It>::value_type;
using difference_type = typename std::iterator_traits<It>::difference_type;
- using pointer = typename std::iterator_traits<It>::pointer;
+ using pointer = typename std::iterator_traits<It>::pointer;
- copying_iterator() requires std::default_initializable<It> = default;
+ copying_iterator()
+ requires std::default_initializable<It>
+ = default;
constexpr copying_iterator(It it) : it_(std::move(it)) {}
// makes a copy of underlying operator* to create a PRValue
@@ -306,17 +317,20 @@ struct copying_iterator {
return *this;
}
constexpr copying_iterator& operator--()
- requires std::bidirectional_iterator<It> {
+ requires std::bidirectional_iterator<It>
+ {
--it_;
return *this;
}
constexpr copying_iterator operator++(int)
- requires std::forward_iterator<It> {
+ requires std::forward_iterator<It>
+ {
return copying_iterator(it_++);
}
constexpr void operator++(int) { return it_++; }
constexpr copying_iterator operator--(int)
- requires std::bidirectional_iterator<It> {
+ requires std::bidirectional_iterator<It>
+ {
return copying_iterator(it_--);
}
@@ -325,10 +339,9 @@ struct copying_iterator {
template <class Outer>
struct InnerRValue : Outer {
-
- using iterator = copying_iterator<std::ranges::iterator_t<Outer>>;
+ using iterator = copying_iterator<std::ranges::iterator_t<Outer>>;
using const_iterator = copying_iterator<std::ranges::iterator_t<const Outer>>;
- using sentinel = copying_iterator<std::ranges::sentinel_t<Outer>>;
+ using sentinel = copying_iterator<std::ranges::sentinel_t<Outer>>;
using const_sentinel = copying_iterator<std::ranges::sentinel_t<const Outer>>;
using Outer::Outer;
@@ -336,13 +349,15 @@ struct InnerRValue : Outer {
constexpr iterator begin() { return Outer::begin(); }
constexpr const_iterator begin() const
- requires std::ranges::range<const Outer> {
+ requires std::ranges::range<const Outer>
+ {
return Outer::begin();
}
constexpr auto end() { return iterator{Outer::end()}; }
constexpr auto end() const
- requires std::ranges::range<const Outer> {
+ requires std::ranges::range<const Outer>
+ {
return const_iterator{Outer::end()};
}
};
@@ -353,19 +368,18 @@ LIBCPP_STATIC_ASSERT(std::ranges::__simple_view<InnerRValue<SimpleForwardCommonO
static_assert(!std::is_lvalue_reference_v<std::ranges::range_reference_t<InnerRValue<SimpleForwardCommonOuter<>>>>);
struct move_swap_aware_iter {
-
// This is a proxy-like iterator where `reference` is a prvalue, and
// `reference` and `value_type` are distinct types (similar to `zip_view::iterator`).
- using value_type = std::pair<int, int>;
- using reference = std::pair<int&, int&>;
+ using value_type = std::pair<int, int>;
+ using reference = std::pair<int&, int&>;
using rvalue_reference = std::pair<int&&, int&&>;
- using difference_type = std::intptr_t;
+ using difference_type = std::intptr_t;
using iterator_concept = std::input_iterator_tag;
int* iter_move_called = nullptr;
int* iter_swap_called = nullptr;
- int* i_ = nullptr;
+ int* i_ = nullptr;
constexpr move_swap_aware_iter& operator++() {
++i_;
``````````
</details>
https://github.com/llvm/llvm-project/pull/66033
More information about the libcxx-commits
mailing list