PR libstdc++/84928 use std::move in <numeric> algorithms
authorJonathan Wakely <jwakely@redhat.com>
Fri, 6 Jul 2018 14:16:13 +0000 (15:16 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 6 Jul 2018 14:16:13 +0000 (15:16 +0100)
commit5840e3b8ff919c3ee1f9e7213ac612fe69c6f53a
tree4ea8c82daef88b270de86e93a4385101d6f28954
parentf1b3168d7f2bec7f349ec9c27f0bb5a7e2e5b543
PR libstdc++/84928 use std::move in <numeric> algorithms

P0616R0 altered the effects of the <numeric> algorithms to use std::move
on the accumulator values (resolving LWG 2055). This implements the
change for C++2a, but retains the previous behaviour for older
standards.

* include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
conditionally move, according to __cplusplus value.
(accumulate, inner_product, partial_sum, adjacent_difference): Use
_GLIBCXX_MOVE_IF_20.
* testsuite/26_numerics/accumulate/lwg2055.cc: New test.
* testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
* testsuite/26_numerics/inner_product/lwg2055.cc: New test.
* testsuite/26_numerics/partial_sum/lwg2055.cc: New test.

From-SVN: r262477
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_numeric.h
libstdc++-v3/testsuite/26_numerics/accumulate/lwg2055.cc [new file with mode: 0644]
libstdc++-v3/testsuite/26_numerics/adjacent_difference/lwg2055.cc [new file with mode: 0644]
libstdc++-v3/testsuite/26_numerics/inner_product/lwg2055.cc [new file with mode: 0644]
libstdc++-v3/testsuite/26_numerics/partial_sum/lwg2055.cc [new file with mode: 0644]