diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-09-26 17:38:14 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-09-28 17:39:21 +0000 |
commit | a0dfa8c4d29a005009d04dcb52452efb9d74e26e (patch) | |
tree | 7b400e7a8fc2dd2db99d780e94ff4bf1b63ce375 /src/corelib/tools | |
parent | d06d22fbc0ef1d070408fe7e1f6a5c33e6f8c4e2 (diff) |
Replace qExchange calls with std::exchange
qExchange is one of the few remaining functionalities that have not been
moved out of qglobal. Given that std::exchange exists in the standard, we
can simply move to it everywhere...
...if it weren't for the fact that std::exchange is only constexpr in
C++20, and only has its noexceptness specified in (most likely) C++23.
Still, we want to move to the existing std functionality where
possible, to allow the removal of qglobal includes in lieu of something
more fine-grained in the future.
So leave any constexpr calls[1] alone for now (and observe that none of
our current usages cares about the conditional noexceptness), but
replace everything else.
[1] QScopedValueRollback' ctor and QExplicitlySharedDataPointerV2::take
Task-number: QTBUG-99313
Change-Id: I599cb9846cf319c7ffd3457130938347a75aad25
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r-- | src/corelib/tools/qhash.h | 8 | ||||
-rw-r--r-- | src/corelib/tools/qscopedpointer.h | 4 | ||||
-rw-r--r-- | src/corelib/tools/qscopeguard.h | 2 | ||||
-rw-r--r-- | src/corelib/tools/qshareddata.h | 10 | ||||
-rw-r--r-- | src/corelib/tools/qshareddata_impl.h | 2 |
5 files changed, 13 insertions, 13 deletions
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 5075459531..9f06b5d36e 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -172,7 +172,7 @@ struct MultiNode MultiNode(MultiNode &&other) : key(other.key), - value(qExchange(other.value, nullptr)) + value(std::exchange(other.value, nullptr)) { } @@ -203,7 +203,7 @@ struct MultiNode void insertMulti(Args &&... args) { Chain *e = new Chain{ T(std::forward<Args>(args)...), nullptr }; - e->next = qExchange(value, e); + e->next = std::exchange(value, e); } template<typename ...Args> void emplaceValue(Args &&... args) @@ -1412,8 +1412,8 @@ public: return *this; } QMultiHash(QMultiHash &&other) noexcept - : d(qExchange(other.d, nullptr)), - m_size(qExchange(other.m_size, 0)) + : d(std::exchange(other.d, nullptr)), + m_size(std::exchange(other.m_size, 0)) { } QMultiHash &operator=(QMultiHash &&other) noexcept(std::is_nothrow_destructible<Node>::value) diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index 1ad7acb0f4..1637bb40a5 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -120,7 +120,7 @@ public: { if (d == other) return; - T *oldD = qExchange(d, other); + T *oldD = std::exchange(d, other); Cleanup::cleanup(oldD); } @@ -128,7 +128,7 @@ public: QT_DEPRECATED_VERSION_X_6_1("Use std::unique_ptr instead, and call release().") T *take() noexcept { - T *oldD = qExchange(d, nullptr); + T *oldD = std::exchange(d, nullptr); return oldD; } #endif diff --git a/src/corelib/tools/qscopeguard.h b/src/corelib/tools/qscopeguard.h index 2639b41222..5bd202ce33 100644 --- a/src/corelib/tools/qscopeguard.h +++ b/src/corelib/tools/qscopeguard.h @@ -28,7 +28,7 @@ public: QScopeGuard(QScopeGuard &&other) noexcept : m_func(std::move(other.m_func)) - , m_invoke(qExchange(other.m_invoke, false)) + , m_invoke(std::exchange(other.m_invoke, false)) { } diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h index be848e2ef8..813e9d6c7a 100644 --- a/src/corelib/tools/qshareddata.h +++ b/src/corelib/tools/qshareddata.h @@ -66,7 +66,7 @@ public: if (ptr != d) { if (ptr) ptr->ref.ref(); - T *old = qExchange(d, ptr); + T *old = std::exchange(d, ptr); if (old && !old->ref.deref()) delete old; } @@ -82,7 +82,7 @@ public: reset(o); return *this; } - QSharedDataPointer(QSharedDataPointer &&o) noexcept : d(qExchange(o.d, nullptr)) {} + QSharedDataPointer(QSharedDataPointer &&o) noexcept : d(std::exchange(o.d, nullptr)) {} QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QSharedDataPointer) operator bool () const noexcept { return d != nullptr; } @@ -135,7 +135,7 @@ public: T *data() const noexcept { return d; } T *get() const noexcept { return d; } const T *constData() const noexcept { return d; } - T *take() noexcept { return qExchange(d, nullptr); } + T *take() noexcept { return std::exchange(d, nullptr); } void detach() { if (d && d->ref.loadRelaxed() != 1) detach_helper(); } @@ -163,7 +163,7 @@ public: if (ptr != d) { if (ptr) ptr->ref.ref(); - T *old = qExchange(d, ptr); + T *old = std::exchange(d, ptr); if (old && !old->ref.deref()) delete old; } @@ -179,7 +179,7 @@ public: reset(o); return *this; } - QExplicitlySharedDataPointer(QExplicitlySharedDataPointer &&o) noexcept : d(qExchange(o.d, nullptr)) {} + QExplicitlySharedDataPointer(QExplicitlySharedDataPointer &&o) noexcept : d(std::exchange(o.d, nullptr)) {} QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QExplicitlySharedDataPointer) operator bool () const noexcept { return d != nullptr; } diff --git a/src/corelib/tools/qshareddata_impl.h b/src/corelib/tools/qshareddata_impl.h index 61a9d1d105..a0216397cc 100644 --- a/src/corelib/tools/qshareddata_impl.h +++ b/src/corelib/tools/qshareddata_impl.h @@ -51,7 +51,7 @@ public: } QExplicitlySharedDataPointerV2(QExplicitlySharedDataPointerV2 &&other) noexcept - : d(qExchange(other.d, nullptr)) + : d(std::exchange(other.d, nullptr)) { } |