@@ -185,6 +185,15 @@ test_device_copyable()
185
185
oneapi::dpl::__par_backend_hetero::__early_exit_find_or<policy_non_device_copyable, noop_device_copyable>>,
186
186
" __early_exit_find_or is not device copyable with device copyable types" );
187
187
188
+ // __leaf_sorter
189
+ // Note that the use of noop_device_copyable/noop_non_device_copyable is valid in this context because
190
+ // sycl::is_device_copyable specialization for __leaf_sorter does not require instantiation of
191
+ // __leaf_sorter with the provided types. See [temp.inst]/1 of C++17 spec for the details.
192
+ static_assert (
193
+ sycl::is_device_copyable_v<oneapi::dpl::__par_backend_hetero::__leaf_sorter<noop_device_copyable,
194
+ noop_device_copyable>>,
195
+ " __leaf_sorter is not device copyable with device copyable types" );
196
+
188
197
// __not_pred
189
198
static_assert (sycl::is_device_copyable_v<oneapi::dpl::__internal::__not_pred<noop_device_copyable>>,
190
199
" __not_pred is not device copyable with device copyable types" );
@@ -413,6 +422,11 @@ test_non_device_copyable()
413
422
noop_non_device_copyable>>,
414
423
" __early_exit_find_or is device copyable with non device copyable types" );
415
424
425
+ // __leaf_sorter
426
+ static_assert (!sycl::is_device_copyable_v<oneapi::dpl::__par_backend_hetero::__leaf_sorter<noop_device_copyable,
427
+ noop_non_device_copyable>>,
428
+ " __leaf_sorter is device copyable with non device copyable types" );
429
+
416
430
// __not_pred
417
431
static_assert (!sycl::is_device_copyable_v<oneapi::dpl::__internal::__not_pred<noop_non_device_copyable>>,
418
432
" __not_pred is device copyable with non device copyable types" );
0 commit comments