@@ -413,6 +413,7 @@ template <typename T, class BinaryOperation> class reducer_element {
413
413
// / Specialization of 'reducer' class for array reductions accepting a span
414
414
// / in cases where the identity value is not known.
415
415
// TODO: Support alternative algorithms for different values of Extent
416
+ #if __cplusplus >= 201703L
416
417
template <typename T, size_t Extent, class BinaryOperation >
417
418
class reducer <span<T, Extent>, BinaryOperation,
418
419
enable_if_t <!IsKnownIdentityOp<T, BinaryOperation>::value>> {
@@ -571,6 +572,7 @@ class reducer<span<T, Extent>, BinaryOperation,
571
572
private:
572
573
marray<T, Extent> MValue;
573
574
};
575
+ #endif
574
576
575
577
// / Base non-template class which is a base class for all reduction
576
578
// / implementation classes. It is needed to detect the reduction classes.
@@ -1026,6 +1028,7 @@ class reduction_impl : private reduction_impl_base {
1026
1028
// / Specialization of reduction_impl for spans
1027
1029
// TODO: Consider hoisting some functionality into reduction_impl_base
1028
1030
// TODO: Refactor to remove IsUSM and IsPlaceholder arguments?
1031
+ #if __cplusplus >= 201703L
1029
1032
template <typename T, size_t Extent, class BinaryOperation , int Dims,
1030
1033
bool IsUSM, access::placeholder IsPlaceholder>
1031
1034
class reduction_impl <span<T, Extent>, BinaryOperation, Dims, IsUSM,
@@ -1273,6 +1276,7 @@ class reduction_impl<span<T, Extent>, BinaryOperation, Dims, IsUSM,
1273
1276
1274
1277
bool InitializeToIdentity;
1275
1278
};
1279
+ #endif
1276
1280
1277
1281
// / These are the forward declaration for the classes that help to create
1278
1282
// / names for additional kernels. It is used only when there are
0 commit comments