diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2023-03-22 15:21:15 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2023-04-27 13:54:59 +0200 |
commit | c81e8f8ff24d30cc4c137d6f071954958e984ce9 (patch) | |
tree | 7cbbbcafcb2525cb0cb9606a6df3da60417407fd /tests/auto/corelib/kernel/qvariant | |
parent | 6e5258b48b6ffabdec81ca809d80d02491e10220 (diff) |
QVariant: Add support for in-place construction
This avoids constructing an object just to copy (later: move) it into a
QVariant.
ChangeLog will be in a follow-up change adding emplace support.
Task-number: QTBUG-112187
Change-Id: I444e580c7d8927d41b3d21d5a521e7c475119e4c
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'tests/auto/corelib/kernel/qvariant')
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 6667d95e0d..698d117f70 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -378,6 +378,8 @@ private slots: void constructFromIncompatibleMetaType(); void copyNonDefaultConstructible(); + void inplaceConstruct(); + void getIf_int() { getIf_impl(42); } void getIf_QString() { getIf_impl(u"string"_s); }; void getIf_NonDefaultConstructible(); @@ -5720,6 +5722,23 @@ void tst_QVariant::copyNonDefaultConstructible() QCOMPARE(var2, var); } +void tst_QVariant::inplaceConstruct() +{ + { + NonDefaultConstructible ndc(42); + QVariant var(std::in_place_type<NonDefaultConstructible>, 42); + QVERIFY(get_if<NonDefaultConstructible>(&var)); + QCOMPARE(get<NonDefaultConstructible>(var), ndc); + } + + { + std::vector<int> vec {1, 2, 3, 4}; + QVariant var(std::in_place_type<std::vector<int>>, {1, 2, 3, 4}); + QVERIFY(get_if<std::vector<int>>(&var)); + QCOMPARE(get<std::vector<int>>(var), vec); + } +} + void tst_QVariant::getIf_NonDefaultConstructible() { getIf_impl(NonDefaultConstructible{42}); |