From 3242676cd0d3af336f1d152f13fe86592af46da8 Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Fri, 7 Jun 2024 03:22:27 +0300 Subject: [PATCH] QDirListing: make the class move-only Define both move SMF out-of-line, otherwise MSVC complains that the private class isn't fully defined at the point of destruction of std::unique_ptr. Both move SMF are = default'ed; GCC didn't show a warning about this issue... different implementations, I guess. "partially-formed" docs boilerplate borrowed from other existing classes. Found in API review. Task-number: QTBUG-125859 Change-Id: I98b57a14bd94e407d9bfafa9ef32cf40c978d7df Reviewed-by: Thiago Macieira (cherry picked from commit 4e32a45d492fb057cc996efc6791030f3dd525d5) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/io/qdirlisting.cpp | 18 ++++++++++++++++++ src/corelib/io/qdirlisting.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/corelib/io/qdirlisting.cpp b/src/corelib/io/qdirlisting.cpp index bc4d7c98e9e..9bfd414a6a9 100644 --- a/src/corelib/io/qdirlisting.cpp +++ b/src/corelib/io/qdirlisting.cpp @@ -479,6 +479,24 @@ QDirListing::QDirListing(const QString &path, const QStringList &nameFilters, QD d->init(); } +/*! + Move constructor. Moves \a other into this QDirListing. + +//! [partially-formed] + \note The moved-from object \a other is placed in a partially-formed state, + in which the only valid operations are destruction and assignment of a new + value. +//! [partially-formed] +*/ +QDirListing::QDirListing(QDirListing &&other) = default; + +/*! + Move-assigns \a other to this QDirListing. + + \include qdirlisting.cpp partially-formed +*/ +QDirListing &QDirListing::operator=(QDirListing &&other) = default; + /*! Destroys the QDirListing. */ diff --git a/src/corelib/io/qdirlisting.h b/src/corelib/io/qdirlisting.h index d19fe3c6663..7b6ca470c48 100644 --- a/src/corelib/io/qdirlisting.h +++ b/src/corelib/io/qdirlisting.h @@ -32,6 +32,9 @@ public: QDir::Filters filters = QDir::NoFilter, IteratorFlags flags = IteratorFlag::NoFlag); + QDirListing(QDirListing &&); + QDirListing &operator=(QDirListing &&); + ~QDirListing(); QString iteratorPath() const;