diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-04-28 21:23:53 -0700 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-08 06:05:35 +0200 |
commit | 8aff3d0bed78c64496178480af0545ec206e9938 (patch) | |
tree | fc21f81437a90fcbc37bde40c5a5363db0758a6d /src/corelib/tools/qpair.h | |
parent | 620f788f8690b10ef101f883d4cdacd2a277f948 (diff) |
Add a pair of constructor/assignment function pairs to QPair
To allow copying one QPair of two types to a QPair of two different
types.
Change-Id: Ie7aa84cf5a361be6b7d242517578172c35bcacfd
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src/corelib/tools/qpair.h')
-rw-r--r-- | src/corelib/tools/qpair.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/corelib/tools/qpair.h b/src/corelib/tools/qpair.h index 96b1b65e33..9b8691a3d8 100644 --- a/src/corelib/tools/qpair.h +++ b/src/corelib/tools/qpair.h @@ -57,6 +57,19 @@ struct QPair QPair(const T1 &t1, const T2 &t2) : first(t1), second(t2) {} // compiler-generated copy/move ctor/assignment operators are fine! + template <typename TT1, typename TT2> + QPair(const QPair<TT1, TT2> &p) : first(p.first), second(p.second) {} + template <typename TT1, typename TT2> + QPair &operator=(const QPair<TT1, TT2> &p) + { first = p.first; second = p.second; return *this; } +#ifdef Q_COMPILER_RVALUE_REFS + template <typename TT1, typename TT2> + QPair(QPair<TT1, TT2> &&p) : first(std::move(p.first)), second(std::move(p.second)) {} + template <typename TT1, typename TT2> + QPair &operator=(QPair<TT1, TT2> &&p) + { first = std::move(p.first); second = std::move(p.second); return *this; } +#endif + T1 first; T2 second; }; |