[libcxx-commits] [libcxx] WIP [libc++][ranges] P3059R2: Making user-defined constructors of view iterators/sentinels private (PR #193891)

via libcxx-commits libcxx-commits at lists.llvm.org
Thu Apr 23 20:55:33 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 h,cpp -- libcxx/include/__ranges/elements_view.h libcxx/include/__ranges/filter_view.h libcxx/include/__ranges/iota_view.h libcxx/include/__ranges/istream_view.h libcxx/include/__ranges/join_view.h libcxx/include/__ranges/lazy_split_view.h libcxx/include/__ranges/split_view.h libcxx/include/__ranges/take_view.h libcxx/include/__ranges/take_while_view.h libcxx/include/__ranges/transform_view.h libcxx/test/std/ranges/range.adaptors/range.elements/iterator/base.pass.cpp libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.other.pass.cpp libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/base.pass.cpp libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/ctor.convert.pass.cpp libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp libcxx/test/std/ranges/range.adaptors/range.filter/iterator/base.pass.cpp libcxx/test/std/ranges/range.adaptors/range.filter/iterator/deref.pass.cpp libcxx/test/std/ranges/range.adaptors/range.split/iterator/base.pass.cpp libcxx/test/std/ranges/range.adaptors/range.split/iterator/ctor.base.pass.cpp libcxx/test/std/ranges/range.adaptors/range.split/iterator/deref.pass.cpp libcxx/test/std/ranges/range.adaptors/range.split/sentinel/ctor.parent.pass.cpp libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/ctor.convert.pass.cpp libcxx/test/std/ranges/range.adaptors/range.take/range.take.sentinel/ctor.pass.cpp libcxx/test/std/ranges/range.factories/range.istream.view/ctor.pass.cpp libcxx/test/std/ranges/range.factories/range.istream.view/iterator/deref.pass.cpp --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/ranges/range.adaptors/range.elements/iterator/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/base.pass.cpp
index 95a3696e1..b41f894d0 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/iterator/base.pass.cpp
@@ -48,7 +48,7 @@ constexpr bool test() {
 
   // &
   {
-    ElementsIter it = std::ranges::elements_view<BaseView, 0>{BaseView{&t, &t + 1}}.begin();
+    ElementsIter it     = std::ranges::elements_view<BaseView, 0>{BaseView{&t, &t + 1}}.begin();
     decltype(auto) base = it.base();
     static_assert(std::is_same_v<decltype(base), std::tuple<int>* const&>);
     assert(base == &t);
@@ -56,7 +56,7 @@ constexpr bool test() {
 
   // &&
   {
-    ElementsIter it = std::ranges::elements_view<BaseView, 0>{BaseView{&t, &t + 1}}.begin();
+    ElementsIter it     = std::ranges::elements_view<BaseView, 0>{BaseView{&t, &t + 1}}.begin();
     decltype(auto) base = std::move(it).base();
     static_assert(std::is_same_v<decltype(base), std::tuple<int>*>);
     assert(base == &t);
@@ -82,9 +82,10 @@ constexpr bool test() {
     using MoveOnlyElemIter =
         std::ranges::iterator_t<std::ranges::elements_view<std::ranges::subrange<MoveOnlyIter, Sent>, 0>>;
 
-    auto it = std::ranges::elements_view<std::ranges::subrange<MoveOnlyIter, Sent>, 0>{
-        std::ranges::subrange{MoveOnlyIter{{}, MoveOnly{5}}, Sent{}}}
-                  .begin();
+    auto it =
+        std::ranges::elements_view<std::ranges::subrange<MoveOnlyIter, Sent>, 0>{
+            std::ranges::subrange{MoveOnlyIter{{}, MoveOnly{5}}, Sent{}}}
+            .begin();
     decltype(auto) base = std::move(it).base();
     static_assert(std::is_same_v<decltype(base), MoveOnlyIter>);
     assert(base.mo.get() == 5);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/base.pass.cpp
index a11d16817..885582a5c 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/base.pass.cpp
@@ -28,7 +28,7 @@ constexpr bool test() {
   using EleSent   = std::ranges::sentinel_t<EleRange>;
 
   const EleRange ev;
-  const EleSent st = ev.end();
+  const EleSent st                       = ev.end();
   std::same_as<Sent> decltype(auto) base = st.base();
   assert(base.i == 5);
 
diff --git a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp
index 46d59c3de..284a22d21 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp
@@ -88,7 +88,8 @@ constexpr void test() {
   for (std::ptrdiff_t n = 0; n != 5; ++n) {
     FilterView view = make_filter_view(array.data(), array.data() + array.size(), AlwaysTrue{});
     FilterIterator iter = view.begin();
-    for (std::ptrdiff_t i = 0; i < n; ++i) ++iter;
+    for (std::ptrdiff_t i = 0; i < n; ++i)
+      ++iter;
     std::same_as<Iter> decltype(auto) result = iter.operator->();
     assert(base(result) == array.data() + n);
     assert(iter->x == n);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/deref.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/deref.pass.cpp
index e794ff133..42b0f1816 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/deref.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/deref.pass.cpp
@@ -37,7 +37,8 @@ constexpr void test() {
 
   for (std::size_t n = 0; n != array.size(); ++n) {
     FilterIterator iter = view.begin();
-    for (std::size_t i = 0; i < n; ++i) ++iter;
+    for (std::size_t i = 0; i < n; ++i)
+      ++iter;
     ValueType& result = *iter;
     ASSERT_SAME_TYPE(ValueType&, decltype(*iter));
     assert(&result == array.data() + n);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.split/iterator/base.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.split/iterator/base.pass.cpp
index 66c2914ba..8e8eff8a1 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.split/iterator/base.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.split/iterator/base.pass.cpp
@@ -16,7 +16,7 @@
 #include "../types.h"
 
 struct Iter : ForwardIterBase<Iter> {
-  int i = 0;
+  int i            = 0;
   constexpr Iter() = default;
   constexpr Iter(int ii) : i(ii) {}
   constexpr int operator*() const { return i; }
@@ -37,33 +37,32 @@ constexpr bool test() {
   using SplitView = std::ranges::split_view<std::ranges::subrange<Iter>, std::ranges::subrange<Iter>>;
   using SplitIter = std::ranges::iterator_t<SplitView>;
 
-  SplitView sv{std::ranges::subrange<Iter>{Iter{5}, Iter{8}},
-               std::ranges::subrange<Iter>{Iter{8}, Iter{9}}};
+  SplitView sv{std::ranges::subrange<Iter>{Iter{5}, Iter{8}}, std::ranges::subrange<Iter>{Iter{8}, Iter{9}}};
 
   // const &
   {
-    const SplitIter it = sv.begin();
+    const SplitIter it                     = sv.begin();
     std::same_as<Iter> decltype(auto) base = it.base();
     assert(base.i == 5);
   }
 
   // &
   {
-    SplitIter it = sv.begin();
+    SplitIter it                           = sv.begin();
     std::same_as<Iter> decltype(auto) base = it.base();
     assert(base.i == 5);
   }
 
   // &&
   {
-    SplitIter it = sv.begin();
+    SplitIter it                           = sv.begin();
     std::same_as<Iter> decltype(auto) base = std::move(it).base();
     assert(base.i == 5);
   }
 
   // const &&
   {
-    const SplitIter it = sv.begin();
+    const SplitIter it                     = sv.begin();
     std::same_as<Iter> decltype(auto) base = std::move(it).base();
     assert(base.i == 5);
   }
diff --git a/libcxx/test/std/ranges/range.adaptors/range.split/iterator/deref.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.split/iterator/deref.pass.cpp
index be7aca854..0e9812020 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.split/iterator/deref.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.split/iterator/deref.pass.cpp
@@ -17,7 +17,7 @@
 #include "../types.h"
 
 struct Iter : ForwardIterBase<Iter> {
-  int i = 0;
+  int i            = 0;
   constexpr Iter() = default;
   constexpr Iter(int ii) : i(ii) {}
   constexpr int operator*() const { return i; }
@@ -37,9 +37,8 @@ constexpr bool test() {
   using SplitView = std::ranges::split_view<std::ranges::subrange<Iter>, std::ranges::subrange<Iter>>;
   using SplitIter = std::ranges::iterator_t<SplitView>;
 
-  SplitView sv{std::ranges::subrange<Iter>{Iter{5}, Iter{8}},
-               std::ranges::subrange<Iter>{Iter{7}, Iter{8}}};
-  const SplitIter it = sv.begin();
+  SplitView sv{std::ranges::subrange<Iter>{Iter{5}, Iter{8}}, std::ranges::subrange<Iter>{Iter{7}, Iter{8}}};
+  const SplitIter it                                             = sv.begin();
   std::same_as<std::ranges::subrange<Iter>> decltype(auto) value = *it;
   assert(value.begin().i == 5);
   assert(value.end().i == 7);
diff --git a/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/ctor.convert.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/ctor.convert.pass.cpp
index 0fffe9b50..180854542 100644
--- a/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/ctor.convert.pass.cpp
+++ b/libcxx/test/std/ranges/range.adaptors/range.take.while/sentinel/ctor.convert.pass.cpp
@@ -82,7 +82,7 @@ constexpr bool test() {
     static_assert(!std::same_as<Sentinel, ConstSentinel>);
 
     R r{TestRng{}, nullptr};
-    Sentinel s1 = r.end();
+    Sentinel s1      = r.end();
     ConstSentinel s2 = s1;
     assert(s2.base().i == 5);
   }
@@ -107,11 +107,11 @@ constexpr bool test() {
     static_assert(!std::same_as<Sentinel, ConstSentinel>);
 
     R r{TestRng{}, pred};
-    Sentinel s1 = r.end();
+    Sentinel s1      = r.end();
     ConstSentinel s2 = s1;
 
-    int i     = 10;
-    int* iter = &i;
+    int i                   = 10;
+    int* iter               = &i;
     [[maybe_unused]] bool b = iter == s2;
     assert(called);
   }
@@ -141,7 +141,7 @@ constexpr bool test() {
     static_assert(!std::same_as<Sentinel, ConstSentinel>);
 
     R r{Rng{}, TestPred{}};
-    Sentinel s1 = r.end();
+    Sentinel s1      = r.end();
     ConstSentinel s2 = s1;
     assert(s2.base().i == 0);
   }
diff --git a/libcxx/test/std/ranges/range.factories/range.istream.view/iterator/deref.pass.cpp b/libcxx/test/std/ranges/range.factories/range.istream.view/iterator/deref.pass.cpp
index d010ee06d..9f9f13399 100644
--- a/libcxx/test/std/ranges/range.factories/range.istream.view/iterator/deref.pass.cpp
+++ b/libcxx/test/std/ranges/range.factories/range.istream.view/iterator/deref.pass.cpp
@@ -28,7 +28,6 @@ void test() {
     std::same_as<int&> decltype(auto) v1 = *it;
     assert(v1 == 1);
   }
-
 }
 
 int main(int, char**) {

``````````

</details>


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


More information about the libcxx-commits mailing list