The new test functions I added in
r15-7765-g3866ca796d5281 are causing
those tests to FAIL on Solaris and arm-thumb due to the linker
complaining about undefined functions. The new test functions are not
called, so it shouldn't matter that they call undefined member
functions, but it does.
Move those functions to separate { dg-do compile } files so the linker
isn't used and won't complain.
libstdc++-v3/ChangeLog:
PR libstdc++/119110
* testsuite/25_algorithms/move/constrained.cc: Move test06
function to ...
* testsuite/25_algorithms/move/105609.cc: New test.
* testsuite/25_algorithms/move_backward/constrained.cc: Move
test04 function to ...
* testsuite/25_algorithms/move_backward/105609.cc: New test.
--- /dev/null
+// { dg-do compile { target c++20 } }
+
+// PR libstdc++/105609
+// ranges::move should use ranges::iter_move instead of std::move
+
+#include <algorithm>
+
+namespace pr105609
+{
+ 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&);
+ };
+}
+
+void
+test(pr105609::I i)
+{
+ struct O {
+ O(int&) { }
+ O(int&&) = delete;
+ };
+
+ O* o = nullptr;
+ std::ranges::move(i, i, o);
+}
VERIFY( ranges::equal(v, (int[]){1,2,3,0}) );
}
-namespace pr105609
-{
- 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&);
- };
-}
-
-void
-test06(pr105609::I i)
-{
- // PR libstdc++/105609
- // ranges::move should use ranges::iter_move instead of std::move
- struct O {
- O(int&) { }
- O(int&&) = delete;
- };
-
- O* o = nullptr;
- std::ranges::move(i, i, o);
-}
-
int
main()
{
--- /dev/null
+// { dg-do compile { target c++20 } }
+
+// PR libstdc++/105609
+// ranges::move should use ranges::iter_move instead of std::move
+
+#include <algorithm>
+
+namespace pr105609
+{
+ 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&);
+ };
+}
+
+void
+test(pr105609::I i)
+{
+ struct O {
+ O(int&) { }
+ O(int&&) = delete;
+ };
+
+ O* o = nullptr;
+ std::ranges::move_backward(i, i, o);
+}
return ok;
}
-namespace pr105609
-{
- 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&);
- };
-}
-
-void
-test04(pr105609::I i)
-{
- // PR libstdc++/105609
- // ranges::move should use ranges::iter_move instead of std::move
- struct O {
- O(int&) { }
- O(int&&) = delete;
- };
-
- O* o = nullptr;
- std::ranges::move_backward(i, i, o);
-}
-
int
main()
{