Skip to content

Commit 256c3ec

Browse files
[oneDPL][ranges] Add remove_copy and remove_copy_if (#639)
1 parent 490fc12 commit 256c3ec

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

source/elements/oneDPL/source/parallel_api/parallel_range_api.rst

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,31 @@ Copying Mutating Operations
564564
std::ranges::borrowed_iterator_t<OutR>>
565565
move (ExecutionPolicy&& pol, R&& r, OutR&& result);
566566
567+
// remove_copy
568+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
569+
std::ranges::random_access_range OutR, typename Proj = std::identity,
570+
typename T = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>
571+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
572+
std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
573+
std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
574+
std::indirect_binary_predicate< std::ranges::equal_to,
575+
std::projected<std::ranges::iterator_t<R>, Proj>,
576+
const T* >
577+
std::ranges::remove_copy_result<std::ranges::borrowed_iterator_t<R>,
578+
std::ranges::borrowed_iterator_t<OutR>>
579+
remove_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, const T& value, Proj proj = {});
580+
581+
// remove_copy_if
582+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
583+
std::ranges::random_access_range OutR, typename Proj = std::identity,
584+
std::indirect_unary_predicate< std::projected<std::ranges::iterator_t<R>, Proj> > Pred>
585+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
586+
std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
587+
std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>>
588+
std::ranges::remove_copy_if_result<std::ranges::borrowed_iterator_t<R>,
589+
std::ranges::borrowed_iterator_t<OutR>>
590+
remove_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {});
591+
567592
// reverse_copy
568593
template <typename ExecutionPolicy, std::ranges::random_access_range R,
569594
std::ranges::random_access_range OutR>

0 commit comments

Comments
 (0)