[libcxx-commits] [libcxx] [libc++][ranges][enumerate_view] Fix iterator converting constructor test (PR #212044)

Hristo Hristov via libcxx-commits libcxx-commits at lists.llvm.org
Fri Aug 14 23:33:14 PDT 2026


================
@@ -42,31 +76,26 @@ constexpr void test() {
     return EnumerateView(std::move(view));
   };
 
-  static_assert(std::is_convertible_v<EnumerateIterator, EnumerateConstIterator>);
+  static_assert(std::convertible_to<EnumerateIterator, EnumerateConstIterator>);
 
   std::array array{0, 84, 2, 3, 4};
   auto view = make_enumerate_view(array.begin(), array.end());
   {
-    std::same_as<EnumerateIterator> decltype(auto) it     = view.begin();
-    std::same_as<const Iterator&> decltype(auto) itResult = it.base();
-    assert(base(base(itResult)) == std::to_address(base(array.begin())));
-
-    auto [index, value] = *(++it);
-    assert(index == 1);
-    assert(value == 84);
-  }
-  {
+    // Assigning a non-const iterator to a const-iterator-typed variable invokes
+    // the converting constructor.
     std::same_as<EnumerateConstIterator> decltype(auto) it = view.begin();
     std::same_as<const Iterator&> decltype(auto) itResult  = it.base();
     assert(base(base(itResult)) == std::to_address(base(array.begin())));
 
+    // Verify ++it
     auto [index, value] = *(++it);
     assert(index == 1);
     assert(value == 84);
   }
 }
 
-constexpr bool tests() {
+constexpr bool test() {
+  test_SFINAE();
----------------
Zingam wrote:

```suggestion
constexpr bool test() {
  test_SFINAE();

```

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


More information about the libcxx-commits mailing list