diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-07-08 16:58:11 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-07-12 21:07:22 +0200 |
commit | bcd20a74c9f2cd5920ecc5c1c0bb6d577db6cb50 (patch) | |
tree | 23493ff7787aea059233a91531f2c2334f542f35 | |
parent | 42f96fe2074bc63cfb8a4ae71a7262d554661da2 (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.
Pick-to: 6.4 6.3 6.2 5.15
Task-number: QTBUG-104172
Change-Id: I97e74ef26fc2712d6f97c8f7d7bd61d6a625b42e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-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 2a3a4d9d0..7429735ef 100644 --- a/src/render/materialsystem/filterkey.cpp +++ b/src/render/materialsystem/filterkey.cpp @@ -47,7 +47,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; @@ -65,11 +65,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 bb27c8ced..e8bbf1b9d 100644 --- a/src/render/materialsystem/filterkey_p.h +++ b/src/render/materialsystem/filterkey_p.h @@ -36,10 +36,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; }; |