@@ -77,6 +77,7 @@ class __SYCL_EXPORT UnsampledImageAccessorBaseHost {
7777protected:
7878 UnsampledImageAccessorBaseHost (const UnsampledImageAccessorImplPtr &Impl)
7979 : impl{Impl} {}
80+ friend sycl::detail::ImplUtils;
8081
8182public:
8283 UnsampledImageAccessorBaseHost (sycl::range<3 > Size, access_mode AccessMode,
@@ -97,18 +98,6 @@ class __SYCL_EXPORT UnsampledImageAccessorBaseHost {
9798 const property_list &getPropList () const ;
9899
99100protected:
100- template <class Obj >
101- friend const decltype (Obj::impl) &
102- detail::getSyclObjImpl(const Obj &SyclObject);
103-
104- template <class T >
105- friend T detail::createSyclObjFromImpl (
106- std::add_rvalue_reference_t <decltype (T::impl)> ImplObj);
107-
108- template <class T >
109- friend T detail::createSyclObjFromImpl (
110- std::add_lvalue_reference_t <const decltype (T::impl)> ImplObj);
111-
112101 UnsampledImageAccessorImplPtr impl;
113102
114103 // The function references helper methods required by GDB pretty-printers
@@ -151,6 +140,7 @@ class __SYCL_EXPORT SampledImageAccessorBaseHost {
151140protected:
152141 SampledImageAccessorBaseHost (const SampledImageAccessorImplPtr &Impl)
153142 : impl{Impl} {}
143+ friend sycl::detail::ImplUtils;
154144
155145public:
156146 SampledImageAccessorBaseHost (sycl::range<3 > Size, void *SYCLMemObject,
@@ -173,18 +163,6 @@ class __SYCL_EXPORT SampledImageAccessorBaseHost {
173163 const property_list &getPropList () const ;
174164
175165protected:
176- template <class Obj >
177- friend const decltype (Obj::impl) &
178- detail::getSyclObjImpl(const Obj &SyclObject);
179-
180- template <class T >
181- friend T detail::createSyclObjFromImpl (
182- std::add_rvalue_reference_t <decltype (T::impl)> ImplObj);
183-
184- template <class T >
185- friend T detail::createSyclObjFromImpl (
186- std::add_lvalue_reference_t <const decltype (T::impl)> ImplObj);
187-
188166 SampledImageAccessorImplPtr impl;
189167
190168 // The function references helper methods required by GDB pretty-printers
@@ -789,6 +767,7 @@ class __SYCL_EBO unsampled_image_accessor :
789767#endif // __SYCL_DEVICE_ONLY__
790768 public detail::OwnerLessBase<
791769 unsampled_image_accessor<DataT, Dimensions, AccessMode, AccessTarget>> {
770+ friend sycl::detail::ImplUtils;
792771 static_assert (std::is_same_v<DataT, int4> || std::is_same_v<DataT, uint4> ||
793772 std::is_same_v<DataT, float4> ||
794773 std::is_same_v<DataT, half4>,
@@ -940,18 +919,6 @@ class __SYCL_EBO unsampled_image_accessor :
940919 {
941920 (void )Impl;
942921 }
943-
944- template <class Obj >
945- friend const decltype (Obj::impl) &
946- detail::getSyclObjImpl(const Obj &SyclObject);
947-
948- template <class T >
949- friend T detail::createSyclObjFromImpl (
950- std::add_rvalue_reference_t <decltype (T::impl)> ImplObj);
951-
952- template <class T >
953- friend T detail::createSyclObjFromImpl (
954- std::add_lvalue_reference_t <const decltype (T::impl)> ImplObj);
955922};
956923
957924template <typename DataT, int Dimensions = 1 ,
@@ -962,6 +929,7 @@ class __SYCL_EBO host_unsampled_image_accessor
962929 : private detail::UnsampledImageAccessorBaseHost,
963930 public detail::OwnerLessBase<
964931 host_unsampled_image_accessor<DataT, Dimensions, AccessMode>> {
932+ friend sycl::detail::ImplUtils;
965933 static_assert (std::is_same_v<DataT, int4> || std::is_same_v<DataT, uint4> ||
966934 std::is_same_v<DataT, float4> ||
967935 std::is_same_v<DataT, half4>,
@@ -1082,18 +1050,6 @@ class __SYCL_EBO host_unsampled_image_accessor
10821050 host_unsampled_image_accessor (
10831051 const detail::UnsampledImageAccessorImplPtr &Impl)
10841052 : base_class{Impl} {}
1085-
1086- template <class Obj >
1087- friend const decltype (Obj::impl) &
1088- detail::getSyclObjImpl (const Obj &SyclObject);
1089-
1090- template <class T >
1091- friend T detail::createSyclObjFromImpl (
1092- std::add_rvalue_reference_t <decltype (T::impl)> ImplObj);
1093-
1094- template <class T >
1095- friend T detail::createSyclObjFromImpl (
1096- std::add_lvalue_reference_t <const decltype (T::impl)> ImplObj);
10971053};
10981054
10991055template <typename DataT, int Dimensions,
@@ -1104,6 +1060,7 @@ class __SYCL_EBO sampled_image_accessor :
11041060#endif // __SYCL_DEVICE_ONLY__
11051061 public detail::OwnerLessBase<
11061062 sampled_image_accessor<DataT, Dimensions, AccessTarget>> {
1063+ friend sycl::detail::ImplUtils;
11071064 static_assert (std::is_same_v<DataT, int4> || std::is_same_v<DataT, uint4> ||
11081065 std::is_same_v<DataT, float4> ||
11091066 std::is_same_v<DataT, half4>,
@@ -1231,25 +1188,14 @@ class __SYCL_EBO sampled_image_accessor :
12311188 {
12321189 (void )Impl;
12331190 }
1234-
1235- template <class Obj >
1236- friend const decltype (Obj::impl) &
1237- detail::getSyclObjImpl(const Obj &SyclObject);
1238-
1239- template <class T >
1240- friend T detail::createSyclObjFromImpl (
1241- std::add_rvalue_reference_t <decltype (T::impl)> ImplObj);
1242-
1243- template <class T >
1244- friend T detail::createSyclObjFromImpl (
1245- std::add_lvalue_reference_t <const decltype (T::impl)> ImplObj);
12461191};
12471192
12481193template <typename DataT, int Dimensions>
12491194class __SYCL_EBO host_sampled_image_accessor
12501195 : private detail::SampledImageAccessorBaseHost,
12511196 public detail::OwnerLessBase<
12521197 host_sampled_image_accessor<DataT, Dimensions>> {
1198+ friend sycl::detail::ImplUtils;
12531199 static_assert (std::is_same_v<DataT, int4> || std::is_same_v<DataT, uint4> ||
12541200 std::is_same_v<DataT, float4> ||
12551201 std::is_same_v<DataT, half4>,
@@ -1340,18 +1286,6 @@ class __SYCL_EBO host_sampled_image_accessor
13401286private:
13411287 host_sampled_image_accessor (const detail::SampledImageAccessorImplPtr &Impl)
13421288 : base_class{Impl} {}
1343-
1344- template <class Obj >
1345- friend const decltype (Obj::impl) &
1346- detail::getSyclObjImpl(const Obj &SyclObject);
1347-
1348- template <class T >
1349- friend T detail::createSyclObjFromImpl (
1350- std::add_rvalue_reference_t <decltype (T::impl)> ImplObj);
1351-
1352- template <class T >
1353- friend T detail::createSyclObjFromImpl (
1354- std::add_lvalue_reference_t <const decltype (T::impl)> ImplObj);
13551289};
13561290
13571291} // namespace _V1
0 commit comments