Revert "Convert a Qt ordering type to the weaker std ordering type"
This reverts commit 521e091bca1764d53ac06bb60707475d1032f5d5. Reason for revert: The fix doesn't work with MSVC2022 compiler and block windows-11_23H2-msvc2022-developer-build integration. Need time to find proper solution. Pick-to: 6.8 Task-number: QTBUG-128498 Change-Id: Id938fa2119c7e4c053398b2a3693f3128e53f734 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
This commit is contained in:
parent
248a1ce4bd
commit
1017a0eaf1
@ -21,12 +21,6 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#if defined(Q_CC_MSVC)
|
|
||||||
#define Q_COMPARE_CAST_IMPLICIT explicit
|
|
||||||
#else
|
|
||||||
#define Q_COMPARE_CAST_IMPLICIT Q_IMPLICIT
|
|
||||||
#endif // Q_CC_MSVC
|
|
||||||
|
|
||||||
namespace QtPrivate {
|
namespace QtPrivate {
|
||||||
using CompareUnderlyingType = qint8;
|
using CompareUnderlyingType = qint8;
|
||||||
|
|
||||||
@ -376,23 +370,6 @@ public:
|
|||||||
#endif // __cpp_lib_bit_cast
|
#endif // __cpp_lib_bit_cast
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr Q_COMPARE_CAST_IMPLICIT operator std::partial_ordering() const noexcept
|
|
||||||
{
|
|
||||||
static_assert(sizeof(*this) == sizeof(std::partial_ordering));
|
|
||||||
#ifdef __cpp_lib_bit_cast
|
|
||||||
return std::bit_cast<std::partial_ordering>(*this);
|
|
||||||
#else
|
|
||||||
using O = QtPrivate::Ordering;
|
|
||||||
using R = std::partial_ordering;
|
|
||||||
switch (m_order) {
|
|
||||||
case qToUnderlying(O::Less): return R::less;
|
|
||||||
case qToUnderlying(O::Greater): return R::greater;
|
|
||||||
case qToUnderlying(O::Equivalent): return R::equivalent;
|
|
||||||
}
|
|
||||||
Q_UNREACHABLE_RETURN(R::unordered);
|
|
||||||
#endif // __cpp_lib_bit_cast
|
|
||||||
}
|
|
||||||
|
|
||||||
friend constexpr bool operator==(weak_ordering lhs, std::weak_ordering rhs) noexcept
|
friend constexpr bool operator==(weak_ordering lhs, std::weak_ordering rhs) noexcept
|
||||||
{ return static_cast<std::weak_ordering>(lhs) == rhs; }
|
{ return static_cast<std::weak_ordering>(lhs) == rhs; }
|
||||||
|
|
||||||
@ -590,40 +567,6 @@ public:
|
|||||||
#endif // __cpp_lib_bit_cast
|
#endif // __cpp_lib_bit_cast
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr Q_COMPARE_CAST_IMPLICIT operator std::weak_ordering() const noexcept
|
|
||||||
{
|
|
||||||
static_assert(sizeof(*this) == sizeof(std::weak_ordering));
|
|
||||||
#ifdef __cpp_lib_bit_cast
|
|
||||||
return std::bit_cast<std::weak_ordering>(*this);
|
|
||||||
#else
|
|
||||||
using O = QtPrivate::Ordering;
|
|
||||||
using R = std::weak_ordering;
|
|
||||||
switch (m_order) {
|
|
||||||
case qToUnderlying(O::Less): return R::less;
|
|
||||||
case qToUnderlying(O::Greater): return R::greater;
|
|
||||||
case qToUnderlying(O::Equal): return R::equivalent;
|
|
||||||
}
|
|
||||||
Q_UNREACHABLE_RETURN(R::equivalent);
|
|
||||||
#endif // __cpp_lib_bit_cast
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr Q_COMPARE_CAST_IMPLICIT operator std::partial_ordering() const noexcept
|
|
||||||
{
|
|
||||||
static_assert(sizeof(*this) == sizeof(std::partial_ordering));
|
|
||||||
#ifdef __cpp_lib_bit_cast
|
|
||||||
return std::bit_cast<std::partial_ordering>(*this);
|
|
||||||
#else
|
|
||||||
using O = QtPrivate::Ordering;
|
|
||||||
using R = std::partial_ordering;
|
|
||||||
switch (m_order) {
|
|
||||||
case qToUnderlying(O::Less): return R::less;
|
|
||||||
case qToUnderlying(O::Greater): return R::greater;
|
|
||||||
case qToUnderlying(O::Equal): return R::equivalent;
|
|
||||||
}
|
|
||||||
Q_UNREACHABLE_RETURN(R::unordered);
|
|
||||||
#endif // __cpp_lib_bit_cast
|
|
||||||
}
|
|
||||||
|
|
||||||
friend constexpr bool operator==(strong_ordering lhs, std::strong_ordering rhs) noexcept
|
friend constexpr bool operator==(strong_ordering lhs, std::strong_ordering rhs) noexcept
|
||||||
{ return static_cast<std::strong_ordering>(lhs) == rhs; }
|
{ return static_cast<std::strong_ordering>(lhs) == rhs; }
|
||||||
|
|
||||||
@ -979,8 +922,6 @@ inline constexpr QPartialOrdering QPartialOrdering::equivalent(QtPrivate::Orderi
|
|||||||
inline constexpr QPartialOrdering QPartialOrdering::greater(QtPrivate::Ordering::Greater);
|
inline constexpr QPartialOrdering QPartialOrdering::greater(QtPrivate::Ordering::Greater);
|
||||||
inline constexpr QPartialOrdering QPartialOrdering::unordered(QtPrivate::LegacyUncomparable::Unordered);
|
inline constexpr QPartialOrdering QPartialOrdering::unordered(QtPrivate::LegacyUncomparable::Unordered);
|
||||||
|
|
||||||
#undef Q_COMPARE_CAST_IMPLICIT
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // QCOMPARE_H
|
#endif // QCOMPARE_H
|
||||||
|
@ -693,20 +693,6 @@ void tst_QCompare::conversions()
|
|||||||
static_assert(Qt::partial_ordering::less == std::weak_ordering::less);
|
static_assert(Qt::partial_ordering::less == std::weak_ordering::less);
|
||||||
static_assert(Qt::partial_ordering::equivalent == std::strong_ordering::equivalent);
|
static_assert(Qt::partial_ordering::equivalent == std::strong_ordering::equivalent);
|
||||||
static_assert(Qt::partial_ordering::equivalent != std::strong_ordering::less);
|
static_assert(Qt::partial_ordering::equivalent != std::strong_ordering::less);
|
||||||
|
|
||||||
// convert Qt::strong to std::partial
|
|
||||||
constexpr Qt::strong_ordering qtS = Qt::strong_ordering::less;
|
|
||||||
constexpr std::partial_ordering stdP1 = qtS;
|
|
||||||
static_assert(stdP1 == qtS);
|
|
||||||
|
|
||||||
// convert Qt::strong to std::weak
|
|
||||||
constexpr std::weak_ordering stdW = qtS;
|
|
||||||
static_assert(stdW == qtS);
|
|
||||||
|
|
||||||
// convert Qt::weak to std::partial
|
|
||||||
constexpr Qt::weak_ordering qtW = Qt::weak_ordering::greater;
|
|
||||||
constexpr std::partial_ordering stdP2 = qtW;
|
|
||||||
static_assert(stdP2 == qtW);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user