From 7670db3146c402ddb322887976a6edf639ed9a71 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 10 Dec 2021 22:47:24 +0100 Subject: [PATCH] QVLA: separate control from inline storage [11/11]: qHash() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A previous attempt to make qHash() a hidden friend ran into an ICE on Clang, so to simplify the implementation, QVLABase::hash() is public for now. Use QtPrivate::QNothrowHashable_v to simplify the noexcept clauses. Fixes: QTBUG-84785 Change-Id: Ibb520bde7b1d6dc45846bd8e1fa27c39c401b96a Reviewed-by: Qt CI Bot Reviewed-by: MÃ¥rten Nordheim --- src/corelib/tools/qvarlengtharray.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index e6ff615b03..07add066af 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -193,6 +193,10 @@ public: iterator erase(const_iterator begin, const_iterator end); iterator erase(const_iterator pos) { return erase(pos, pos + 1); } + size_t hash(size_t seed) const noexcept(QtPrivate::QNothrowHashable_v) + { + return qHashRange(begin(), end(), seed); + } protected: template reference emplace_back_impl(qsizetype prealloc, void *array, Args&&...args) @@ -926,9 +930,9 @@ bool operator>=(const QVarLengthArray &l, const QVarLengthArray size_t qHash(const QVarLengthArray &key, size_t seed = 0) - noexcept(noexcept(qHashRange(key.cbegin(), key.cend(), seed))) + noexcept(QtPrivate::QNothrowHashable_v) { - return qHashRange(key.cbegin(), key.cend(), seed); + return key.hash(seed); } template