summaryrefslogtreecommitdiff
path: root/libcxx/include/algorithm
diff options
context:
space:
mode:
authorNikolas Klauser <nikolasklauser@berlin.de>2023-06-09 13:45:34 -0700
committerNikolas Klauser <nikolasklauser@berlin.de>2023-06-13 07:55:06 -0700
commitcd916108b4c6fea5908deed6066d5d4720cf7659 (patch)
tree5369738071dabafe381d47baf920d87b86494334 /libcxx/include/algorithm
parentdbbd6276f20aa8bcf472f12a16a5a895ff797313 (diff)
[libc++][PSTL] Implement std::generate{,_n}
Reviewed By: #libc, ldionne Spies: ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D152581
Diffstat (limited to 'libcxx/include/algorithm')
-rw-r--r--libcxx/include/algorithm10
1 files changed, 10 insertions, 0 deletions
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
index 2ceedc97ae39..fefa98a67384 100644
--- a/libcxx/include/algorithm
+++ b/libcxx/include/algorithm
@@ -401,6 +401,11 @@ namespace ranges {
requires invocable<F&> && indirectly_writable<O, invoke_result_t<F&>>
constexpr O generate(O first, S last, F gen); // since C++20
+ template<class ExecutionPolicy, class ForwardIterator, class Generator>
+ void generate(ExecutionPolicy&& exec,
+ ForwardIterator first, ForwardIterator last,
+ Generator gen); // since C++17
+
template<class R, copy_constructible F>
requires invocable<F&> && output_range<R, invoke_result_t<F&>>
constexpr borrowed_iterator_t<R> generate(R&& r, F gen); // since C++20
@@ -409,6 +414,10 @@ namespace ranges {
requires invocable<F&> && indirectly_writable<O, invoke_result_t<F&>>
constexpr O generate_n(O first, iter_difference_t<O> n, F gen); // since C++20
+ template<class ExecutionPolicy, class ForwardIterator, class Size, class Generator>
+ ForwardIterator generate_n(ExecutionPolicy&& exec,
+ ForwardIterator first, Size n, Generator gen); // since C++17
+
template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2,
class Pred = ranges::equal_to, class Proj1 = identity, class Proj2 = identity>
requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>
@@ -1806,6 +1815,7 @@ template <class BidirectionalIterator, class Compare>
#include <__algorithm/pstl_fill.h>
#include <__algorithm/pstl_find.h>
#include <__algorithm/pstl_for_each.h>
+#include <__algorithm/pstl_generate.h>
#include <__algorithm/pstl_merge.h>
#include <__algorithm/pstl_replace.h>
#include <__algorithm/pstl_stable_sort.h>