diff options
author | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2020-09-11 15:08:26 +0200 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2020-10-08 18:13:34 +0200 |
commit | f69144471bd2e6a6b92f57e7727f28af9386d846 (patch) | |
tree | 81fd3633ceced7b25fc3c70f317924e631136d84 /tests | |
parent | 6c7ed4c013393ce414f02fe4c9a88ebebeb3e47d (diff) |
Allow getting a const pointer out of a variant containing pointer
Currently
A a;
QVariant::fromValue(&a).value<const A*>() == nullptr;
Still casting non const to const is safe, and worked in Qt5.
After this change
A a;
QVariant::fromValue(&a).value<const A*>() == &a;
Change-Id: I257049d084c712b00a338a2943d379aa478e0981
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 251bb803b4..8df3b4055b 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -169,6 +169,7 @@ private slots: void qvariant_cast_QObject_derived(); void qvariant_cast_QObject_wrapper(); void qvariant_cast_QSharedPointerQObject(); + void qvariant_cast_const(); void toLocale(); @@ -2579,6 +2580,17 @@ void tst_QVariant::qvariant_cast_QSharedPointerQObject() qRegisterMetaType<QSharedPointer<QObject> >(); } +void tst_QVariant::qvariant_cast_const() +{ + int i = 42; + QVariant v = QVariant::fromValue(&i); + QVariant vConst = QVariant::fromValue(const_cast<const int*>(&i)); + QCOMPARE(v.value<int *>(), &i); + QCOMPARE(v.value<const int *>(), &i); + QCOMPARE(vConst.value<int *>(), nullptr); + QCOMPARE(vConst.value<const int *>(), &i); +} + void tst_QVariant::convertToQUint8() const { /* qint8. */ |