1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#pragma once namespace AK { template<typename T> class ValueRestorer { public: ValueRestorer(T& variable) : m_variable(variable) , m_saved_value(variable) { } ~ValueRestorer() { m_variable = m_saved_value; } private: T& m_variable; T m_saved_value; }; } using AK::ValueRestorer;