libstdc++: Implement ranges::fold_* from P2322R6
authorPatrick Palka <ppalka@redhat.com>
Fri, 14 Apr 2023 14:31:44 +0000 (10:31 -0400)
committerPatrick Palka <ppalka@redhat.com>
Fri, 14 Apr 2023 14:31:44 +0000 (10:31 -0400)
commit7639bf34fa1942b0a56a0ba441637c1ce75e1127
tree446525a4386988796861386d82cb415ef532354d
parenta87d95def0dcaad7a447e365d2f4a8edd9e00b02
libstdc++: Implement ranges::fold_* from P2322R6

libstdc++-v3/ChangeLog:

* include/bits/ranges_algo.h: Include <optional> for C++23.
(__cpp_lib_fold): Define for C++23.
(in_value_result): Likewise.
(__detail::__flipped): Likewise.
(__detail::__indirectly_binary_left_foldable_impl): Likewise.
(__detail::__indirectly_binary_left_foldable): Likewise.
(___detail:__indirectly_binary_right_foldable): Likewise.
(fold_left_with_iter_result): Likewise.
(__fold_left_with_iter_fn, fold_left_with_iter): Likewise.
(__fold_left_fn, fold_left): Likewise.
(__fold_left_first_with_iter_fn, fold_left_first_with_iter):
Likewise.
(__fold_left_first_fn, fold_left_first): Likewise.
(__fold_right_fn, fold_right): Likewise.
(__fold_right_last_fn, fold_right_last): Likewise.
* include/std/version (__cpp_lib_fold): Likewise.
* testsuite/25_algorithms/fold_left/1.cc: New test.
* testsuite/25_algorithms/fold_right/1.cc: New test.
libstdc++-v3/include/bits/ranges_algo.h
libstdc++-v3/include/std/version
libstdc++-v3/testsuite/25_algorithms/fold_left/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/25_algorithms/fold_right/1.cc [new file with mode: 0644]