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 | |
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')
-rw-r--r-- | src/corelib/tools/qpair.h | 13 | ||||
-rw-r--r-- | src/corelib/tools/qpair.qdoc | 20 |
2 files changed, 33 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; }; diff --git a/src/corelib/tools/qpair.qdoc b/src/corelib/tools/qpair.qdoc index b0caf1aaf0..dd3df8c464 100644 --- a/src/corelib/tools/qpair.qdoc +++ b/src/corelib/tools/qpair.qdoc @@ -96,6 +96,26 @@ \sa qMakePair() */ +/*! + \fn QPair::QPair(const QPair<TT1, TT2> &p) + \since 5.2 + + Constructs a pair from the other pair \a p, of types TT1 and TT2. This + constructor will fail if \c first cannot be initialized from \c p.first or + if \c second cannot be initialized from \c p.second. + + \sa qMakePair() +*/ + +/*! + \fn QPair &QPair::operator=(const QPair<TT1, TT2> &p) + \since 5.2 + + Copies the pair \a p onto this pair. + + \sa qMakePair() +*/ + /*! \fn bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) \relates QPair |