Hello all I'm trying to serialize a std::map along with some pointers that are referencing onto some of the Value elements of that map. What I see now, is that those references are not loaded correctly. Here's what I do: #include <sstream> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/serialization/map.hpp> struct dummy { template<typename Archive> void serialize(Archive & ar, const unsigned int version) { } }; struct map_ref_test { std::map<std::size_t, dummy> m; dummy * ref; template<typename Archive> void serialize(Archive & ar, const unsigned int version) { ar & m; ar & ref; } }; int main() { std::ostringstream os; map_ref_test m; m.m[0] = dummy(); m.m[1] = dummy(); m.m[2] = dummy(); m.ref = &(m.m[1]); // serialize boost::archive::text_oarchive out(os); out << const_cast<map_ref_test const &>(m); // De-serialize map_ref_test m2; std::string ser = os.str(); std::istringstream is(ser); boost::archive::text_iarchive in(is); in >> m2; std::cout << "0: " << &m.m[0] << std::endl; std::cout << "1: " << &m.m[1] << std::endl; std::cout << "2: " << &m.m[2] << std::endl; std::cout << "ref: " << m.ref << std::endl; std::cout << "0: " << &m2.m[0] << std::endl; std::cout << "1: " << &m2.m[1] << std::endl; std::cout << "2: " << &m2.m[2] << std::endl; std::cout << "ref: " << m2.ref << std::endl; } This creates the following output: 0: 0x805bfc4 1: 0x805bfe4 2: 0x805c004 ref: 0x805bfe4 0: 0x805ca04 1: 0x805ca24 2: 0x805ca44 ref: 0xbfacad5c I'd expect the last line to read: ref: 0x805ca24 So, what am I doing wrong? Should this even work? BTW: I'm using Boost 1.33.1 Thanks a lot! Bernhard