diff options
-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 |