|
4 | 4 | // CRTP Overloads for nth rank Tensors |
5 | 5 | //---------------------------------------------------------------------------------------------// |
6 | 6 | template<typename Derived, size_t DIMS> |
7 | | -FASTOR_INLINE void operator +=(const AbstractTensor<Derived,DIMS>& src_) { |
| 7 | +FASTOR_INLINE auto& operator +=(const AbstractTensor<Derived,DIMS>& src_) { |
8 | 8 | assign_add(*this, src_.self()); |
| 9 | + return *this; |
9 | 10 | } |
10 | 11 |
|
11 | 12 | template<typename Derived, size_t DIMS> |
12 | | -FASTOR_INLINE void operator -=(const AbstractTensor<Derived,DIMS>& src_) { |
| 13 | +FASTOR_INLINE auto& operator -=(const AbstractTensor<Derived,DIMS>& src_) { |
13 | 14 | assign_sub(*this, src_.self()); |
| 15 | + return *this; |
14 | 16 | } |
15 | 17 |
|
16 | 18 | template<typename Derived, size_t DIMS> |
17 | | -FASTOR_INLINE void operator *=(const AbstractTensor<Derived,DIMS>& src_) { |
| 19 | +FASTOR_INLINE auto& operator *=(const AbstractTensor<Derived,DIMS>& src_) { |
18 | 20 | assign_mul(*this, src_.self()); |
| 21 | + return *this; |
19 | 22 | } |
20 | 23 |
|
21 | 24 | template<typename Derived, size_t DIMS> |
22 | | -FASTOR_INLINE void operator /=(const AbstractTensor<Derived,DIMS>& src_) { |
| 25 | +FASTOR_INLINE auto& operator /=(const AbstractTensor<Derived,DIMS>& src_) { |
23 | 26 | assign_div(*this, src_.self()); |
| 27 | + return *this; |
24 | 28 | } |
25 | 29 | //---------------------------------------------------------------------------------------------// |
26 | 30 |
|
27 | 31 | // Scalar overloads for in-place operators |
28 | 32 | //---------------------------------------------------------------------------------------------// |
29 | 33 | template<typename U=T, enable_if_t_<is_arithmetic_v_<U>,bool> = 0 > |
30 | | -FASTOR_INLINE void operator +=(U num) { |
| 34 | +FASTOR_INLINE auto& operator +=(U num) { |
31 | 35 | trivial_assign_add(*this, num); |
| 36 | + return *this; |
32 | 37 | } |
33 | 38 |
|
34 | 39 | template<typename U=T, enable_if_t_<is_arithmetic_v_<U>,bool> = 0 > |
35 | | -FASTOR_INLINE void operator -=(U num) { |
| 40 | +FASTOR_INLINE auto& operator -=(U num) { |
36 | 41 | trivial_assign_sub(*this, num); |
| 42 | + return *this; |
37 | 43 | } |
38 | 44 |
|
39 | 45 | template<typename U=T, enable_if_t_<is_arithmetic_v_<U>,bool> = 0 > |
40 | | -FASTOR_INLINE void operator *=(U num) { |
| 46 | +FASTOR_INLINE auto& operator *=(U num) { |
41 | 47 | trivial_assign_mul(*this, num); |
| 48 | + return *this; |
42 | 49 | } |
43 | 50 |
|
44 | 51 | template<typename U=T, enable_if_t_<is_arithmetic_v_<U>,bool> = 0 > |
45 | | -FASTOR_INLINE void operator /=(U num) { |
| 52 | +FASTOR_INLINE auto& operator /=(U num) { |
46 | 53 | trivial_assign_div(*this, num); |
| 54 | + return *this; |
47 | 55 | } |
48 | 56 | //---------------------------------------------------------------------------------------------// |
49 | 57 |
|
|
0 commit comments