From 152cb77f83c6fe192b89cce81329dc57cf00de22 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Fri, 1 Nov 2024 10:09:03 +0100 Subject: [PATCH] Add missing QChronoTimezonePrivate::clone() Remove QTimeZonePrivate::clone()'s implementation and declare it = 0, so we force any future backend implementations to define it. Make the default copy-constructor QCTP needs for its implementation explicit, so it won't be deleted. Remove the disabling of copy and move. This leaves move unmentioned, but the other QTZ backends seem to cope without. Amends 755733f5917b1389277b61336f8ca5a03873e446. Task-number: QTBUG-68812 Change-Id: I390576849c8536e4553b8a903ee11159708e579d Reviewed-by: Marc Mutz --- src/corelib/time/qtimezoneprivate.cpp | 5 ----- src/corelib/time/qtimezoneprivate_chrono.cpp | 5 +++++ src/corelib/time/qtimezoneprivate_p.h | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/corelib/time/qtimezoneprivate.cpp b/src/corelib/time/qtimezoneprivate.cpp index a5fc221b202..bf00c1c544d 100644 --- a/src/corelib/time/qtimezoneprivate.cpp +++ b/src/corelib/time/qtimezoneprivate.cpp @@ -130,11 +130,6 @@ QTimeZonePrivate::~QTimeZonePrivate() { } -QTimeZonePrivate *QTimeZonePrivate::clone() const -{ - return new QTimeZonePrivate(*this); -} - bool QTimeZonePrivate::operator==(const QTimeZonePrivate &other) const { // TODO Too simple, but need to solve problem of comparing different derived classes diff --git a/src/corelib/time/qtimezoneprivate_chrono.cpp b/src/corelib/time/qtimezoneprivate_chrono.cpp index 94e1791b799..e317ab522ef 100644 --- a/src/corelib/time/qtimezoneprivate_chrono.cpp +++ b/src/corelib/time/qtimezoneprivate_chrono.cpp @@ -59,6 +59,11 @@ QChronoTimeZonePrivate::QChronoTimeZonePrivate(QByteArrayView id) m_id.assign(m_timeZone->name()); } +QChronoTimeZonePrivate *QChronoTimeZonePrivate::clone() const +{ + return new QChronoTimeZonePrivate(*this); +} + QChronoTimeZonePrivate::~QChronoTimeZonePrivate() = default; diff --git a/src/corelib/time/qtimezoneprivate_p.h b/src/corelib/time/qtimezoneprivate_p.h index b3a86e9cdbd..5fb6ccf5504 100644 --- a/src/corelib/time/qtimezoneprivate_p.h +++ b/src/corelib/time/qtimezoneprivate_p.h @@ -76,7 +76,7 @@ public: QTimeZonePrivate(const QTimeZonePrivate &other); virtual ~QTimeZonePrivate(); - virtual QTimeZonePrivate *clone() const; + virtual QTimeZonePrivate *clone() const = 0; bool operator==(const QTimeZonePrivate &other) const; bool operator!=(const QTimeZonePrivate &other) const; @@ -236,10 +236,12 @@ private: #if QT_CONFIG(timezone_tzdb) class QChronoTimeZonePrivate final : public QTimeZonePrivate { + QChronoTimeZonePrivate(const QChronoTimeZonePrivate &) = default; public: QChronoTimeZonePrivate(); QChronoTimeZonePrivate(QByteArrayView id); ~QChronoTimeZonePrivate() override; + QChronoTimeZonePrivate *clone() const override; QByteArray systemTimeZoneId() const override; @@ -259,7 +261,6 @@ public: private: const std::chrono::time_zone *const m_timeZone; - Q_DISABLE_COPY_MOVE(QChronoTimeZonePrivate) }; #elif defined(Q_OS_DARWIN) class Q_AUTOTEST_EXPORT QMacTimeZonePrivate final : public QTimeZonePrivate