@@ -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