QScopedPointer: deprecate swap
Follow up of 612a01be6513894ab1ec5a36b699a2142ba7f35c (deprecating QSP::take()): for the same reasons, swap() functions do not belong to QScopedPointer, or they would allow the pointer to escape: QScopedPointer a; { QScopedPointer b = ~~~; qSwap(a, b); } // b's pointer escaped its scope Deprecate them as well. [ChangeLog][QtCore][QScopedPointer] QScopedPointer swapping functions have been deprecated, as they would allow the managed pointer to escape the scope. If you need those semantics, use std::unique_ptr instead. Change-Id: I2b0938b62f2ef5a3561f61f595a3fb4c505a8f08 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
712117f8b8
commit
fe9d7bf759
@ -267,6 +267,10 @@ QT_BEGIN_NAMESPACE
|
||||
*/
|
||||
|
||||
/*! \fn template <typename T, typename Cleanup> void QScopedPointer<T, Cleanup>::swap(QScopedPointer<T, Cleanup> &lhs, QScopedPointer<T, Cleanup> &rhs)
|
||||
|
||||
\obsolete Use std::unique_ptr instead; this function may let a pointer
|
||||
escape its scope.
|
||||
|
||||
Swaps \a lhs with \a rhs.
|
||||
*/
|
||||
|
||||
@ -333,7 +337,11 @@ QT_BEGIN_NAMESPACE
|
||||
*/
|
||||
|
||||
/*! \fn template <typename T, typename Cleanup> void QScopedArrayPointer<T, Cleanup>::swap(QScopedArrayPointer<T, Cleanup> &other)
|
||||
Swap this pointer with \a other.
|
||||
|
||||
\obsolete Use std::unique_ptr instead; this function may let a pointer
|
||||
escape its scope.
|
||||
|
||||
Swap this pointer with \a other.
|
||||
*/
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -169,10 +169,13 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
#if QT_DEPRECATED_SINCE(6, 2)
|
||||
QT_DEPRECATED_VERSION_X_6_2("Use std::unique_ptr instead of QScopedPointer.")
|
||||
void swap(QScopedPointer<T, Cleanup> &other) noexcept
|
||||
{
|
||||
qSwap(d, other.d);
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef T *pointer;
|
||||
|
||||
@ -206,8 +209,11 @@ public:
|
||||
return !rhs.isNull();
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(6, 2)
|
||||
QT_DEPRECATED_VERSION_X_6_2("Use std::unique_ptr instead of QScopedPointer.")
|
||||
friend void swap(QScopedPointer<T, Cleanup> &p1, QScopedPointer<T, Cleanup> &p2) noexcept
|
||||
{ p1.swap(p2); }
|
||||
#endif
|
||||
|
||||
protected:
|
||||
T *d;
|
||||
@ -240,8 +246,11 @@ public:
|
||||
return this->d[i];
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(6, 2)
|
||||
QT_DEPRECATED_VERSION_X_6_2("Use std::unique_ptr instead of QScopedArrayPointer.")
|
||||
void swap(QScopedArrayPointer &other) noexcept // prevent QScopedPointer <->QScopedArrayPointer swaps
|
||||
{ QScopedPointer<T, Cleanup>::swap(other); }
|
||||
#endif
|
||||
|
||||
private:
|
||||
explicit inline QScopedArrayPointer(void *)
|
||||
@ -259,9 +268,12 @@ private:
|
||||
Q_DISABLE_COPY(QScopedArrayPointer)
|
||||
};
|
||||
|
||||
#if QT_DEPRECATED_SINCE(6, 2)
|
||||
template <typename T, typename Cleanup>
|
||||
QT_DEPRECATED_VERSION_X_6_2("Use std::unique_ptr instead of QScopedArrayPointer.")
|
||||
inline void swap(QScopedArrayPointer<T, Cleanup> &lhs, QScopedArrayPointer<T, Cleanup> &rhs) noexcept
|
||||
{ lhs.swap(rhs); }
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user