
The state_saver class at www.boost.org/boost/state_saver.hpp appears to be very useful for me. But I would like to propose two changes: First of all, I would like to have an extra constructor that would allow specifying a new value for the object (whose previous value will be restored when state_saver is destructed). Such a constructor would be very convenient, and it would also be conforming to io_state_saver's classes, by Daryle Walker. www.boost.org/libs/io/doc/ios_state.html A possible implementation would be: state_saver( T & object, const T & new_value ) : previous_value(object), previous_ref(object) { previous_ref = new_value; } Secondly I would suggest using a swap instead of an assignment, when restoring the previous value (when state_saver is destructed). A swap is much more likely to be fail-safe and efficient than an assignment. So I would propose the destructor to look as follows: ~state_saver() { // Doing "using std::swap", as suggested by Scott Meyers, // Effective C++ 3rd Edition, item 25, "Consider support // for a non-throwing swap" using std::swap; swap(previous_ref, previous_value); } Will these changes generally be considered an improvement? I already wrote Robert Ramey, the owner of state_saver.hpp. He also recommanded posting a message on this subject. So please let me know what you think! -- Niels Dekker http://www.xs4all.nl/~nd/dekkerware C++ programmer at LKEB, Leiden University Medical Center