Qt 6.8.3 with BlackBerry 10 (QNX 8 / ARMv7) patches
 
 
 
 
 
 
Go to file
Giuseppe D'Angelo 405244fe30 Fix QVariant/QMetaType::compare APIs
std::optional<int> is the wrong datatype to use for compare.

First and foremost, it can't be used in the idiomatic form of

  auto r = a.compare(b);
  if (r < 0) ~~~ // a is less than b
  if (r > 0) ~~~ // a is greater than b

which we *already* feature in Qt (QString, QByteArray).

Also, std::optional<int> (explicitly) converts to bool, which is
a trap, because the result of the comparison can be accidentally
tested as a bool:

  if (a.compare(b)) ~~~ // oops! does NOT mean a<b

Not to mention extending this to algorithms:

  auto lessThan = [](QVariant a, QVariant b) { return a.compare(b); }; // oops!
  std::ranges::sort(vectorOfVariants, lessThan);

which thankfully doesn't compile as is -- std::optional has
an *explicit* operator bool, and the Compare concept requires an
implicit conversion. However, the error the user is going to face
will be "cannot convert to bool because the operator is explicit",
which is deceiving because the fix is NOT supposed to be:

  auto lessThan = [](QVariant a, QVariant b) { return (bool)a.compare(b); }; // big oops!

Instead: backport to Qt the required subset of C++20's <compare>
API, and use that. This commits just adds the necessary parts
for compare() (i.e. partial ordering), the rest of <compare>
(classes, functions, conversions) can be added to 6.1.

Change-Id: I2b5522da47854da39f79993e1207fad033786f00
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 3e59c97c3453926fc66479d9ceca03901df55f90)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-30 17:16:22 +01:00
.github/workflows GitHub Actions: Fix workflow file 2020-09-11 13:37:48 +02:00
bin CMake: strip the executable bit from qt-cmake-private-install.cmake 2020-11-30 16:16:21 +00:00
cmake CMake: strip the executable bit from qt-cmake-private-install.cmake 2020-11-30 16:16:21 +00:00
coin CMake: Name QT_NO_MAKE_*/BUILD_* variables consistently 2020-11-20 20:38:03 +01:00
config.tests CMake: Skip regeneration of manual compile test project 2020-04-09 11:26:46 +02:00
dist Add Qt 6.0.0 changes file 2020-11-16 10:02:08 +02:00
doc Doc: Fix reference to Qt5 CMake package 2020-11-19 17:27:30 +01:00
examples Rename Application Example 2020-11-26 14:43:20 +01:00
lib Purge all fonts 2015-08-18 19:59:14 +00:00
mkspecs Change android target SDK version to 29 2020-11-26 20:05:41 +01:00
qmake Replace discouraged Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPE 2020-11-30 17:16:21 +01:00
src Fix QVariant/QMetaType::compare APIs 2020-11-30 17:16:22 +01:00
tests Fix QVariant/QMetaType::compare APIs 2020-11-30 17:16:22 +01:00
util Add a note explaining what a macrolanguage is 2020-11-24 18:54:45 +01:00
.cmake.conf CMake: Bump the minimum required CMake version to build Qt to 3.18 2020-11-03 13:06:14 +01:00
.gitattributes Give batch files CRLF line endings 2020-11-04 15:02:29 +00:00
.gitignore .gitignore: Qt Creator files cleanup 2020-09-25 07:50:15 +02:00
.lgtm.yml Skip LGTM analysis for the bootstrap library and tools 2020-07-16 01:04:34 +02:00
.prev_configure.cmake CMake: Fix detection of the ltcg feature 2020-11-06 22:03:50 +01:00
.prev_qt_cmdline.cmake CMake: Regenerate configure.cmake files 2020-09-28 15:48:17 +02:00
.qmake.conf Bump version 2019-12-17 12:41:31 +01:00
.tag Update the git-archive export options 2012-09-07 15:39:31 +02:00
CMakeLists.txt CMake: Name QT_NO_MAKE_*/BUILD_* variables consistently 2020-11-20 20:38:03 +01:00
INSTALL INSTALL: Remove outdated reference to Windows CE 2019-02-13 13:01:57 +00:00
LICENSE.FDL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.GPL2 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3-EXCEPT Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPLv3 Remove LICENSE.GPLv3, LICENSE.LGPLv21, LGPL_EXCEPTION.txt 2018-04-16 11:02:14 +00:00
LICENSE.QT-LICENSE-AGREEMENT Update enterprise license agreement v4.2.1 2019-12-18 13:07:19 +02:00
config_help.txt Android: fix configure help for --android-abis 2020-11-12 23:11:40 +02:00
configure configure: Fix call without options 2020-11-07 19:33:37 +01:00
configure.bat CMake: Fix Windows top-level configure.bat 2020-11-03 13:06:14 +01:00
configure.cmake CMake: Fix detection of the ltcg feature 2020-11-06 22:03:50 +01:00
configure.json By default don't try to use pkg-config when targeting Android 2020-09-28 15:48:17 +02:00
configure.pri Android: allow setting javac build version from the configure script 2020-09-16 20:55:08 +03:00
dependencies.yaml Re-add dependencies.yaml now that qt5.git wip/qt6 builds fine 2019-09-18 13:19:31 +02:00
qt_cmdline.cmake CMake: Fixup outdated configure.cmake files 2020-11-10 14:23:09 +01:00
qtbase.pro Update qmake before building src 2020-08-19 18:25:51 +02:00
sync.profile Generate QUtf8StringView header file from qutf8stringview.h 2020-11-07 08:35:11 +00:00