@@ -408,6 +408,30 @@ Sorting and Merge
408408 merge (ExecutionPolicy&& pol, R1&& r1, R2&& r2, OutR&& result, Comp comp = {},
409409 Proj1 proj1 = {}, Proj2 proj2 = {});
410410
411+ // partial_sort
412+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
413+ typename Comp = std::ranges::less, typename Proj = std::identity>
414+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
415+ std::ranges::sized_range<R> && std::sortable<std::ranges::iterator_t<R>, Comp, Proj>
416+ std::ranges::borrowed_iterator_t<R>
417+ partial_sort (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t<R> middle,
418+ Comp comp = {}, Proj proj = {});
419+
420+ // partial_sort_copy
421+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
422+ std::ranges::random_access_range R2, typename Comp = std::ranges::less,
423+ typename Proj1 = std::identity, typename Proj2 = std::identity>
424+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
425+ std::ranges::sized_range<R1> && std::ranges::sized_range<R2> &&
426+ std::indirectly_copyable<std::ranges::iterator_t<R1>, std::ranges::iterator_t<R2>> &&
427+ std::sortable<std::ranges::iterator_t<R2>, Comp, Proj2> &&
428+ std::indirect_strict_weak_order<Comp,
429+ std::projected<std::ranges::iterator_t<R1>, Proj1>,
430+ std::projected<std::ranges::iterator_t<R2>, Proj2> >
431+ std::ranges::partial_sort_copy_result<std::ranges::borrowed_iterator_t<R1>,
432+ std::ranges::borrowed_iterator_t<R2>>
433+ partial_sort_copy (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Comp comp = {},
434+ Proj1 proj1 = {}, Proj2 proj2 = {});
411435 }
412436
413437 Set operations
0 commit comments