summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKari Oikarinen <kari.oikarinen@qt.io>2020-01-30 12:46:47 +0200
committerKari Oikarinen <kari.oikarinen@qt.io>2020-02-01 11:07:08 +0200
commit89f443dfbc980313f19cc8c6a205491a41c9926a (patch)
tree2f254ac396ea49feab31db5f6c73acc40e3f23b1 /tests
parentbeede51bca1a43befe42499ad784af57d2450162 (diff)
QScopeGuard: Fix build failures with qScopeGuard()
Partially reverts 4f077b7e5ff1081afc0e362bdab6522c2b7ee43b. Can't overload with forwarding references and lvalue references. Use a single forwarding reference overload, but take care of not trying to create a QScopeGuard of reference type and forward instead of moving. Add tests to ensure calling with both lvalues and rvalues is possible. Change-Id: Ia034afe0a8feb08246c2c7c154a85cae37421c98 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp b/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
index 24c3023183..e5393f694e 100644
--- a/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
+++ b/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
@@ -112,12 +112,19 @@ void tst_QScopeGuard::constructionFromLvalue()
{
#ifdef __cpp_deduction_guides
Callable::resetCounts();
- Callable callable;
{
+ Callable callable;
QScopeGuard guard(callable);
}
QCOMPARE(Callable::copied, 1);
QCOMPARE(Callable::moved, 0);
+ Callable::resetCounts();
+ {
+ Callable callable;
+ auto guard = qScopeGuard(callable);
+ }
+ QCOMPARE(Callable::copied, 1);
+ QCOMPARE(Callable::moved, 0);
#else
QSKIP("This test requires C++17 Class Template Argument Deduction support enabled in the compiler.");
#endif
@@ -133,6 +140,13 @@ void tst_QScopeGuard::constructionFromRvalue()
}
QCOMPARE(Callable::copied, 0);
QCOMPARE(Callable::moved, 1);
+ Callable::resetCounts();
+ {
+ Callable callable;
+ auto guard = qScopeGuard(std::move(callable));
+ }
+ QCOMPARE(Callable::copied, 0);
+ QCOMPARE(Callable::moved, 1);
#else
QSKIP("This test requires C++17 Class Template Argument Deduction support enabled in the compiler.");
#endif