16 #include <type_traits>
20 inline namespace _V1 {
23 namespace experimental {
25 template <
typename T,
typename PropertyListT>
class annotated_ptr;
29 template <sycl::usm::alloc Kind>
32 std::integral_constant<sycl::usm::alloc, Kind>>;
35 template <sycl::usm::alloc Kind>
43 template <
typename T, sycl::usm::alloc Kind>
45 : std::bool_constant<std::is_pointer<T>::value> {};
47 template <
typename T,
typename PropertyListT>
52 template <sycl::usm::alloc Kind>
54 static constexpr
const char *
name =
"sycl-usm-kind";
59 template <
typename... Props>
62 std::tuple<Props...>> {};
64 template <
typename PropertyListT>
struct IsUsmKindHost : std::false_type {};
65 template <
typename... Props>
68 std::tuple<Props...>> {};
71 template <
typename... Props>
74 std::tuple<Props...>> {};
constexpr usm_kind_key::value_t< sycl::usm::alloc::host > usm_kind_host
friend class annotated_ptr
constexpr usm_kind_key::value_t< Kind > usm_kind
constexpr usm_kind_key::value_t< sycl::usm::alloc::shared > usm_kind_shared
constexpr usm_kind_key::value_t< sycl::usm::alloc::device > usm_kind_device