Assign new value to some variable and restore the original value when this object goes out of scope.
ScopedAssign(T &var_, T newValue)
ScopedAssign & operator=(const ScopedAssign &)=delete
ScopedAssign & operator=(ScopedAssign &&)=delete
ScopedAssign(const ScopedAssign &)=delete
ScopedAssign(ScopedAssign &&)=delete