Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision 390630115fa35ef925f9e8e3037ed8611c6097c0)
+++ src/Common/utility.h	(revision c8dfcd3a4ea472775bb425585268096226f404ce)
@@ -246,4 +246,18 @@
 }
 
+// RAII object to regulate "save and restore" behaviour, e.g.
+// void Foo::bar() {
+//   ValueGuard<int> guard(var); // var is a member of type Foo
+//   var = ...;
+// } // var's original value is restored
+template< typename T >
+struct ValueGuard {
+	T old;
+	T& ref;
+
+	ValueGuard(T& inRef) : old(inRef), ref(inRef) {}
+	~ValueGuard() { ref = old; }
+};
+
 #endif // _UTILITY_H
 
