diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 0030c076ad..7b59688fa4 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -272,18 +272,22 @@ public: return {}; } -#ifdef Q_QDOC - template - friend bool operator==(const QMap &lhs, const QMap &rhs); - template - friend bool operator!=(const QMap &lhs, const QMap &rhs); -#else - // CHANGE: non-member equality comparison - template - friend QTypeTraits::compare_eq_result operator==(const QMap &lhs, const QMap &rhs); - template - friend QTypeTraits::compare_eq_result operator!=(const QMap &lhs, const QMap &rhs); -#endif + template friend + QTypeTraits::compare_eq_result operator==(const QMap &lhs, const QMap &rhs) + { + if (lhs.d == rhs.d) + return true; + if (!lhs.d) + return rhs == lhs; + Q_ASSERT(lhs.d); + return rhs.d ? (lhs.d->m == rhs.d->m) : lhs.d->m.empty(); + } + + template friend + QTypeTraits::compare_eq_result operator!=(const QMap &lhs, const QMap &rhs) + { + return !(lhs == rhs); + } // TODO: add the other comparison operators; std::map has them. size_type size() const { return d ? size_type(d->m.size()) : size_type(0); } @@ -734,24 +738,6 @@ public: Q_DECLARE_ASSOCIATIVE_ITERATOR(Map) Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Map) -template -QTypeTraits::compare_eq_result operator==(const QMap &lhs, const QMap &rhs) -{ - if (lhs.d == rhs.d) - return true; - if (!lhs.d) - return rhs == lhs; - Q_ASSERT(lhs.d); - return rhs.d ? (lhs.d->m == rhs.d->m) : lhs.d->m.empty(); -} - -template -QTypeTraits::compare_eq_result operator!=(const QMap &lhs, const QMap &rhs) -{ - return !(lhs == rhs); -} - - // // QMultiMap // @@ -848,19 +834,22 @@ public: return {}; } -#ifdef Q_QDOC - template - friend bool operator==(const QMultiMap &lhs, const QMultiMap &rhs); - template - friend bool operator!=(const QMultiMap &lhs, const QMultiMap &rhs); -#else - // CHANGE: non-member equality comparison - template - friend QTypeTraits::compare_eq_result operator==(const QMultiMap &lhs, const QMultiMap &rhs); - template - friend QTypeTraits::compare_eq_result operator!=(const QMultiMap &lhs, const QMultiMap &rhs); -#endif + template friend + QTypeTraits::compare_eq_result operator==(const QMultiMap &lhs, const QMultiMap &rhs) + { + if (lhs.d == rhs.d) + return true; + if (!lhs.d) + return rhs == lhs; + Q_ASSERT(lhs.d); + return rhs.d ? (lhs.d->m == rhs.d->m) : lhs.d->m.empty(); + } + template friend + QTypeTraits::compare_eq_result operator!=(const QMultiMap &lhs, const QMultiMap &rhs) + { + return !(lhs == rhs); + } // TODO: add the other comparison operators; std::multimap has them. size_type size() const { return d ? size_type(d->m.size()) : size_type(0); } @@ -1433,23 +1422,6 @@ public: Q_DECLARE_ASSOCIATIVE_ITERATOR(MultiMap) Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(MultiMap) -template -QTypeTraits::compare_eq_result operator==(const QMultiMap &lhs, const QMultiMap &rhs) -{ - if (lhs.d == rhs.d) - return true; - if (!lhs.d) - return rhs == lhs; - Q_ASSERT(lhs.d); - return rhs.d ? (lhs.d->m == rhs.d->m) : lhs.d->m.empty(); -} - -template -QTypeTraits::compare_eq_result operator!=(const QMultiMap &lhs, const QMultiMap &rhs) -{ - return !(lhs == rhs); -} - template QMultiMap operator+(const QMultiMap &lhs, const QMultiMap &rhs) { diff --git a/src/corelib/tools/qmap.qdoc b/src/corelib/tools/qmap.qdoc index 79b3cc155d..ace09e7391 100644 --- a/src/corelib/tools/qmap.qdoc +++ b/src/corelib/tools/qmap.qdoc @@ -249,8 +249,7 @@ Returns an STL map equivalent to this QMap. */ -/*! \fn template bool operator==(const QMap &lhs, const QMap &rhs) - \relates QMap +/*! \fn template bool QMap::operator==(const QMap &lhs, const QMap &rhs) Returns \c true if \a lhs is equal to \a rhs; otherwise returns false. @@ -264,8 +263,7 @@ \sa operator!=() */ -/*! \fn template bool operator!=(const QMap &lhs, const QMap &rhs) - \relates QMap +/*! \fn template bool QMap::operator!=(const QMap &lhs, const QMap &rhs) Returns \c true if \a lhs is not equal to \a rhs; otherwise returns false. diff --git a/src/corelib/tools/qmultimap.qdoc b/src/corelib/tools/qmultimap.qdoc index d07383a366..487480a927 100644 --- a/src/corelib/tools/qmultimap.qdoc +++ b/src/corelib/tools/qmultimap.qdoc @@ -259,8 +259,7 @@ fast and never fails. */ -/*! \fn template bool operator==(const QMultiMap &lhs, const QMultiMap &rhs) - \relates QMultiMap +/*! \fn template bool QMultiMap::operator==(const QMultiMap &lhs, const QMultiMap &rhs) Returns \c true if \a lhs is equal to \a rhs; otherwise returns false. @@ -274,8 +273,7 @@ \sa operator!=() */ -/*! \fn template bool operator!=(const QMultiMap &lhs, const QMultiMap &rhs) - \relates QMultiMap +/*! \fn template bool QMultiMap::operator!=(const QMultiMap &lhs, const QMultiMap &rhs) Returns \c true if \a lhs is not equal to \a rhs; otherwise returns \c false.