diff options
| author | Thiago Macieira <thiago.macieira@intel.com> | 2022-09-30 00:26:11 -0700 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2022-09-30 14:18:00 +0000 |
| commit | 6be8efb8535058beb276fa901e31587c25864e46 (patch) | |
| tree | 7e7664a7b39f868d10c18a1e40849711c929ff36 /src/corelib/global/qnumeric.cpp | |
| parent | 2108ddf8f2ab2e5eadd2542c5f79beb6d03809b1 (diff) | |
qnumeric_p.h: fix comparison of signed to unsigned in saturation
qnumeric_p.h:343:18: error: comparison of integers of different signs: 'int' and 'const unsigned int' [-Werror,-Wsign-compare]
note: in instantiation of function template specialization 'qt_saturate<unsigned int, int>' requested here
Pick-to: 6.4 6.3 6.2
Task-number: QTBUG-104972
Task-number: COIN-928
Change-Id: I810d70e579eb4e2c8e45fffd171992a457a139dc
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/global/qnumeric.cpp')
| -rw-r--r-- | src/corelib/global/qnumeric.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/corelib/global/qnumeric.cpp b/src/corelib/global/qnumeric.cpp index 16b2b7ca408..e492e3f02a0 100644 --- a/src/corelib/global/qnumeric.cpp +++ b/src/corelib/global/qnumeric.cpp @@ -458,4 +458,35 @@ Q_CORE_EXPORT quint64 qFloatDistance(double a, double b) Returns true if the absolute value of \a f is within 0.00001f of 0.0. */ +template <typename T> static constexpr T max = std::numeric_limits<T>::max(); +template <typename T> static constexpr T min = std::numeric_limits<T>::min(); + +static_assert(qt_saturate<short>(max<unsigned>) == max<short>); +static_assert(qt_saturate<int>(max<unsigned>) == max<int>); +static_assert(qt_saturate<qint64>(max<unsigned>) == qint64(max<unsigned>)); + +static_assert(qt_saturate<short>(max<int>) == max<short>); +static_assert(qt_saturate<unsigned>(max<int>) == unsigned(max<int>)); +static_assert(qt_saturate<qint64>(max<int>) == qint64(max<int>)); + +static_assert(qt_saturate<short>(max<qint64>) == max<short>); +static_assert(qt_saturate<int>(max<qint64>) == max<int>); +static_assert(qt_saturate<unsigned>(max<qint64>) == max<unsigned>); +static_assert(qt_saturate<quint64>(max<qint64>) == quint64(max<qint64>)); + +static_assert(qt_saturate<short>(max<quint64>) == max<short>); +static_assert(qt_saturate<int>(max<quint64>) == max<int>); +static_assert(qt_saturate<unsigned>(max<quint64>) == max<unsigned>); +static_assert(qt_saturate<qint64>(max<quint64>) == max<qint64>); + +static_assert(qt_saturate<short>(min<int>) == min<short>); +static_assert(qt_saturate<qint64>(min<int>) == qint64(min<int>)); +static_assert(qt_saturate<unsigned>(min<int>) == 0); +static_assert(qt_saturate<quint64>(min<int>) == 0); + +static_assert(qt_saturate<short>(min<qint64>) == min<short>); +static_assert(qt_saturate<int>(min<qint64>) == min<int>); +static_assert(qt_saturate<unsigned>(min<qint64>) == 0); +static_assert(qt_saturate<quint64>(min<qint64>) == 0); + QT_END_NAMESPACE |
