diff --git a/src/corelib/io/qdirlisting.cpp b/src/corelib/io/qdirlisting.cpp index 21f5f959b47..823963c2d31 100644 --- a/src/corelib/io/qdirlisting.cpp +++ b/src/corelib/io/qdirlisting.cpp @@ -605,6 +605,8 @@ QDirListing::QDirListing(const QString &path, const QStringList &nameFilters, ui } /*! + \fn QDirListing::QDirListing(QDirListing &&other) + Move constructor. Moves \a other into this QDirListing. //! [partially-formed] @@ -613,20 +615,22 @@ QDirListing::QDirListing(const QString &path, const QStringList &nameFilters, ui value. //! [partially-formed] */ -QDirListing::QDirListing(QDirListing &&other) = default; /*! + \fn QDirListing &QDirListing::operator=(QDirListing &&other) + Move-assigns \a other to this QDirListing. \include qdirlisting.cpp partially-formed */ -QDirListing &QDirListing::operator=(QDirListing &&other) = default; - /*! Destroys the QDirListing. */ -QDirListing::~QDirListing() = default; +QDirListing::~QDirListing() +{ + delete d; +} /*! Returns the directory path used to construct this QDirListing. @@ -690,7 +694,7 @@ QStringList QDirListing::nameFilters() const QDirListing::const_iterator QDirListing::begin() const { d->beginIterating(); - const_iterator it{d.get()}; + const_iterator it{d}; return ++it; } diff --git a/src/corelib/io/qdirlisting.h b/src/corelib/io/qdirlisting.h index 10fc86dc33f..7e70f41594b 100644 --- a/src/corelib/io/qdirlisting.h +++ b/src/corelib/io/qdirlisting.h @@ -45,8 +45,11 @@ public: Q_CORE_EXPORT explicit QDirListing(const QString &path, const QStringList &nameFilters, IteratorFlags flags = IteratorFlag::Default); - QDirListing(QDirListing &&); - QDirListing &operator=(QDirListing &&); + QDirListing(QDirListing &&other) noexcept + : d{std::exchange(other.d, nullptr)} {} + QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QDirListing) + + void swap(QDirListing &other) noexcept { qt_ptr_swap(d, other.d); } Q_CORE_EXPORT ~QDirListing(); @@ -137,7 +140,7 @@ private: Q_CORE_EXPORT QDirListing(const QString &path, const QStringList &nameFilters, uint dirFilters, uint qdirIteratorFlags = 0); // QDirIterator::NoIteratorFlags == 0x0 - std::unique_ptr d; + QDirListingPrivate *d; friend class QDir; friend class QDirPrivate; friend class QDirIteratorPrivate;