diff options
Diffstat (limited to 'src/corelib/global/qswap.h')
-rw-r--r-- | src/corelib/global/qswap.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/corelib/global/qswap.h b/src/corelib/global/qswap.h new file mode 100644 index 0000000000..3d533c8a95 --- /dev/null +++ b/src/corelib/global/qswap.h @@ -0,0 +1,38 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QTCORE_QSWAP_H +#define QTCORE_QSWAP_H + +#include <QtCore/qtconfigmacros.h> + +#include <type_traits> +#include <utility> + +#if 0 +#pragma qt_class(QtSwap) +#pragma qt_sync_stop_processing +#endif + +QT_BEGIN_NAMESPACE + +template <typename T> +constexpr void qSwap(T &value1, T &value2) + noexcept(std::is_nothrow_swappable_v<T>) +{ + using std::swap; + swap(value1, value2); +} + +// pure compile-time micro-optimization for our own headers, so not documented: +template <typename T> +constexpr inline void qt_ptr_swap(T* &lhs, T* &rhs) noexcept +{ + T *tmp = lhs; + lhs = rhs; + rhs = tmp; +} + +QT_END_NAMESPACE + +#endif // QTCORE_QSWAP_H |