Skip to content

Commit a4b4a86

Browse files
Separate core fix into independent PR and restore temporary workaround
1 parent 865d418 commit a4b4a86

2 files changed

Lines changed: 15 additions & 22 deletions

File tree

libs/core/algorithms/include/hpx/parallel/algorithms/minmax.hpp

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,7 @@ namespace hpx::parallel {
404404
return it;
405405

406406
using element_type = hpx::traits::proxy_value_t<
407-
std::decay_t<hpx::util::invoke_result_t<Proj,
408-
typename std::iterator_traits<FwdIter>::reference>>>;
407+
typename std::iterator_traits<FwdIter>::value_type>;
409408

410409
auto smallest = it;
411410

@@ -443,9 +442,9 @@ namespace hpx::parallel {
443442

444443
auto smallest = *it;
445444

446-
using element_type = hpx::traits::proxy_value_t<
447-
std::decay_t<hpx::util::invoke_result_t<Proj,
448-
typename std::iterator_traits<Iter>::reference>>>;
445+
using element_type =
446+
hpx::traits::proxy_value_t<typename std::iterator_traits<
447+
decltype(smallest)>::value_type>;
449448

450449
element_type value = HPX_INVOKE(proj, *smallest);
451450
util::loop_n<std::decay_t<ExPolicy>>(
@@ -475,8 +474,7 @@ namespace hpx::parallel {
475474
return first;
476475

477476
using element_type = hpx::traits::proxy_value_t<
478-
std::decay_t<hpx::util::invoke_result_t<Proj,
479-
typename std::iterator_traits<FwdIter>::reference>>>;
477+
typename std::iterator_traits<FwdIter>::value_type>;
480478

481479
auto smallest = first;
482480

@@ -559,8 +557,7 @@ namespace hpx::parallel {
559557
return it;
560558

561559
using element_type = hpx::traits::proxy_value_t<
562-
std::decay_t<hpx::util::invoke_result_t<Proj,
563-
typename std::iterator_traits<FwdIter>::reference>>>;
560+
typename std::iterator_traits<FwdIter>::value_type>;
564561

565562
auto largest = it;
566563

@@ -597,9 +594,9 @@ namespace hpx::parallel {
597594

598595
auto largest = *it;
599596

600-
using element_type = hpx::traits::proxy_value_t<
601-
std::decay_t<hpx::util::invoke_result_t<Proj,
602-
typename std::iterator_traits<Iter>::reference>>>;
597+
using element_type =
598+
hpx::traits::proxy_value_t<typename std::iterator_traits<
599+
decltype(largest)>::value_type>;
603600

604601
element_type value = HPX_INVOKE(proj, *largest);
605602
util::loop_n<std::decay_t<ExPolicy>>(
@@ -629,8 +626,7 @@ namespace hpx::parallel {
629626
return first;
630627

631628
using element_type = hpx::traits::proxy_value_t<
632-
std::decay_t<hpx::util::invoke_result_t<Proj,
633-
typename std::iterator_traits<FwdIter>::reference>>>;
629+
typename std::iterator_traits<FwdIter>::value_type>;
634630

635631
auto largest = first;
636632

@@ -715,8 +711,7 @@ namespace hpx::parallel {
715711
return result;
716712

717713
using element_type = hpx::traits::proxy_value_t<
718-
std::decay_t<hpx::util::invoke_result_t<Proj,
719-
typename std::iterator_traits<FwdIter>::reference>>>;
714+
typename std::iterator_traits<FwdIter>::value_type>;
720715

721716
element_type min_value = HPX_INVOKE(proj, *it);
722717
element_type max_value = min_value;
@@ -757,8 +752,7 @@ namespace hpx::parallel {
757752
return *it;
758753

759754
using element_type = hpx::traits::proxy_value_t<
760-
std::decay_t<hpx::util::invoke_result_t<Proj,
761-
typename std::iterator_traits<Iter>::reference>>>;
755+
typename std::iterator_traits<Iter>::value_type>;
762756

763757
auto result = *it;
764758

@@ -806,8 +800,7 @@ namespace hpx::parallel {
806800
}
807801

808802
using element_type = hpx::traits::proxy_value_t<
809-
std::decay_t<hpx::util::invoke_result_t<Proj,
810-
typename std::iterator_traits<FwdIter>::reference>>>;
803+
typename std::iterator_traits<FwdIter>::value_type>;
811804

812805
element_type min_value = HPX_INVOKE(proj, *min);
813806
element_type max_value = HPX_INVOKE(proj, *max);

libs/core/algorithms/include/hpx/parallel/algorithms/nth_element.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,8 @@ namespace hpx::parallel {
194194
if (nth == first)
195195
{
196196
RandomIt it = detail::min_element<RandomIt>().call(
197-
hpx::execution::seq, first, end, HPX_FORWARD(Compare, comp),
198-
HPX_FORWARD(Proj, proj));
197+
hpx::execution::seq, first, end,
198+
wrapped_comp_type(comp, proj), hpx::identity_v);
199199

200200
if (it != first)
201201
{

0 commit comments

Comments
 (0)