@@ -373,6 +373,31 @@ Sorting and Merge
373373 std::ranges::borrowed_iterator_t<R>
374374 stable_sort (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {});
375375
376+ // partial_sort
377+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
378+ typename Comp = std::ranges::less, typename Proj = std::identity>
379+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
380+ std::ranges::sized_range<R> && std::sortable<std::ranges::iterator_t<R>, Comp, Proj>
381+ std::ranges::borrowed_iterator_t<R>
382+ partial_sort (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t<R> middle,
383+ Comp comp = {}, Proj proj = {});
384+
385+ // partial_sort_copy
386+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
387+ std::ranges::random_access_range R2, typename Comp = std::ranges::less,
388+ typename Proj1 = std::identity, typename Proj2 = std::identity>
389+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
390+ std::ranges::sized_range<R1> && std::ranges::sized_range<R2> &&
391+ std::indirectly_copyable<std::ranges::iterator_t<R1>, std::ranges::iterator_t<R2>> &&
392+ std::sortable<std::ranges::iterator_t<R2>, Comp, Proj2> &&
393+ std::indirect_strict_weak_order<Comp,
394+ std::projected<std::ranges::iterator_t<R1>, Proj1>,
395+ std::projected<std::ranges::iterator_t<R2>, Proj2> >
396+ std::ranges::partial_sort_copy_result<std::ranges::borrowed_iterator_t<R1>,
397+ std::ranges::borrowed_iterator_t<R2>>
398+ partial_sort_copy (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Comp comp = {},
399+ Proj1 proj1 = {}, Proj2 proj2 = {});
400+
376401 // is_sorted
377402 template <typename ExecutionPolicy, std::ranges::random_access_range R,
378403 typename Proj = std::identity,
@@ -408,30 +433,6 @@ Sorting and Merge
408433 merge (ExecutionPolicy&& pol, R1&& r1, R2&& r2, OutR&& result, Comp comp = {},
409434 Proj1 proj1 = {}, Proj2 proj2 = {});
410435
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 = {});
435436 }
436437
437438 Set operations
0 commit comments