35template <QObjectDerived T>
class QObjectUniquePtr
38 QObjectUniquePtr (T * ptr =
nullptr) : ptr_ (ptr) { }
40 ~QObjectUniquePtr () { reset (); }
42 Q_DISABLE_COPY (QObjectUniquePtr)
45 QObjectUniquePtr (QObjectUniquePtr &&other) noexcept : ptr_ (other.release ())
48 QObjectUniquePtr &operator= (QObjectUniquePtr &&other)
noexcept
52 reset (other.release ());
58 QObjectUniquePtr &operator= (QObjectUniquePtr<U> &&other)
noexcept
59 requires std::derived_from<U, T>
63 reset (other.release ());
68 void reset (T * ptr =
nullptr)
87 T * get ()
const {
return ptr_; }
88 T * operator->()
const {
return ptr_; }
89 T &operator* ()
const {
return *ptr_; }
90 explicit operator bool ()
const {
return !ptr_.isNull (); }
92 bool operator== (std::nullptr_t)
const {
return ptr_.isNull (); }
95 explicit operator QPointer<T> ()
const {
return ptr_; }