From 8ded585239a77a25382ede301a07340b53fb6a26 Mon Sep 17 00:00:00 2001 From: Dmitriy Sobolev Date: Fri, 19 Sep 2025 16:08:52 +0100 Subject: [PATCH 1/2] Add replace_copy and replace_copy_if --- .../parallel_api/parallel_range_api.rst | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst index 20251dcad..f9c2e78d0 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -535,6 +535,36 @@ Copying Mutating Operations std::ranges::borrowed_iterator_t> move (ExecutionPolicy&& pol, R&& r, OutR&& result); + // replace_copy + template , Proj>>, + typename T2 = std::ranges::range_value_t> + + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + indirectly_copyable, std::ranges::iterator_t> && + std::indirect_binary_predicate< std::ranges::equal_to, + std::projected, Proj>, + const T1* > && + std::indirectly_writable, const T2&> + std::ranges::replace_copy_result, + std::ranges::borrowed_iterator_t> + replace_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, const T1& old_value, + const T2& new_value, Proj proj = {}); + + // replace_copy_if + template , Proj> > Pred, + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + std::indirectly_copyable, std::ranges::iterator_t> && + std::indirectly_writable, const T&> + std::ranges::replace_copy_if_result, + std::ranges::borrowed_iterator_t> + replace_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {}); + // reverse_copy template From 9c584a6f6fa0233c68fcc0815cca63e42569067d Mon Sep 17 00:00:00 2001 From: Dmitriy Sobolev Date: Fri, 19 Sep 2025 16:21:57 +0100 Subject: [PATCH 2/2] Corrections --- .../oneDPL/source/parallel_api/parallel_range_api.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst index f9c2e78d0..201ca512c 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -543,7 +543,7 @@ Copying Mutating Operations requires oneapi::dpl::is_execution_policy_v> && std::ranges::sized_range && std::ranges::sized_range && - indirectly_copyable, std::ranges::iterator_t> && + std::indirectly_copyable, std::ranges::iterator_t> && std::indirect_binary_predicate< std::ranges::equal_to, std::projected, Proj>, const T1* > && @@ -555,7 +555,8 @@ Copying Mutating Operations // replace_copy_if template , typename Proj = std::identity, std::indirect_unary_predicate< std::projected, Proj> > Pred, requires oneapi::dpl::is_execution_policy_v> && std::ranges::sized_range && std::ranges::sized_range && @@ -563,7 +564,8 @@ Copying Mutating Operations std::indirectly_writable, const T&> std::ranges::replace_copy_if_result, std::ranges::borrowed_iterator_t> - replace_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {}); + replace_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, const T& new_value, + Proj proj = {}); // reverse_copy template