From 7372dde4ec6cb32448ea026f48b5f5ea517f778d Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Tue, 27 Oct 2020 23:59:16 +0100 Subject: Math 3D classes: make comparison operators hidden friends Reduce ADL noise from QVector2/3/4D and from QQuaternion. Also mark as noexcept. Task-number: QTBUG-87973 Change-Id: Id14fd17c0da43517766b218ed85c3b41f91b43c8 Reviewed-by: Allan Sandfeld Jensen --- src/gui/math3d/qvector3d.h | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'src/gui/math3d/qvector3d.h') diff --git a/src/gui/math3d/qvector3d.h b/src/gui/math3d/qvector3d.h index ecfdf82239..ac4f7dffef 100644 --- a/src/gui/math3d/qvector3d.h +++ b/src/gui/math3d/qvector3d.h @@ -112,8 +112,19 @@ public: float distanceToPlane(const QVector3D& plane1, const QVector3D& plane2, const QVector3D& plane3) const; float distanceToLine(const QVector3D& point, const QVector3D& direction) const; - constexpr friend inline bool operator==(const QVector3D &v1, const QVector3D &v2); - constexpr friend inline bool operator!=(const QVector3D &v1, const QVector3D &v2); +QT_WARNING_PUSH +QT_WARNING_DISABLE_FLOAT_COMPARE + constexpr friend inline bool operator==(const QVector3D &v1, const QVector3D &v2) noexcept + { + return v1.v[0] == v2.v[0] && v1.v[1] == v2.v[1] && v1.v[2] == v2.v[2]; + } + + constexpr friend inline bool operator!=(const QVector3D &v1, const QVector3D &v2) noexcept + { + return v1.v[0] != v2.v[0] || v1.v[1] != v2.v[1] || v1.v[2] != v2.v[2]; + } +QT_WARNING_POP + constexpr friend inline const QVector3D operator+(const QVector3D &v1, const QVector3D &v2); constexpr friend inline const QVector3D operator-(const QVector3D &v1, const QVector3D &v2); constexpr friend inline const QVector3D operator*(float factor, const QVector3D &vector); @@ -229,20 +240,6 @@ inline QVector3D &QVector3D::operator/=(const QVector3D &vector) return *this; } -QT_WARNING_PUSH -QT_WARNING_DISABLE_FLOAT_COMPARE - -constexpr inline bool operator==(const QVector3D &v1, const QVector3D &v2) -{ - return v1.v[0] == v2.v[0] && v1.v[1] == v2.v[1] && v1.v[2] == v2.v[2]; -} - -constexpr inline bool operator!=(const QVector3D &v1, const QVector3D &v2) -{ - return v1.v[0] != v2.v[0] || v1.v[1] != v2.v[1] || v1.v[2] != v2.v[2]; -} -QT_WARNING_POP - constexpr inline const QVector3D operator+(const QVector3D &v1, const QVector3D &v2) { return QVector3D(v1.v[0] + v2.v[0], v1.v[1] + v2.v[1], v1.v[2] + v2.v[2]); -- cgit v1.2.3