QScopedPointer: deprecate swap
Follow up of 612a01be65
(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>
bb10
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…
Reference in New Issue