| // { dg-options "-std=gnu++20" } |
| // { dg-do compile { target c++20 } } |
| |
| #include <algorithm> |
| #include <span> |
| |
| constexpr bool |
| test01() |
| { |
| // PR libstdc++/102358 |
| int x[2] = {1,2}, y[2]; |
| std::span in(x), out(y); |
| std::move(std::move_iterator(in.begin()), std::move_iterator(in.end()), |
| out.begin()); |
| return std::equal(std::move_iterator(in.begin()), std::move_iterator(in.end()), |
| std::move_iterator(out.begin())); |
| } |
| |
| static_assert(test01()); |
| |
| constexpr bool |
| test02() |
| { |
| int x[2] = {1,2}, y[2]; |
| std::span in(x), out(y); |
| std::move(in.rbegin(), in.rend(), out.rbegin()); |
| return std::equal(in.rbegin(), in.rend(), out.rbegin()); |
| } |
| |
| static_assert(test02()); |