@@ -762,6 +762,37 @@ Copying Mutating Operations
762762 std::ranges::borrowed_iterator_t<OutR>>
763763 remove_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {});
764764
765+ // replace_copy
766+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
767+ std::ranges::random_access_range OutR, typename Proj = std::identity,
768+ typename T1 = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>,
769+ typename T2 = std::ranges::range_value_t<OutR>>
770+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
771+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
772+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
773+ std::indirect_binary_predicate< std::ranges::equal_to,
774+ std::projected<std::ranges::iterator_t<R>, Proj>,
775+ const T1* > &&
776+ std::indirectly_writable<std::ranges::iterator_t<OutR>, const T2&>
777+ std::ranges::replace_copy_result<std::ranges::borrowed_iterator_t<R>,
778+ std::ranges::borrowed_iterator_t<OutR>>
779+ replace_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, const T1& old_value,
780+ const T2& new_value, Proj proj = {});
781+
782+ // replace_copy_if
783+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
784+ std::ranges::random_access_range OutR,
785+ class T = std::ranges::range_value_t<OutR>, typename Proj = std::identity,
786+ std::indirect_unary_predicate< std::projected<std::ranges::iterator_t<R>, Proj> > Pred,
787+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
788+ std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
789+ std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
790+ std::indirectly_writable<std::ranges::iterator_t<OutR>, const T&>
791+ std::ranges::replace_copy_if_result<std::ranges::borrowed_iterator_t<R>,
792+ std::ranges::borrowed_iterator_t<OutR>>
793+ replace_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, const T& new_value,
794+ Proj proj = {});
795+
765796 // reverse_copy
766797 template <typename ExecutionPolicy, std::ranges::random_access_range R,
767798 std::ranges::random_access_range OutR>
0 commit comments