diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 12c2bef709..a7d95174f4 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -2230,6 +2230,10 @@ template static QPartialOrdering spaceShip(Numeric lhs, Numer { if (lhs == rhs) return QPartialOrdering::Equivalent; + if constexpr (std::numeric_limits::has_quiet_NaN) { + if (std::isnan(lhs) || std::isnan(rhs)) + return QPartialOrdering::Unordered; + } bool smaller; if constexpr (std::is_same_v) @@ -2270,8 +2274,6 @@ static QPartialOrdering numericCompare(const QVariant::Private *d1, const QVaria if (*r1 == *r2) return QPartialOrdering::Equivalent; - if (std::isnan(*r1) || std::isnan(*r2)) - return QPartialOrdering::Unordered; return spaceShip(*r1, *r2); }