path: root/tests/auto/corelib/tools
diff options
authorMarc Mutz <>2012-02-18 11:45:45 +0100
committerQt by Nokia <>2012-02-21 15:28:40 +0100
commit3a8da4a4843d787e9bf12973bf1fcf4da793558d (patch)
tree9a87d13388a5a83213df03af84531f6046d2375c /tests/auto/corelib/tools
parent6a6178702e8af97b943c728f1cb4ab20233835a2 (diff)
QEasingCurve: implement move constructor
The move constructor sets other.d_ptr to zero. This is safe, because after being moved from, the object is left in a state in which it can be safely destroyed (delete nullptr is a no-op). It cannot meaningfully be used anymore (most members will crash with a nullptr dereference), but in most cases, the moved-from object cannot be accessed anyway (not a named object), and if a named object is moved from, it must have been through explicit std::move(), as in the test case. The STL makes better guarantees (moved-from containers are .empty()), but I don't think it's worth introducing a null state into QEasingCurve just for supporting a use-case that should be considered a bug anyway. Change-Id: I4115b7386cdea6960507da6843a0d0196d8e4139 Reviewed-by: Lars Knoll <> Reviewed-by: Thiago Macieira <>
Diffstat (limited to 'tests/auto/corelib/tools')
1 files changed, 6 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
index 1d4e91dc00..40e3cd08b6 100644
--- a/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
+++ b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
@@ -780,6 +780,12 @@ void tst_QEasingCurve::cpp11()
QEasingCurve ec( QEasingCurve::InOutBack );
+ QEasingCurve copy = std::move(ec); // move ctor
+ QCOMPARE( copy.type(), QEasingCurve::InOutBack );
+ QVERIFY( *reinterpret_cast<void**>(&ec) == 0 );
+ }
+ {
+ QEasingCurve ec( QEasingCurve::InOutBack );
QEasingCurve copy;
const QEasingCurve::Type type = copy.type();
copy = std::move(ec); // move assignment op