Skip to content

Commit db5bd13

Browse files
committed
[oneDPL][ranges][L1] host part, + static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{}); and usage of some predefined functors
1 parent fe14b46 commit db5bd13

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

include/oneapi/dpl/pstl/algorithm_ranges_impl.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -654,10 +654,7 @@ __pattern_mismatch(_Tag __tag, _ExecutionPolicy&& __exec, _R1&& __r1, _R2&& __r2
654654
{
655655
static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{});
656656

657-
auto __bin_pred = [__pred, __proj1, __proj2](auto&& __val1, auto&& __val2) {
658-
return std::invoke(__pred, std::invoke(__proj1, std::forward<decltype(__val1)>(__val1)),
659-
std::invoke(__proj2, std::forward<decltype(__val2)>(__val2)));
660-
};
657+
oneapi::dpl::__internal::__binary_op __bin_pred{__pred, __proj1, __proj2};
661658

662659
return oneapi::dpl::__internal::__pattern_mismatch(
663660
__tag, std::forward<_ExecutionPolicy>(__exec), std::ranges::begin(__r1),
@@ -681,9 +678,9 @@ template <typename _Tag, typename _ExecutionPolicy, typename _R, typename _Proj,
681678
auto
682679
__pattern_remove_if(_Tag __tag, _ExecutionPolicy&& __exec, _R&& __r, _Pred __pred, _Proj __proj)
683680
{
684-
auto __pred_1 = [__pred, __proj](auto&& __val) {
685-
return std::invoke(__pred, std::invoke(__proj, std::forward<decltype(__val)>(__val)));
686-
};
681+
static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{});
682+
683+
oneapi::dpl::__internal::__predicate __pred_1{__pred, __proj};
687684

688685
auto __end = std::ranges::begin(__r) + std::ranges::size(__r);
689686

@@ -722,6 +719,8 @@ template <typename _Tag, typename _ExecutionPolicy, typename _R1, typename _R2>
722719
void
723720
__pattern_swap_ranges(_Tag __tag, _ExecutionPolicy&& __exec, _R1&& __r1, _R2&& __r2)
724721
{
722+
static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{});
723+
725724
auto __end = std::ranges::begin(__r1) + std::ranges::size(__r1);
726725
oneapi::dpl::__internal::__pattern_swap(__tag, std::forward<_ExecutionPolicy>(__exec), std::ranges::begin(__r1),
727726
__end, std::ranges::begin(__r2));
@@ -738,6 +737,8 @@ template <typename _Tag, typename _ExecutionPolicy, typename _R, typename _Comp,
738737
std::ranges::borrowed_subrange_t<_R>
739738
__pattern_unique(_Tag __tag, _ExecutionPolicy&& __exec, _R&& __r, _Comp __comp, _Proj __proj)
740739
{
740+
static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{});
741+
741742
oneapi::dpl::__internal::__compare __pred_2{__comp, __proj};
742743

743744
auto __beg = std::ranges::begin(__r);
@@ -759,6 +760,8 @@ template <typename _Tag, typename _ExecutionPolicy, typename _R>
759760
std::ranges::borrowed_subrange_t<_R>
760761
__pattern_reverse(_Tag __tag, _ExecutionPolicy&& __exec, _R&& __r)
761762
{
763+
static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{});
764+
762765
auto __beg = std::ranges::begin(__r);
763766
const auto __n = std::ranges::size(__r);
764767
const auto __n_2 = __n / 2;
@@ -780,6 +783,8 @@ template <typename _Tag, typename _ExecutionPolicy, typename _R, typename _OutRa
780783
std::ranges::unique_copy_result<std::ranges::borrowed_iterator_t<_R>, std::ranges::borrowed_iterator_t<_OutRange>>
781784
__pattern_unique_copy(_Tag __tag, _ExecutionPolicy&& __exec, _R&& __r, _OutRange&& __out_r, _Comp __comp, _Proj __proj)
782785
{
786+
static_assert(__is_parallel_tag_v<_Tag> || typename _Tag::__is_vector{});
787+
783788
oneapi::dpl::__internal::__compare __pred_2{__comp, __proj};
784789

785790
auto __beg = std::ranges::begin(__r);

0 commit comments

Comments
 (0)