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..e2ace8d89 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -34,8 +34,8 @@ The following differences to the standard serial C++ range algorithms apply: In that case, the returned value contains iterators pointing to the positions past the last elements processed according to the algorithm semantics. - ``for_each`` does not return its function object. -- The return type of ``reverse_copy`` is ``std::ranges::in_in_out_result`` - rather than ``std::ranges::reverse_copy_result``. +- The return type of ``reverse_copy`` and ``rotate_copy`` is ``std::ranges::in_in_out_result`` + rather than ``std::ranges::reverse_copy_result`` and ``std::ranges::rotate_copy_result``, respectively. The semantics of the returned value are as specified in `P3709R2 `_. - ``destroy`` is not marked with ``noexcept``. @@ -546,6 +546,18 @@ Copying Mutating Operations std::ranges::borrowed_iterator_t> reverse_copy (ExecutionPolicy&& pol, R&& r, OutR&& result); + // rotate_copy + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + std::indirectly_copyable, std::ranges::iterator_t> + std::ranges::in_in_out_result, + std::ranges::borrowed_iterator_t, + std::ranges::borrowed_iterator_t> + rotate_copy (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t middle, + OutR&& result); + // transform (unary) template reverse (ExecutionPolicy&& pol, R&& r); + // rotate + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable> + std::ranges::borrowed_subrange_t + rotate (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t middle); + // swap_ranges template