Object persistence using C++ Reflection