QScopedValueRollback: code tidies

Add constexpr + deploy std::exchange.

Change-Id: I4c5e6f5d35cd74c464667f633344d27c0656f0eb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This commit is contained in:
Giuseppe D'Angelo 2020-09-24 02:20:59 +02:00
parent 49517aad70
commit bf3649d639

View File

@ -52,23 +52,25 @@ class
QScopedValueRollback QScopedValueRollback
{ {
public: public:
explicit QScopedValueRollback(T &var) explicit constexpr QScopedValueRollback(T &var)
: varRef(var), oldValue(var) : varRef(var), oldValue(var)
{ {
} }
explicit QScopedValueRollback(T &var, T value) explicit constexpr QScopedValueRollback(T &var, T value)
: varRef(var), oldValue(std::move(var)) : varRef(var), oldValue(qExchange(var, std::move(value)))
{ {
varRef = std::move(value);
} }
#if __cpp_constexpr >= 201907L
constexpr
#endif
~QScopedValueRollback() ~QScopedValueRollback()
{ {
varRef = std::move(oldValue); varRef = std::move(oldValue);
} }
void commit() constexpr void commit()
{ {
oldValue = varRef; oldValue = varRef;
} }