diff --git a/modules/core/include/opencv2/core/types.hpp b/modules/core/include/opencv2/core/types.hpp index b8f943453a..ea7b4dcbaa 100644 --- a/modules/core/include/opencv2/core/types.hpp +++ b/modules/core/include/opencv2/core/types.hpp @@ -1342,30 +1342,32 @@ Size_<_Tp> operator / (Size_<_Tp> a, _Tp b) } template static inline -Size_<_Tp> operator + (const Size_<_Tp>& a, const Size_<_Tp>& b) +Size_<_Tp>& operator += (Size_<_Tp>& a, const Size_<_Tp>& b) { - return Size_<_Tp>(a.width + b.width, a.height + b.height); + a.width += b.width; + a.height += b.height; + return a; } template static inline -Size_<_Tp> operator - (const Size_<_Tp>& a, const Size_<_Tp>& b) +Size_<_Tp> operator + (Size_<_Tp> a, const Size_<_Tp>& b) { - return Size_<_Tp>(a.width - b.width, a.height - b.height); + a += b; + return a; } template static inline -Size_<_Tp>& operator += (Size_<_Tp>& a, const Size_<_Tp>& b) +Size_<_Tp>& operator -= (Size_<_Tp>& a, const Size_<_Tp>& b) { - a.width += b.width; - a.height += b.height; + a.width -= b.width; + a.height -= b.height; return a; } template static inline -Size_<_Tp>& operator -= (Size_<_Tp>& a, const Size_<_Tp>& b) +Size_<_Tp> operator - (Size_<_Tp> a, const Size_<_Tp>& b) { - a.width -= b.width; - a.height -= b.height; + a -= b; return a; } @@ -1378,7 +1380,7 @@ bool operator == (const Size_<_Tp>& a, const Size_<_Tp>& b) template static inline bool operator != (const Size_<_Tp>& a, const Size_<_Tp>& b) { - return a.width != b.width || a.height != b.height; + return !(a == b); }