diff --git a/src/corelib/global/qcompare.h b/src/corelib/global/qcompare.h index 682c1edd520..d2c4f54b163 100644 --- a/src/corelib/global/qcompare.h +++ b/src/corelib/global/qcompare.h @@ -706,6 +706,12 @@ public: m_order = static_cast(QtPrivate::LegacyUncomparable::Unordered); } + constexpr Q_IMPLICIT QPartialOrdering(std::weak_ordering stdorder) noexcept + : QPartialOrdering(std::partial_ordering(stdorder)) {} + + constexpr Q_IMPLICIT QPartialOrdering(std::strong_ordering stdorder) noexcept + : QPartialOrdering(std::partial_ordering(stdorder)) {} + constexpr Q_IMPLICIT operator std::partial_ordering() const noexcept { if (static_cast(m_order) == QtPrivate::Ordering::Less) diff --git a/tests/auto/corelib/global/qcompare/tst_qcompare.cpp b/tests/auto/corelib/global/qcompare/tst_qcompare.cpp index f07b2b89102..f473c1706d9 100644 --- a/tests/auto/corelib/global/qcompare/tst_qcompare.cpp +++ b/tests/auto/corelib/global/qcompare/tst_qcompare.cpp @@ -144,6 +144,8 @@ void tst_QCompare::legacyConversions() static_assert(QPartialOrdering::Unordered == NS ::partial_ordering::unordered); \ \ CHECK_CONVERTS(NS ::partial_ordering, QPartialOrdering); \ + CHECK_CONVERTS(NS ::weak_ordering, QPartialOrdering); \ + CHECK_CONVERTS(NS ::strong_ordering, QPartialOrdering); \ } while (false) #ifdef __cpp_lib_three_way_comparison