diff --git a/stan/math/opencl/kernel_generator/rowwise_reduction.hpp b/stan/math/opencl/kernel_generator/rowwise_reduction.hpp index a785ef62887..7a5cdaedd02 100644 --- a/stan/math/opencl/kernel_generator/rowwise_reduction.hpp +++ b/stan/math/opencl/kernel_generator/rowwise_reduction.hpp @@ -174,9 +174,10 @@ class rowwise_sum_ */ template > -inline rowwise_sum_> rowwise_sum(T&& a) { - return rowwise_sum_>( - as_operation_cl(std::forward(a)).deep_copy()); +inline auto rowwise_sum(T&& a) { + auto&& arg_copy = as_operation_cl(std::forward(a)).deep_copy(); + return rowwise_sum_>( + std::move(arg_copy)); } /** @@ -241,11 +242,11 @@ class rowwise_max_ */ template > -inline rowwise_max_> rowwise_max(T&& a) { - return rowwise_max_>( - as_operation_cl(std::forward(a)).deep_copy()); +inline auto rowwise_max(T&& a) { + auto&& arg_copy = as_operation_cl(std::forward(a)).deep_copy(); + return rowwise_max_>( + std::move(arg_copy)); } - /** * Operation for min reduction. * @tparam T type to reduce @@ -308,9 +309,10 @@ class rowwise_min_ */ template > -inline rowwise_min_> rowwise_min(T&& a) { - return rowwise_min_>( - as_operation_cl(std::forward(a)).deep_copy()); +inline auto rowwise_min(T&& a) { + auto&& arg_copy = as_operation_cl(std::forward(a)).deep_copy(); + return rowwise_min_>( + std::move(arg_copy)); } } // namespace math