diff --git a/src/corelib/tools/qtyperevision.h b/src/corelib/tools/qtyperevision.h index 8f255a77e89..c2b344f3400 100644 --- a/src/corelib/tools/qtyperevision.h +++ b/src/corelib/tools/qtyperevision.h @@ -45,9 +45,11 @@ public: static constexpr bool isValidSegment(Integer segment) { // using extra parentheses around max to avoid expanding it if it is a macro + // and adding zero to cause it to be promoted + constexpr auto Max = (std::numeric_limits::max)() + 0; + constexpr bool HasSufficientRange = Max >= SegmentUnknown; return segment >= Integer(0) - && ((std::numeric_limits::max)() < Integer(SegmentUnknown) - || segment < Integer(SegmentUnknown)); + && (!HasSufficientRange || segment < Integer(SegmentUnknown)); } template(); - // compileTestRevision(); + compileTestRevision(); compileTestRevision(); compileTestRevision(); compileTestRevision(); @@ -104,7 +104,7 @@ void tst_QTypeRevision::qTypeRevisionTypes() compileTestRevision(); compileTestRevision(); compileTestRevision(); - // compileTestRevision(); + compileTestRevision(); QVERIFY(!QTypeRevision::isValidSegment(0xff)); QVERIFY(!QTypeRevision::isValidSegment(-1));