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
{
public:
explicit QScopedValueRollback(T &var)
explicit constexpr QScopedValueRollback(T &var)
: varRef(var), oldValue(var)
{
}
explicit QScopedValueRollback(T &var, T value)
: varRef(var), oldValue(std::move(var))
explicit constexpr QScopedValueRollback(T &var, T value)
: varRef(var), oldValue(qExchange(var, std::move(value)))
{
varRef = std::move(value);
}
#if __cpp_constexpr >= 201907L
constexpr
#endif
~QScopedValueRollback()
{
varRef = std::move(oldValue);
}
void commit()
constexpr void commit()
{
oldValue = varRef;
}