https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84928
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Author: redi Date: Fri Jul 6 14:16:13 2018 New Revision: 262477 URL: https://gcc.gnu.org/viewcvs?rev=262477&root=gcc&view=rev Log: 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. Added: trunk/libstdc++-v3/testsuite/26_numerics/accumulate/lwg2055.cc trunk/libstdc++-v3/testsuite/26_numerics/adjacent_difference/lwg2055.cc trunk/libstdc++-v3/testsuite/26_numerics/inner_product/lwg2055.cc trunk/libstdc++-v3/testsuite/26_numerics/partial_sum/lwg2055.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_numeric.h