diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2014-02-23 00:01:19 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-10-07 19:07:51 +0000 |
commit | c644fab0ed92d79d9ce4e2e756ab1c5634e8d3df (patch) | |
tree | de279bd80d1ce7e8c1dac23ee7325bd16b376aa8 /src | |
parent | abf51f0b274f100736f227d550b65ba6c5ae9266 (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.h | 10 |
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); |