diff options
author | Patrick Palka <ppalka@redhat.com> | 2021-08-02 15:30:15 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2021-08-02 15:30:15 -0400 |
commit | 14d8a5ae472ca5743016f37da2dd4770d83dea21 (patch) | |
tree | b2f302b2cbf13dc9d6d116f9dc15da7bf6805548 /libstdc++-v3/testsuite/25_algorithms | |
parent | 4414057186b227edf5b5efa527732bfcdf39d575 (diff) |
libstdc++: Add missing std::move to ranges::copy/move/reverse_copy [PR101599]
In passing, this also renames the template parameter _O2 to _Out2 in
ranges::partition_copy and uglifies two of its function parameters,
out_true and out_false.
PR libstdc++/101599
libstdc++-v3/ChangeLog:
* include/bits/ranges_algo.h (__reverse_copy_fn::operator()):
Add missing std::move in return statement.
(__partition_copy_fn::operator()): Rename templtae parameter
_O2 to _Out2. Uglify function parameters out_true and out_false.
* include/bits/ranges_algobase.h (__copy_or_move): Add missing
std::move to recursive call that unwraps a __normal_iterator
output iterator.
* testsuite/25_algorithms/copy/constrained.cc (test06): New test.
* testsuite/25_algorithms/move/constrained.cc (test05): New test.
Diffstat (limited to 'libstdc++-v3/testsuite/25_algorithms')
-rw-r--r-- | libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc | 13 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/25_algorithms/move/constrained.cc | 13 |
2 files changed, 26 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc index 77ecf99d5b1..a05948a49c6 100644 --- a/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc +++ b/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc @@ -26,6 +26,7 @@ using __gnu_test::test_container; using __gnu_test::test_range; using __gnu_test::input_iterator_wrapper; +using __gnu_test::input_iterator_wrapper_nocopy; using __gnu_test::output_iterator_wrapper; using __gnu_test::forward_iterator_wrapper; @@ -214,6 +215,17 @@ test05() return ok; } +void +test06() +{ + // PR libstdc++/101599 + int x[] = {1,2,3}; + test_range<int, input_iterator_wrapper_nocopy> rx(x); + std::vector<int> v(4, 0); + ranges::copy(rx, v.begin()); + VERIFY( ranges::equal(v, (int[]){1,2,3,0}) ); +} + int main() { @@ -222,4 +234,5 @@ main() static_assert(test03()); test04(); static_assert(test05()); + test06(); } diff --git a/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc index 1cdfbdf23bc..2ce27b663a2 100644 --- a/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc +++ b/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc @@ -26,6 +26,7 @@ using __gnu_test::test_container; using __gnu_test::test_range; using __gnu_test::input_iterator_wrapper; +using __gnu_test::input_iterator_wrapper_nocopy; using __gnu_test::output_iterator_wrapper; using __gnu_test::forward_iterator_wrapper; @@ -193,6 +194,17 @@ test04() VERIFY( ranges::count(y, 0, &X::moved) == 6 ); } +void +test05() +{ + // PR libstdc++/101599 + int x[] = {1,2,3}; + test_range<int, input_iterator_wrapper_nocopy> rx(x); + std::vector<int> v(4, 0); + ranges::move(rx, v.begin()); + VERIFY( ranges::equal(v, (int[]){1,2,3,0}) ); +} + int main() { @@ -200,4 +212,5 @@ main() test02(); static_assert(test03()); test04(); + test05(); } |