diff --git a/include/poolstl/algorithm b/include/poolstl/algorithm index 1c0fce8..b68eacc 100644 --- a/include/poolstl/algorithm +++ b/include/poolstl/algorithm @@ -221,7 +221,8 @@ namespace std { return; } - poolstl::internal::parallel_sort(std::forward(policy), first, last, comp, false); + poolstl::internal::parallel_sort(std::forward(policy), first, last, comp, + std::sort); } /** @@ -247,7 +248,8 @@ namespace std { return; } - poolstl::internal::parallel_sort(std::forward(policy), first, last, comp, true); + poolstl::internal::parallel_sort(std::forward(policy), first, last, comp, + std::stable_sort); } /** diff --git a/include/poolstl/internal/ttp_impl.hpp b/include/poolstl/internal/ttp_impl.hpp index 11df5e3..45eac98 100644 --- a/include/poolstl/internal/ttp_impl.hpp +++ b/include/poolstl/internal/ttp_impl.hpp @@ -158,20 +158,16 @@ namespace poolstl { * * @param stable Whether to use std::stable_sort or std::sort */ - template - void parallel_sort(ExecPolicy &&policy, RandIt first, RandIt last, Compare comp, bool stable) { + template + void parallel_sort(ExecPolicy &&policy, RandIt first, RandIt last, Compare comp, SortFunc sortfunc) { if (first == last) { return; } // Sort chunks in parallel auto futures = parallel_chunk_for_gen(std::forward(policy), first, last, - [&comp, stable] (RandIt chunk_first, RandIt chunk_last) { - if (stable) { - std::stable_sort(chunk_first, chunk_last, comp); - } else { - std::sort(chunk_first, chunk_last, comp); - } + [&comp, sortfunc] (RandIt chunk_first, RandIt chunk_last) { + sortfunc(chunk_first, chunk_last, comp); return std::make_pair(chunk_first, chunk_last); });