diff options
Diffstat (limited to 'src/corelib/tools/qscopedpointer.h')
-rw-r--r-- | src/corelib/tools/qscopedpointer.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index 1637bb40a5..59bae9b967 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -67,9 +67,10 @@ typedef QScopedPointerObjectDeleteLater<QObject> QScopedPointerDeleteLater; #endif template <typename T, typename Cleanup = QScopedPointerDeleter<T> > -class [[nodiscard]] QScopedPointer +class QScopedPointer { public: + Q_NODISCARD_CTOR explicit QScopedPointer(T *p = nullptr) noexcept : d(p) { } @@ -187,15 +188,17 @@ private: }; template <typename T, typename Cleanup = QScopedPointerArrayDeleter<T> > -class [[nodiscard]] QScopedArrayPointer : public QScopedPointer<T, Cleanup> +class QScopedArrayPointer : public QScopedPointer<T, Cleanup> { template <typename Ptr> using if_same_type = typename std::enable_if<std::is_same<typename std::remove_cv<T>::type, Ptr>::value, bool>::type; public: + Q_NODISCARD_CTOR inline QScopedArrayPointer() : QScopedPointer<T, Cleanup>(nullptr) {} inline ~QScopedArrayPointer() = default; template <typename D, if_same_type<D> = true> + Q_NODISCARD_CTOR explicit QScopedArrayPointer(D *p) : QScopedPointer<T, Cleanup>(p) { |