@@ -174,9 +174,10 @@ class rowwise_sum_
174
174
*/
175
175
template <typename T,
176
176
typename = require_all_valid_expressions_and_none_scalar_t <T>>
177
- inline rowwise_sum_<as_operation_cl_t <T>> rowwise_sum (T&& a) {
178
- return rowwise_sum_<as_operation_cl_t <T>>(
179
- as_operation_cl (std::forward<T>(a)).deep_copy ());
177
+ inline auto rowwise_sum (T&& a) {
178
+ auto && arg_copy = as_operation_cl (std::forward<T>(a)).deep_copy ();
179
+ return rowwise_sum_<std::remove_reference_t <decltype (arg_copy)>>(
180
+ std::move (arg_copy));
180
181
}
181
182
182
183
/* *
@@ -241,11 +242,11 @@ class rowwise_max_
241
242
*/
242
243
template <typename T,
243
244
typename = require_all_valid_expressions_and_none_scalar_t <T>>
244
- inline rowwise_max_<as_operation_cl_t <T>> rowwise_max (T&& a) {
245
- return rowwise_max_<as_operation_cl_t <T>>(
246
- as_operation_cl (std::forward<T>(a)).deep_copy ());
245
+ inline auto rowwise_max (T&& a) {
246
+ auto && arg_copy = as_operation_cl (std::forward<T>(a)).deep_copy ();
247
+ return rowwise_max_<std::remove_reference_t <decltype (arg_copy)>>(
248
+ std::move (arg_copy));
247
249
}
248
-
249
250
/* *
250
251
* Operation for min reduction.
251
252
* @tparam T type to reduce
@@ -308,9 +309,10 @@ class rowwise_min_
308
309
*/
309
310
template <typename T,
310
311
typename = require_all_valid_expressions_and_none_scalar_t <T>>
311
- inline rowwise_min_<as_operation_cl_t <T>> rowwise_min (T&& a) {
312
- return rowwise_min_<as_operation_cl_t <T>>(
313
- as_operation_cl (std::forward<T>(a)).deep_copy ());
312
+ inline auto rowwise_min (T&& a) {
313
+ auto && arg_copy = as_operation_cl (std::forward<T>(a)).deep_copy ();
314
+ return rowwise_min_<std::remove_reference_t <decltype (arg_copy)>>(
315
+ std::move (arg_copy));
314
316
}
315
317
316
318
} // namespace math
0 commit comments