path: root/src/corelib/global/qglobal.cpp
diff options
authorMarc Mutz <>2019-05-13 20:43:27 +0200
committerMarc Mutz <>2019-05-14 17:21:40 +0000
commita73385e2cfd0455f09166cdb380876ba8b26fb5f (patch)
tree02d837ce2b268089d7f8676b98a9db27ed6dcb58 /src/corelib/global/qglobal.cpp
parent969e60e075b2560f499b7a98b502401a23c8c319 (diff)
Short live qExchange()!
This is a 1:1 replacement for std::exchange, and should be removed once Qt fully depends on C++14. It's too versatile a tool to miss it, so provide a copy. [ChangeLog][QtCore][QtGlobal] Added qExchange(), a drop-in for C++14's std::exchange() Change-Id: I31c4f1141e7a99f99ea65eb36ddf9d68b7847337 Reviewed-by: Thiago Macieira <>
Diffstat (limited to 'src/corelib/global/qglobal.cpp')
1 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index 88a61562cb..3436a19881 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -3806,6 +3806,17 @@ bool qunsetenv(const char *varName)
+ \fn template <typename T, typename U = T> T qExchange(T &obj, U &&newValue)
+ \relates <QtGlobal>
+ \since 5.14
+ Replaces the value of \a obj with \a newValue and returns the old value of \a obj.
+ This is Qt's implementation of std::exchange(). It differs from std::exchange()
+ only in that it is \c constexpr already in C++14, and available on all supported
+ compilers.
\macro QT_TR_NOOP(sourceText)
\relates <QtGlobal>