https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91495
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Author: redi Date: Tue Aug 20 21:03:11 2019 New Revision: 274754 URL: https://gcc.gnu.org/viewcvs?rev=274754&root=gcc&view=rev Log: Implement new serial algorithms from Parallelism TS (P0024R2) These new (non-parallel) algorithms were added to C++17 along with the parallel algorithms, but were missing from libstdc++. Backported for PR libstdc++/91495, replacing the use of std::__size_to_integer which is not present on the branch. Backport from mainline 2019-06-19 Jonathan Wakely <jwak...@redhat.com> * include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value category used in invocable check. (reduce(Iter, Iter, T)): Pass initial value as rvalue. * testsuite/26_numerics/reduce/2.cc: New test. Backport from mainline 2019-06-18 Jonathan Wakely <jwak...@redhat.com> * include/bits/algorithmfwd.h: Change title of doc group. * include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from P0024R2. * include/bits/stl_numeric.h: Define doc group and add algos to it. * include/std/numeric (__is_random_access_iter): New internal trait. (reduce, transform_reduce, exclusive_scan, inclusive_scan) (transform_exclusive_scan, transform_inclusive_scan): Likewise. * testsuite/25_algorithms/for_each/for_each_n.cc: New test. * testsuite/26_numerics/exclusive_scan/1.cc: New test. * testsuite/26_numerics/inclusive_scan/1.cc: New test. * testsuite/26_numerics/reduce/1.cc: New test. * testsuite/26_numerics/transform_exclusive_scan/1.cc: New test. * testsuite/26_numerics/transform_inclusive_scan/1.cc: New test. * testsuite/26_numerics/transform_reduce/1.cc: New test. * testsuite/util/testsuite_iterators.h (test_container::size()): New member function. Added: branches/gcc-9-branch/libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/exclusive_scan/ branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/inclusive_scan/ branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/reduce/ branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/reduce/1.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/reduce/2.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/ branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/ branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/transform_reduce/ branches/gcc-9-branch/libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc Modified: branches/gcc-9-branch/libstdc++-v3/ChangeLog branches/gcc-9-branch/libstdc++-v3/include/bits/algorithmfwd.h branches/gcc-9-branch/libstdc++-v3/include/bits/stl_algo.h branches/gcc-9-branch/libstdc++-v3/include/bits/stl_numeric.h branches/gcc-9-branch/libstdc++-v3/include/std/numeric branches/gcc-9-branch/libstdc++-v3/testsuite/util/testsuite_iterators.h