[libcxx-commits] [libcxx] [libc++][ranges][enumerate_view] Update iterator `iter_move` test (PR #219474)
Hristo Hristov via libcxx-commits
libcxx-commits at lists.llvm.org
Sat Aug 29 00:41:10 PDT 2026
================
@@ -38,19 +44,48 @@ constexpr void test() {
std::array array{0, 1, 2, 3, 4};
- View mv{Iterator(std::to_address(base(array.begin()))), Sentinel(Iterator(std::to_address(base(array.end()))))};
- EnumerateView ev{std::move(mv)};
- EnumerateIterator const it = ev.begin();
-
- auto&& result = iter_move(it);
-
- using DifferenceT = std::iter_difference_t<EnumerateIterator>;
- static_assert(std::is_same_v<decltype(result), std::tuple<DifferenceT, int&&>&&>);
-
- assert(get<0>(result) == 0);
- assert(&get<1>(result) == std::to_address(base(array.begin())));
-
- static_assert(noexcept(iter_move(it)) == HasNoexceptIterMove);
+ {
+ // underlying iter_move noexcept
+ View mv{Iterator(std::to_address(base(array.begin()))), Sentinel(Iterator(std::to_address(base(array.end()))))};
+ EnumerateView ev{std::move(mv)};
+ EnumerateIterator const it = ev.begin();
+
+ auto&& result = iter_move(it);
+
+ using DifferenceT = std::iter_difference_t<EnumerateIterator>;
+ static_assert(std::is_same_v<decltype(result), std::tuple<DifferenceT, int&&>&&>);
+
+ assert(get<0>(result) == 0);
+ assert(&get<1>(result) == std::to_address(base(array.begin())));
+
+ static_assert(noexcept(iter_move(it)) == HasNoexceptIterMove);
+ }
+
+ {
+ // !is_nothrow_move_constructible_v<range_rvalue_reference_t<Base>>
+ // underlying iter_move may throw
----------------
H-G-Hristov wrote:
```suggestion
// !is_nothrow_move_constructible_v<range_rvalue_reference_t<Base>>
// underlying iter_move may throw.
```
https://github.com/llvm/llvm-project/pull/219474
More information about the libcxx-commits
mailing list