@@ -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);
0 commit comments