]> git.ipfire.org Git - thirdparty/gcc.git/commit
PR libstdc++/84928 use std::move in <numeric> algorithms
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Jul 2018 14:16:13 +0000 (14:16 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Jul 2018 14:16:13 +0000 (14:16 +0000)
commit4e6aac30df586f45458545b8695a53d4acd77db7
tree4ea8c82daef88b270de86e93a4385101d6f28954
parent669d54f7dd1314ace892fc874c272aa3c69dc82d
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262477 138bc75d-0d04-0410-961f-82ee72b054a4
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]