Implement QUniqueHandle::release() using std::exchange

This does not change the behavior of release() but gives more
compact code.

Task-number: QTBUG-132507
Change-Id: I5b34c80409ca0e9e9a5e9aee9ef7bc80017610af
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit ec0c62385e0df00f42bc9fb5e117cb8b994cfc96)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit b72c4988fbfbc9b695601e4ce266e8a52c264d73)
This commit is contained in:
Jøger Hansegård 2025-01-02 10:46:59 +01:00 committed by Qt Cherry-pick Bot
parent 5f3dc75ab1
commit 2e208cfc8d

View File

@ -19,6 +19,7 @@
#include <QtCore/qassert.h>
#include <memory>
#include <utility>
QT_BEGIN_NAMESPACE
@ -162,9 +163,7 @@ public:
[[nodiscard]] Type release() noexcept
{
Type handle = m_handle;
m_handle = HandleTraits::invalidValue();
return handle;
return std::exchange(m_handle, HandleTraits::invalidValue());
}
[[nodiscard]] Type *operator&() noexcept // NOLINT(google-runtime-operator)