https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105609
Bug ID: 105609 Summary: ranges::move(_backward) should use ranges::iter_move instead of std::move Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: hewillk at gmail dot com Target Milestone: --- This is specified in [alg.move]. #include <algorithm> struct O { O(int&); O(int&&) = delete; }; struct I { using value_type = int; using difference_type = std::ptrdiff_t; int operator*() const; I& operator++(); I operator++(int); I& operator--(); I operator--(int); bool operator==(I) const; friend int& iter_move(const I&); }; int main() { O* o = nullptr; std::ranges::move(I{}, I{}, o); std::ranges::move_backward(I{}, I{}, o); } https://godbolt.org/z/KoxEPbPrP