() && ::hipstd::is_offloadable_callable()>* = nullptr>
inline O copy_if(execution::parallel_unsequenced_policy, I fi, I li, O fo, P p)
{
::hipstd::__maybe_bind_globals();
::hipstd::warn_if_no_xnack();
return ::thrust::copy_if(::thrust::device, fi, li, fo, ::std::move(p));
}
template () || !::hipstd::is_offloadable_callable()>* = nullptr>
inline O copy_if(execution::parallel_unsequenced_policy, I fi, I li, O fo, P p)
{
if constexpr (!::hipstd::is_offloadable_iterator())
{
::hipstd::unsupported_iterator_category::iterator_category,
typename iterator_traits::iterator_category>();
}
if constexpr (!::hipstd::is_offloadable_callable())
{
::hipstd::unsupported_callable_type
();
}
return ::std::copy_if(::std::execution::par, fi, li, fo, ::std::move(p));
}
// END COPY_IF
// BEGIN COPY_N
template ()>* = nullptr>
inline O copy_n(execution::parallel_unsequenced_policy, I fi, N n, O fo)
{
::hipstd::__maybe_bind_globals();
::hipstd::warn_if_no_xnack();
return ::thrust::copy_n(::thrust::device, fi, n, fo);
}
template ()>* = nullptr>
inline O copy_n(execution::parallel_unsequenced_policy, I fi, N n, O fo)
{
::hipstd::unsupported_iterator_category::iterator_category,
typename iterator_traits::iterator_category>();
return ::std::copy_n(::std::execution::par, fi, n, fo);
}
// END COPY_N
// BEGIN MOVE
template ()>* = nullptr>
inline O move(execution::parallel_unsequenced_policy, I fi, I li, O fo)
{
::hipstd::__maybe_bind_globals();
::hipstd::warn_if_no_xnack();
return ::thrust::copy(::thrust::device, make_move_iterator(fi), make_move_iterator(li), fo);
}
template ()>* = nullptr>
inline O move(execution::parallel_unsequenced_policy, I fi, I li, O fo)
{
::hipstd::unsupported_iterator_category::iterator_category,
typename iterator_traits::iterator_category>();
return ::std::move(::std::execution::par, fi, li, fo);
}
// END MOVE
} // namespace std
#else // __HIPSTDPAR__
# error "__HIPSTDPAR__ should be defined. Please use the '--hipstdpar' compile option."
#endif // __HIPSTDPAR__