Skip to content

Commit 93a713f

Browse files
Fix issue: Brick __brick_copy specialized by _ExecutionPolicy without std::decay_t #2110
1 parent e11ac89 commit 93a713f

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

include/oneapi/dpl/internal/async_impl/glue_async_impl.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,14 @@ auto
7777
copy_async(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result,
7878
_Events&&... __dependencies)
7979
{
80+
using _DecayedExecutionPolicy = std::decay_t<_ExecutionPolicy>;
81+
8082
auto __dispatch_tag = oneapi::dpl::__internal::__select_backend(__exec, __first, __result);
8183

8284
wait_for_all(::std::forward<_Events>(__dependencies)...);
8385
auto ret_val = oneapi::dpl::__internal::__pattern_walk2_brick_async(
8486
__dispatch_tag, ::std::forward<_ExecutionPolicy>(__exec), __first, __last, __result,
85-
oneapi::dpl::__internal::__brick_copy<decltype(__dispatch_tag), _ExecutionPolicy>{});
87+
oneapi::dpl::__internal::__brick_copy<decltype(__dispatch_tag), _DecayedExecutionPolicy>{});
8688
return ret_val;
8789
}
8890

include/oneapi/dpl/pstl/glue_algorithm_impl.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -268,11 +268,13 @@ template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterato
268268
oneapi::dpl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
269269
copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result)
270270
{
271+
using _DecayedExecutionPolicy = std::decay_t<_ExecutionPolicy>;
272+
271273
auto __dispatch_tag = oneapi::dpl::__internal::__select_backend(__exec, __first, __result);
272274

273275
return oneapi::dpl::__internal::__pattern_walk2_brick(
274276
__dispatch_tag, ::std::forward<_ExecutionPolicy>(__exec), __first, __last, __result,
275-
oneapi::dpl::__internal::__brick_copy<decltype(__dispatch_tag), _ExecutionPolicy>{});
277+
oneapi::dpl::__internal::__brick_copy<decltype(__dispatch_tag), _DecayedExecutionPolicy>{});
276278
}
277279

278280
template <class _ExecutionPolicy, class _ForwardIterator1, class _Size, class _ForwardIterator2>

include/oneapi/dpl/pstl/glue_algorithm_ranges_impl.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -794,11 +794,13 @@ template <typename _ExecutionPolicy, typename _Range1, typename _Range2>
794794
oneapi::dpl::__internal::__enable_if_execution_policy<_ExecutionPolicy>
795795
copy(_ExecutionPolicy&& __exec, _Range1&& __rng, _Range2&& __result)
796796
{
797+
using _DecayedExecutionPolicy = std::decay_t<_ExecutionPolicy>;
798+
797799
auto __dispatch_tag = oneapi::dpl::__ranges::__select_backend(__exec, __rng, __result);
798800

799801
oneapi::dpl::__internal::__ranges::__pattern_walk_n(
800802
__dispatch_tag, ::std::forward<_ExecutionPolicy>(__exec),
801-
oneapi::dpl::__internal::__brick_copy<decltype(__dispatch_tag), _ExecutionPolicy>{},
803+
oneapi::dpl::__internal::__brick_copy<decltype(__dispatch_tag), _DecayedExecutionPolicy>{},
802804
views::all_read(::std::forward<_Range1>(__rng)), views::all_write(::std::forward<_Range2>(__result)));
803805
}
804806

0 commit comments

Comments
 (0)