
Dear Robert Thank you for answering. I am sorry I was not very specific (though please don't think I would put the question without RTFM first ;) ) The part of documentation you pointed to told me to do const_cast manually. It is fine in case of const members of a class, but this time the const type is contained by a vector. I could manually write the serialization code for my vector<const A*> type but I hoped I could use the built-in vector serialization templates in vector.hpp To be clear I copy here the piece of code I am talking about #include <fstream> #include <boost/archive/text_iarchive.hpp> #include <boost/archive/text_oarchive.hpp> #include <boost/serialization/vector.hpp> using namespace std; class A { friend class boost::serialization::access; template<class Archive> void serialize (Archive &ar, const unsigned int version) { } }; /* NEITHER OF THESE HELPS namespace boost { namespace serialization { template <class Archive> inline void serialize (Archive &ar, const A *p, const unsigned int version) { ar & const_cast<A*>(p); } template <class Archive> inline void serialize (Archive &ar, const A &p, const unsigned int version) { ar & const_cast<A&>(p); } }} */ int main() { A a; vector<const A*> v(1, &a); ofstream ofs ("vectorofconstptr"); boost::archive::text_oarchive oa(ofs); oa << v; ofs.close(); // UNTIL THIS POINT EVERYTHING IS FINE // BUT DESERIALIZATION FAILS TO COMPILE ifstream ifs("vectorofconstptr"); boost::archive::text_iarchive ia(ifs); vector<const A*> p; ia >> p; ifs.close(); } Please tell me if I am doing something wrong. I tried to look into the documentation, I have even followed the serialization library code for a while, but eventually decided to ask. Thank you in advance Zoltan
Look in the documentation under Reference/Class Serialization/const members
Robert Ramey
Zoltan Szatmary wrote:
Hello
could you help please? what is the easiest way to (de)serialize a member of type vector<const A*> (A being a base class)? Serializing is fine, but deserialization fails to compile since the vector deserialization code tries to deserialize a const A* pointer without const_cast-ing it (I guess).
Thank you in advance
Zoltan