1919#include < sycl/ext/oneapi/properties/property_value.hpp>
2020#include < sycl/pointers.hpp>
2121
22- #include < sycl/detail/boost/mp11/algorithm.hpp>
23-
2422#include < cstddef>
2523#include < string_view>
2624#include < tuple>
@@ -56,16 +54,10 @@ template <typename... Ts>
5654using contains_alignment =
5755 detail::ContainsProperty<alignment_key, std::tuple<Ts...>>;
5856
59- // properties filter
60- template <typename property_list, template <class ...> typename filter>
61- using PropertiesFilter =
62- sycl::detail::boost::mp11::mp_copy_if<property_list, filter>;
63-
6457// filter properties that are applied on annotations
65- template <typename ... Props>
66- using annotation_filter =
67- properties<PropertiesFilter<detail::properties_type_list<Props...>,
68- propagateToPtrAnnotation>>;
58+ template <typename PropertyListTy>
59+ using annotation_filter = decltype (filter_properties<propagateToPtrAnnotation>(
60+ std::declval<PropertyListTy>()));
6961} // namespace detail
7062
7163template <typename I, typename P> struct annotationHelper {};
@@ -110,8 +102,8 @@ class annotated_ref<T, detail::properties_t<Props...>> {
110102 // implicit conversion with annotaion
111103 operator T () const {
112104#ifdef __SYCL_DEVICE_ONLY__
113- return annotationHelper<T, detail::annotation_filter<Props...>>:: load (
114- m_Ptr);
105+ return annotationHelper<
106+ T, detail::annotation_filter< property_list_t >>:: load ( m_Ptr);
115107#else
116108 return *m_Ptr;
117109#endif
@@ -121,8 +113,8 @@ class annotated_ref<T, detail::properties_t<Props...>> {
121113 template <class O , typename = std::enable_if_t <!detail::is_ann_ref_v<O>>>
122114 T operator =(O &&Obj) const {
123115#ifdef __SYCL_DEVICE_ONLY__
124- return annotationHelper<T, detail::annotation_filter<Props...>>:: store (
125- m_Ptr, Obj);
116+ return annotationHelper<
117+ T, detail::annotation_filter< property_list_t >>:: store ( m_Ptr, Obj);
126118#else
127119 return *m_Ptr = std::forward<O>(Obj);
128120#endif
@@ -387,8 +379,8 @@ __SYCL_TYPE(annotated_ptr) annotated_ptr<T, detail::properties_t<Props...>> {
387379
388380 T *get () const noexcept {
389381#ifdef __SYCL_DEVICE_ONLY__
390- return annotationHelper<T, detail::annotation_filter<Props...>>:: annotate (
391- m_Ptr);
382+ return annotationHelper<
383+ T, detail::annotation_filter< property_list_t >>:: annotate ( m_Ptr);
392384#else
393385 return m_Ptr;
394386#endif
0 commit comments