From f9431f5632ca577a099bd4063f1412cff81f5f8d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 22 Aug 2018 15:32:33 +0200 Subject: Fix tst_QSizePolicy::constExpr() to compile with MSVC 15.8.1 For ControlType != QSizePolicy::DefaultType, qCountTrailingZeroBits() is used which, MSVC 15.8.1 does not consider constexpr due to built-ins. Exclude the check by #ifdef. Task-number: QTBUG-69983 Change-Id: Ifc3dc3d94a804246bee1705fc8f3ac9b04ee4d32 Reviewed-by: Alexander Shevchenko Reviewed-by: Qt CI Bot Reviewed-by: Thiago Macieira --- tests/auto/widgets/kernel/qsizepolicy/tst_qsizepolicy.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/auto/widgets/kernel/qsizepolicy/tst_qsizepolicy.cpp b/tests/auto/widgets/kernel/qsizepolicy/tst_qsizepolicy.cpp index eb3264be53..89bb946be9 100644 --- a/tests/auto/widgets/kernel/qsizepolicy/tst_qsizepolicy.cpp +++ b/tests/auto/widgets/kernel/qsizepolicy/tst_qsizepolicy.cpp @@ -116,8 +116,16 @@ void tst_QSizePolicy::constExpr() { Q_CONSTEXPR QSizePolicy sp = QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); Q_UNUSED(sp); } { Q_CONSTEXPR QSizePolicy sp = QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding, QSizePolicy::DefaultType); Q_CONSTEXPR QSizePolicy tp = sp.transposed(); Q_UNUSED(tp); } - { Q_RELAXED_CONSTEXPR auto sp = QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed, QSizePolicy::CheckBox); - Q_RELAXED_CONSTEXPR auto tp = sp.transposed(); Q_UNUSED(tp); } + { + // QTBUG-69983: For ControlType != QSizePolicy::DefaultType, qCountTrailingZeroBits() + // is used, which MSVC 15.8.1 does not consider constexpr due to built-ins +# if defined(QT_HAS_CONSTEXPR_BUILTINS) && (!defined(Q_CC_MSVC) || _MSC_VER < 1915) + Q_RELAXED_CONSTEXPR auto sp = QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed, QSizePolicy::CheckBox); +# else + Q_CONSTEXPR auto sp = QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding, QSizePolicy::DefaultType); +# endif + Q_RELAXED_CONSTEXPR auto tp = sp.transposed(); Q_UNUSED(tp); + } #else QSKIP("QSizePolicy cannot be constexpr with this version of the compiler."); #endif -- cgit v1.2.3