diff --git a/src/corelib/tools/qscopedvaluerollback.h b/src/corelib/tools/qscopedvaluerollback.h index b8ceff66652..d076b67330c 100644 --- a/src/corelib/tools/qscopedvaluerollback.h +++ b/src/corelib/tools/qscopedvaluerollback.h @@ -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; }