@@ -116,11 +116,12 @@ class binary_operation : public operation_cl<Derived, T_res, T_a, T_b> {
116
116
public: \
117
117
class_name (T_a&& a, T_b&& b) /* NOLINT */ \
118
118
: base(std::forward<T_a>(a), std::forward<T_b>(b), operation) {} \
119
- inline class_name<std::remove_reference_t <T_a>, \
120
- std::remove_reference_t <T_b>> \
121
- deep_copy () { \
122
- return {std::get<0 >(arguments_).deep_copy (), \
123
- std::get<1 >(arguments_).deep_copy ()}; \
119
+ inline auto deep_copy () { \
120
+ auto && a_copy = std::get<0 >(arguments_).deep_copy (); \
121
+ auto && b_copy = std::get<1 >(arguments_).deep_copy (); \
122
+ return class_name<std::remove_reference_t <decltype (a_copy)>, \
123
+ std::remove_reference_t <decltype (b_copy)>>( \
124
+ std::move (a_copy), std::move (b_copy)); \
124
125
} \
125
126
}; \
126
127
\
@@ -162,11 +163,12 @@ class binary_operation : public operation_cl<Derived, T_res, T_a, T_b> {
162
163
public: \
163
164
class_name (T_a&& a, T_b&& b) /* NOLINT */ \
164
165
: base(std::forward<T_a>(a), std::forward<T_b>(b), operation) {} \
165
- inline class_name<std::remove_reference_t <T_a>, \
166
- std::remove_reference_t <T_b>> \
167
- deep_copy () { \
168
- return {std::get<0 >(arguments_).deep_copy (), \
169
- std::get<1 >(arguments_).deep_copy ()}; \
166
+ inline auto deep_copy () { \
167
+ auto && a_copy = std::get<0 >(arguments_).deep_copy (); \
168
+ auto && b_copy = std::get<1 >(arguments_).deep_copy (); \
169
+ return class_name<std::remove_reference_t <decltype (a_copy)>, \
170
+ std::remove_reference_t <decltype (b_copy)>>( \
171
+ std::move (a_copy), std::move (b_copy)); \
170
172
} \
171
173
inline matrix_cl_view view () const { __VA_ARGS__; } \
172
174
}; \
0 commit comments