diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2014-02-25 23:07:46 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-28 21:27:41 +0100 |
commit | db8167c224348fe828aaa0746701b7fa3040c2df (patch) | |
tree | c733df7fc7c7509db817e60e27f4aea7757231cb /src/gui/painting/qpen.h | |
parent | 98d7d4c1e51010a0ca48ff59f30342e81fd0d066 (diff) |
QPen: add move constructor
After this change, the relation between copy/move constructor calls in QtGui is
something like 40/16.
A moved-from QPen can only be copied, assigned-to or else destroyed. This required
adding a nullptr check to the copy ctor and the dtor and rewriting copy assignment
(which used non-nullptr-safe qAtomicAssign) in terms of copy construction and
swapping.
Extensive tests included. They are implemented such that they work in C++98 as well
as C++11 mode, but they naturally test move semantics only in a C++11 build.
Change-Id: If68f37c10b8eeefb2478cbae386cd2e38b4f6e19
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/gui/painting/qpen.h')
-rw-r--r-- | src/gui/painting/qpen.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gui/painting/qpen.h b/src/gui/painting/qpen.h index c5144f784f..486f699476 100644 --- a/src/gui/painting/qpen.h +++ b/src/gui/painting/qpen.h @@ -72,6 +72,8 @@ public: QPen &operator=(const QPen &pen); #ifdef Q_COMPILER_RVALUE_REFS + inline QPen(QPen &&other) + : d(other.d) { other.d = 0; } inline QPen &operator=(QPen &&other) { qSwap(d, other.d); return *this; } #endif |