@@ -1223,42 +1223,69 @@ class accessor :
1223
1223
1224
1224
#if __cplusplus > 201402L
1225
1225
1226
- template <typename DataT, int Dimensions, typename AllocatorT, typename ... Ts >
1227
- accessor (buffer<DataT, Dimensions, AllocatorT>, Ts... )
1226
+ template <typename DataT, int Dimensions, typename AllocatorT>
1227
+ accessor (buffer<DataT, Dimensions, AllocatorT>)
1228
1228
->accessor<DataT, Dimensions, access::mode::read_write,
1229
1229
target::global_buffer, access::placeholder::true_t>;
1230
1230
1231
- template <typename DataT, int Dimensions, typename AllocatorT, typename ... Ts>
1232
- accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Ts...)
1233
- ->accessor<DataT, Dimensions, access::mode::read_write,
1234
- target::global_buffer, access::placeholder::false_t>;
1231
+ template <typename DataT, int Dimensions, typename AllocatorT, typename Type1>
1232
+ accessor (buffer<DataT, Dimensions, AllocatorT>, Type1)
1233
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type1, Type1>(),
1234
+ detail::deduceAccessTarget<Type1, Type1>(target::global_buffer),
1235
+ access::placeholder::true_t>;
1235
1236
1236
1237
template <typename DataT, int Dimensions, typename AllocatorT,
1237
- access_mode AccessMode , typename ... Ts >
1238
- accessor (buffer<DataT, Dimensions, AllocatorT>, Ts..., mode_tag_t <AccessMode>,
1239
- property_list = {})
1240
- ->accessor<DataT, Dimensions, AccessMode, target::global_buffer,
1238
+ typename Type1 , typename Type2 >
1239
+ accessor (buffer<DataT, Dimensions, AllocatorT>, Type1, Type2)
1240
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type1, Type2>(),
1241
+ detail::deduceAccessTarget<Type1, Type2>( target::global_buffer) ,
1241
1242
access::placeholder::true_t>;
1242
1243
1243
1244
template <typename DataT, int Dimensions, typename AllocatorT,
1244
- access_mode AccessMode , typename ... Ts >
1245
- accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Ts...,
1246
- mode_tag_t <AccessMode>, property_list = {})
1247
- ->accessor<DataT, Dimensions, AccessMode, target::global_buffer,
1248
- access::placeholder::false_t >;
1245
+ typename Type1 , typename Type2, typename Type3 >
1246
+ accessor (buffer<DataT, Dimensions, AllocatorT>, Type1, Type2, Type3)
1247
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type2, Type3>(),
1248
+ detail::deduceAccessTarget<Type2, Type3>( target::global_buffer) ,
1249
+ access::placeholder::true_t >;
1249
1250
1250
1251
template <typename DataT, int Dimensions, typename AllocatorT,
1251
- access_mode AccessMode, target AccessTarget , typename ... Ts >
1252
- accessor (buffer<DataT, Dimensions, AllocatorT>, Ts...,
1253
- mode_target_tag_t <AccessMode, AccessTarget>, property_list = {})
1254
- ->accessor<DataT, Dimensions, AccessMode, AccessTarget ,
1252
+ typename Type1, typename Type2 , typename Type3, typename Type4 >
1253
+ accessor (buffer<DataT, Dimensions, AllocatorT>, Type1, Type2, Type3, Type4)
1254
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type3, Type4>(),
1255
+ detail::deduceAccessTarget<Type3, Type4>(target::global_buffer) ,
1255
1256
access::placeholder::true_t>;
1256
1257
1258
+ template <typename DataT, int Dimensions, typename AllocatorT>
1259
+ accessor (buffer<DataT, Dimensions, AllocatorT>, handler)
1260
+ ->accessor<DataT, Dimensions, access::mode::read_write,
1261
+ target::global_buffer, access::placeholder::false_t>;
1262
+
1263
+ template <typename DataT, int Dimensions, typename AllocatorT, typename Type1>
1264
+ accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Type1)
1265
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type1, Type1>(),
1266
+ detail::deduceAccessTarget<Type1, Type1>(target::global_buffer),
1267
+ access::placeholder::false_t>;
1268
+
1257
1269
template <typename DataT, int Dimensions, typename AllocatorT,
1258
- access_mode AccessMode, target AccessTarget, typename ... Ts>
1259
- accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Ts...,
1260
- mode_target_tag_t <AccessMode, AccessTarget>, property_list = {})
1261
- ->accessor<DataT, Dimensions, AccessMode, AccessTarget,
1270
+ typename Type1, typename Type2>
1271
+ accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Type1, Type2)
1272
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type1, Type2>(),
1273
+ detail::deduceAccessTarget<Type1, Type2>(target::global_buffer),
1274
+ access::placeholder::false_t>;
1275
+
1276
+ template <typename DataT, int Dimensions, typename AllocatorT,
1277
+ typename Type1, typename Type2, typename Type3>
1278
+ accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Type1, Type2, Type3)
1279
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type2, Type3>(),
1280
+ detail::deduceAccessTarget<Type2, Type3>(target::global_buffer),
1281
+ access::placeholder::false_t>;
1282
+
1283
+ template <typename DataT, int Dimensions, typename AllocatorT,
1284
+ typename Type1, typename Type2, typename Type3, typename Type4>
1285
+ accessor (buffer<DataT, Dimensions, AllocatorT>, handler, Type1, Type2, Type3,
1286
+ Type4)
1287
+ ->accessor<DataT, Dimensions, detail::deduceAccessMode<Type3, Type4>(),
1288
+ detail::deduceAccessTarget<Type3, Type4>(target::global_buffer),
1262
1289
access::placeholder::false_t>;
1263
1290
1264
1291
#endif
@@ -1658,15 +1685,41 @@ class host_accessor
1658
1685
1659
1686
#if __cplusplus > 201402L
1660
1687
1688
+ /*
1661
1689
template <typename DataT, int Dimensions, typename AllocatorT, typename... Ts>
1662
1690
host_accessor(buffer<DataT, Dimensions, AllocatorT>, Ts...)
1663
1691
->host_accessor<DataT, Dimensions, access::mode::read_write>;
1664
1692
1665
1693
template <typename DataT, int Dimensions, typename AllocatorT,
1666
- access_mode AccessMode, typename ... Ts>
1694
+ access_mode AccessMode, typename PropertyList = property_list,
1695
+ typename... Ts>
1667
1696
host_accessor(buffer<DataT, Dimensions, AllocatorT>, Ts...,
1668
- mode_tag_t <AccessMode>, property_list = {})
1697
+ mode_tag_t<AccessMode>, PropertyList = {})
1669
1698
->host_accessor<DataT, Dimensions, AccessMode>;
1699
+ */
1700
+
1701
+ template <typename DataT, int Dimensions, typename AllocatorT>
1702
+ host_accessor (buffer<DataT, Dimensions, AllocatorT>)
1703
+ ->host_accessor<DataT, Dimensions, access::mode::read_write>;
1704
+
1705
+ template <typename DataT, int Dimensions, typename AllocatorT, typename Type1>
1706
+ host_accessor (buffer<DataT, Dimensions, AllocatorT>, Type1)
1707
+ ->host_accessor<DataT, Dimensions, detail::deduceAccessMode<Type1, Type1>()>;
1708
+
1709
+ template <typename DataT, int Dimensions, typename AllocatorT,
1710
+ typename Type1, typename Type2>
1711
+ host_accessor (buffer<DataT, Dimensions, AllocatorT>, Type1, Type2)
1712
+ ->host_accessor<DataT, Dimensions, detail::deduceAccessMode<Type1, Type2>()>;
1713
+
1714
+ template <typename DataT, int Dimensions, typename AllocatorT,
1715
+ typename Type1, typename Type2, typename Type3>
1716
+ host_accessor (buffer<DataT, Dimensions, AllocatorT>, Type1, Type2, Type3)
1717
+ ->host_accessor<DataT, Dimensions, detail::deduceAccessMode<Type2, Type3>()>;
1718
+
1719
+ template <typename DataT, int Dimensions, typename AllocatorT,
1720
+ typename Type1, typename Type2, typename Type3, typename Type4>
1721
+ host_accessor (buffer<DataT, Dimensions, AllocatorT>, Type1, Type2, Type3, Type4)
1722
+ ->host_accessor<DataT, Dimensions, detail::deduceAccessMode<Type3, Type4>()>;
1670
1723
1671
1724
#endif
1672
1725
0 commit comments