summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2014-02-23 00:01:19 +0100
committerMarc Mutz <marc.mutz@kdab.com>2015-10-07 19:07:51 +0000
commitc644fab0ed92d79d9ce4e2e756ab1c5634e8d3df (patch)
treede279bd80d1ce7e8c1dac23ee7325bd16b376aa8 /src
parentabf51f0b274f100736f227d550b65ba6c5ae9266 (diff)
QWeakPointer: enable move semantics
Also add some tests for QSharedPointer move semantics, too. Change-Id: I1bdd1fe140acafabe5bc6bff8af49a053ec1f4d5 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index c23193c51a..ace6c5d093 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -617,6 +617,16 @@ public:
QWeakPointer(const QWeakPointer &other) Q_DECL_NOTHROW : d(other.d), value(other.value)
{ if (d) d->weakref.ref(); }
+#ifdef Q_COMPILER_RVALUE_REFS
+ QWeakPointer(QWeakPointer &&other) Q_DECL_NOTHROW
+ : d(other.d), value(other.value)
+ {
+ other.d = Q_NULLPTR;
+ other.value = Q_NULLPTR;
+ }
+ QWeakPointer &operator=(QWeakPointer &&other) Q_DECL_NOTHROW
+ { QWeakPointer moved(std::move(other)); swap(moved); return *this; }
+#endif
QWeakPointer &operator=(const QWeakPointer &other) Q_DECL_NOTHROW
{
QWeakPointer copy(other);