@@ -233,7 +233,6 @@ class device_pointer<void, Mode, Allocator>
233233 using reference = value_type &;
234234 using iterator_category = std::random_access_iterator_tag;
235235 using is_hetero = std::true_type; // required
236- using is_passed_directly = std::false_type;
237236 static constexpr sycl::access_mode mode = Mode; // required
238237
239238 device_pointer (sycl::buffer<value_type, 1 > in, std::size_t i = 0 )
@@ -280,7 +279,6 @@ class device_pointer
280279 using reference = T &;
281280 using iterator_category = std::random_access_iterator_tag;
282281 using is_hetero = std::true_type; // required
283- using is_passed_directly = std::false_type;
284282 static constexpr sycl::access_mode mode = Mode; // required
285283
286284 device_pointer (sycl::buffer<T, 1 > in, std::size_t i = 0 ) : base_type(in, i) {}
@@ -376,8 +374,11 @@ class device_pointer<void>
376374 using reference = value_type &;
377375 using const_reference = const value_type &;
378376 using iterator_category = std::random_access_iterator_tag;
379- using is_hetero = std::false_type; // required
380- using is_passed_directly = std::true_type; // required
377+ using is_hetero = std::false_type; // required
378+ friend auto is_onedpl_indirectly_device_accessible (device_pointer)
379+ -> std::true_type {
380+ return {};
381+ }
381382
382383 device_pointer (void *p) : base_type(static_cast <value_type *>(p)) {}
383384 // needed for malloc_device, count is number of bytes to allocate
@@ -420,8 +421,11 @@ class device_pointer : public device_pointer_base<T, device_pointer<T>> {
420421 using reference = T &;
421422 using const_reference = const T &;
422423 using iterator_category = std::random_access_iterator_tag;
423- using is_hetero = std::false_type; // required
424- using is_passed_directly = std::true_type; // required
424+ using is_hetero = std::false_type; // required
425+ friend auto is_onedpl_indirectly_device_accessible (device_pointer)
426+ -> std::true_type {
427+ return {};
428+ }
425429
426430 device_pointer (T *p) : base_type(p) {}
427431 // needed for malloc_device, count is number of bytes to allocate
@@ -469,7 +473,6 @@ class device_iterator : public device_pointer<T, Mode, Allocator> {
469473 using reference = T &;
470474 using iterator_category = std::random_access_iterator_tag;
471475 using is_hetero = std::true_type; // required
472- using is_passed_directly = std::false_type; // required
473476 static constexpr sycl::access_mode mode = Mode; // required
474477
475478 device_iterator () : Base() {}
@@ -563,8 +566,11 @@ template <typename T> class device_iterator : public device_pointer<T> {
563566 using pointer = typename Base::pointer;
564567 using reference = typename Base::reference;
565568 using iterator_category = std::random_access_iterator_tag;
566- using is_hetero = std::false_type; // required
567- using is_passed_directly = std::true_type; // required
569+ using is_hetero = std::false_type; // required
570+ friend auto is_onedpl_indirectly_device_accessible (device_iterator)
571+ -> std::true_type {
572+ return {};
573+ }
568574 static constexpr sycl::access_mode mode =
569575 sycl::access_mode::read_write; // required
570576
@@ -730,7 +736,10 @@ template <typename T, typename Tag> class tagged_pointer {
730736 using reference = T &;
731737 using iterator_category = std::random_access_iterator_tag;
732738 using is_hetero = ::std::false_type;
733- using is_passed_directly = std::true_type;
739+ friend auto is_onedpl_indirectly_device_accessible (tagged_pointer)
740+ -> std::true_type {
741+ return {};
742+ }
734743
735744 tagged_pointer () : m_ptr(nullptr ) {}
736745 tagged_pointer (T *ptr) : m_ptr(ptr) {}
0 commit comments