@@ -429,6 +429,68 @@ Copying Mutating Operations
429
429
std::ranges::borrowed_iterator_t<OutR>>
430
430
move (ExecutionPolicy&& pol, R&& r, OutR&& result);
431
431
432
+ // partition_copy
433
+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
434
+ std::ranges::random_access_range OutR1, std::ranges::random_access_range OutR2,
435
+ typename Proj = std::identity,
436
+ std::indirect_unary_predicate< std::projected<std::ranges::iterator_t<R>, Proj> > Pred>
437
+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
438
+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR1> &&
439
+ std::ranges::sized_range<OutR2> &&
440
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR1>> &&
441
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR2>>
442
+ std::ranges::partition_copy_result<std::ranges::borrowed_iterator_t<R>,
443
+ std::ranges::borrowed_iterator_t<OutR1>,
444
+ std::ranges::borrowed_iterator_t<OutR2>>
445
+ partition_copy (ExecutionPolicy&& pol, R&& r, OutR1&& out_true_r, OutR2&& out_false_r,
446
+ Pred pred, Proj proj = {});
447
+
448
+ // remove_copy
449
+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
450
+ std::ranges::random_access_range OutR, typename Proj = std::identity,
451
+ typename T = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>
452
+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
453
+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
454
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
455
+ std::indirect_binary_predicate< std::ranges::equal_to,
456
+ std::projected<std::ranges::iterator_t<R>, Proj>,
457
+ const T* >
458
+ std::ranges::remove_copy_result<std::ranges::borrowed_iterator_t<R>,
459
+ std::ranges::borrowed_iterator_t<OutR>>
460
+ remove_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, const T& value, Proj proj = {});
461
+
462
+ // remove_copy_if
463
+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
464
+ std::ranges::random_access_range OutR, typename Proj = std::identity,
465
+ std::indirect_unary_predicate< std::projected<std::ranges::iterator_t<R>, Proj> > Pred>
466
+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
467
+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
468
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>>
469
+ std::ranges::remove_copy_if_result<std::ranges::borrowed_iterator_t<R>,
470
+ std::ranges::borrowed_iterator_t<OutR>>
471
+ remove_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {});
472
+
473
+ // reverse_copy
474
+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
475
+ std::ranges::random_access_range OutR>
476
+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
477
+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
478
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>>
479
+ std::ranges::reverse_copy_result<std::ranges::borrowed_iterator_t<R>,
480
+ std::ranges::borrowed_iterator_t<OutR>>
481
+ reverse_copy (ExecutionPolicy&& pol, R&& r, OutR&& result);
482
+
483
+ // rotate_copy
484
+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
485
+ std::ranges::random_access_range OutR>
486
+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
487
+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
488
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>>
489
+ std::ranges::rotate_copy_result<std::ranges::borrowed_iterator_t<R>,
490
+ std::ranges::borrowed_iterator_t<OutR>>
491
+ rotate_copy (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t<R> middle,
492
+ OutR&& result);
493
+
432
494
// transform (unary)
433
495
template <typename ExecutionPolicy, std::ranges::random_access_range R,
434
496
std::ranges::random_access_range OutR, std::copy_constructible Fn,
@@ -458,6 +520,18 @@ Copying Mutating Operations
458
520
transform (ExecutionPolicy&& pol, R1&& r1, R2&& r2, OutR&& result, Fn binary_op,
459
521
Proj1 proj1 = {}, Proj2 proj2 = {});
460
522
523
+ // unique_copy
524
+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
525
+ std::ranges::random_access_range OutR, typename Proj = std::identity,
526
+ std::indirect_equivalence_relation< std::projected<std::ranges::iterator_t<R>, Proj> >
527
+ Comp = std::ranges::equal_to>
528
+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
529
+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
530
+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>>
531
+ std::ranges::unique_copy_result<std::ranges::borrowed_iterator_t<R>,
532
+ std::ranges::borrowed_iterator_t<OutR>>
533
+ unique_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, Comp comp = {}, Proj proj = {});
534
+
461
535
}
462
536
463
537
In-place Mutating Operations
0 commit comments