[libcxx-commits] [libcxx] [libc++][ranges] Add iterator convertible ctor test case for `enumerate_view` (PR #212044)
Hristo Hristov via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jul 30 03:17:08 PDT 2026
================
@@ -64,6 +73,17 @@ constexpr void test() {
assert(index == 1);
assert(value == 84);
}
+ {
+ // underlying non-const to const not convertible
+ int buffer[3] = {1, 2, 3};
+ std::ranges::enumerate_view v(ConstIterIncompatibleView{buffer});
+ auto iter1 = v.begin();
+ auto iter2 = std::as_const(v).begin();
+
+ static_assert(!std::is_same_v<decltype(iter1), decltype(iter2)>);
+ static_assert(!std::constructible_from<decltype(iter1), decltype(iter2)>);
+ static_assert(!std::constructible_from<decltype(iter2), decltype(iter1)>);
+ }
----------------
Zingam wrote:
I just had a quick look. Please rename the PR to something more appropriate like:
"Fix iterator converting constructor test..."
or
"[libc++][ranges][enumerate_view] Fix iterator converting constructor test"
see
https://en.cppreference.com/cpp/language/converting_constructor
https://www.ibm.com/docs/en/i/7.4.0?topic=only-conversion-constructors-c
The Standard uses currently: "Converstion by constructor" https://wg21.link/class.conv.ctor
https://github.com/llvm/llvm-project/pull/212044
More information about the libcxx-commits
mailing list