diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-07-08 16:58:11 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-07-12 20:25:30 +0000 |
commit | 388c36c8f5345cfa60d185705ef8cc7921799cce (patch) | |
tree | 9507afdb09ffb7cb0ff348b6557b22c9f2af6842 | |
parent | bca4dd57bd858a39db1fa87361d348546cd5e4e5 (diff) |
FilterKey: fix ambiguous relational operators in C++20
The member operators weren't const, leading them to be ambiguous with
their reversed versions.
Fix by adding a private equals() function (to avoid churning the
implementation) and making the relational operators hidden friends.
Task-number: QTBUG-104172
Change-Id: I97e74ef26fc2712d6f97c8f7d7bd61d6a625b42e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit bcd20a74c9f2cd5920ecc5c1c0bb6d577db6cb50)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/render/materialsystem/filterkey.cpp | 7 | ||||
-rw-r--r-- | src/render/materialsystem/filterkey_p.h | 9 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/render/materialsystem/filterkey.cpp b/src/render/materialsystem/filterkey.cpp index 778a9ee75..572d11e57 100644 --- a/src/render/materialsystem/filterkey.cpp +++ b/src/render/materialsystem/filterkey.cpp @@ -83,7 +83,7 @@ void FilterKey::syncFromFrontEnd(const QNode *frontEnd, bool firstTime) } } -bool FilterKey::operator ==(const FilterKey &other) +bool FilterKey::equals(const FilterKey &other) const { if (&other == this) return true; @@ -101,11 +101,6 @@ bool FilterKey::operator ==(const FilterKey &other) other.value() == value()); } -bool FilterKey::operator !=(const FilterKey &other) -{ - return !operator ==(other); -} - } // namespace Render } // namespace Qt3DRender diff --git a/src/render/materialsystem/filterkey_p.h b/src/render/materialsystem/filterkey_p.h index 91d0ba1f0..1fe6bba7b 100644 --- a/src/render/materialsystem/filterkey_p.h +++ b/src/render/materialsystem/filterkey_p.h @@ -72,10 +72,15 @@ public: const QVariant &value() const { return m_value; } const QString &name() const { return m_name; } void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; - bool operator ==(const FilterKey &other); - bool operator !=(const FilterKey &other); + + friend bool operator==(const FilterKey &lhs, const FilterKey &rhs) + { return lhs.equals(rhs); } + friend bool operator !=(const FilterKey &lhs, const FilterKey &rhs) + { return !lhs.equals(rhs); } private: + bool equals(const FilterKey &other) const; + QVariant m_value; QString m_name; }; |