qHash: break up the long line and add constexpr to the 1-arg catch-all

Amends 798c23189c7fb73629c1a98361cb1f50446fecf1.

Task-number: QTBUG-126659
Task-number: QTBUG-134683
Task-number: QTBUG-134690
Pick-to: 6.9.0
Change-Id: I7ab4e1f9170366c6495bfffd37b61336b10d4da6
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit eb1342a3c261d5a4f10add5275c4167da3e8c941)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Thiago Macieira 2025-03-13 08:42:02 -07:00 committed by Qt Cherry-pick Bot
parent 54cc218f46
commit db36fea295

View File

@ -237,8 +237,10 @@ constexpr inline bool HasQHashSingleArgOverload<T, std::enable_if_t<
// Add Args... to make this overload consistently a worse match than
// original 2-arg qHash overloads (QTBUG-126659)
template <typename T, typename...Args, std::enable_if_t<QHashPrivate::HasQHashSingleArgOverload<T> && sizeof...(Args) == 0 && !std::is_enum_v<T>, bool> = true>
size_t qHash(const T &t, size_t seed, Args&&...) noexcept(noexcept(qHash(t)))
template <typename T, typename...Args,
std::enable_if_t<QHashPrivate::HasQHashSingleArgOverload<T>
&& sizeof...(Args) == 0 && !std::is_enum_v<T>, bool> = true>
constexpr size_t qHash(const T &t, size_t seed, Args&&...) noexcept(noexcept(qHash(t)))
{ return qHash(t) ^ seed; }
#endif // < Qt 7