qt6-bb10/tests/auto/corelib/global
Giuseppe D'Angelo 6e2c9dc7a6 QKeyCombination: move the operators into namespace Qt
QKeyCombination comes with a few operators that combine a Qt::Modifier
and a Qt::Key. These operators are normally defined in Qt's own
namespace (which by default is the global namespace), but indeed the
arguments are declared in the (nested) namespace `Qt`. This is wrong,
as their lookup will fail if a user places an unrelated operator| in
a custom namespace U and then tries to use QKeyCombination's operators:
the overload in namespace U will hide the ones defined globally;
unqualified lookup (as per [over.match.oper]) will search in the
namespaces associated with the parameters (QtNamespace::Qt), but the
operators are *not* in there!

In other words:

namespace NS {
  X operator|(Y, Z);
  auto kc = Qt::Shift | Qt::Key_A;
}

fails to compile if QKeyCombination's operator| is *not* defined in the
`Qt` namespace.

Fix this by indeed defining the operator where it belongs. The functions
are all inline and non-exported so there should not be any ABI issues.

Change-Id: I6d7a4e976fb109b7bf514011142b9a9573e507c5
Pick-to: 6.7 6.5 6.2
Fixes: QTBUG-126820
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 1f77e8566f71d98f4bc6bbf5092594e67a32f268)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2024-07-31 15:21:36 +00:00
..
q20 Add copyright and licensing to build system files missing it 2024-05-21 17:23:21 +02:00
q_func_info Change license for tests files 2024-02-04 09:56:42 +01:00
qcompare Rework comparison helper macros to get rid of conditional noexcept 2024-07-16 11:32:19 +00:00
qcomparehelpers Rework comparison helper macros to get rid of conditional noexcept 2024-07-16 11:32:19 +00:00
qflags Change license for tests files 2024-02-04 09:56:42 +01:00
qfloat16 tst_qfloat16: don't cause UB in converting from float to ints 2024-05-30 17:23:35 -03:00
qgetputenv Change license for tests files 2024-02-04 09:56:42 +01:00
qglobal Long live Q_DECLARE_SHARED_NS! 2024-07-08 11:29:50 +00:00
qglobalstatic Change license for tests files 2024-02-04 09:56:42 +01:00
qhooks Change license for tests files 2024-02-04 09:56:42 +01:00
qkeycombination QKeyCombination: move the operators into namespace Qt 2024-07-31 15:21:36 +00:00
qlibraryinfo qt.conf: add private "merge_qt_conf" option 2024-05-28 20:19:14 +02:00
qlogging ptests: Fix qlogging to use relative folder 2024-05-03 11:58:54 +03:00
qnativeinterface Change license for tests files 2024-02-04 09:56:42 +01:00
qnumeric Fix truncation warnings in tst_qnumeric 2024-03-16 15:41:03 +01:00
qoperatingsystemversion Fix build of tst_qoperatingsystemversion.cpp with C++20 2024-03-19 21:09:38 +01:00
qrandomgenerator Change license for tests files 2024-02-04 09:56:42 +01:00
qtendian Change license for tests files 2024-02-04 09:56:42 +01:00
qxp Add copyright and licensing to build system files missing it 2024-05-21 17:23:21 +02:00
CMakeLists.txt tst_QCompareHelpers: port to QTEST_THROW_ON_FAIL 2024-06-17 23:17:50 +00:00