Obviously, I can just switch to a different serialization library (e.g. s11n).
I believe that library also has serialization of pointers
Darn it! Foiled at every turn! :-) If that is the case, maybe you might consider updating/clarifying the "Overview -> Other implementations" section of the docs. There you imply that s11n doesn't do this. (Maybe it didn't back when you wrote the docs.)
But as much as possible, I would like to stick with
whatever is most "standard". And as part of the Boost family, I'm guessing that boost::serialization is top dog here. Would that be right? Is this library included in any of the proposed C++ standards (TR2, C++0x)?
This serialization library will never be part of any C++ standard.
Oh. That's disappointing. Why not? Too much bureaucracy involved?
Because normally one doesn't want to change data while its being saved one will typically have something like the following in his program.
FileSave(const MyData & md){ // create archive oa << md; // no need for "const cast" because md is already "const" ... }
Okay. That makes a lot of sense. Let me ask another newbie question, about how to get data in and out of an archive. I have to work with legacy C-based code that delivers/accepts data in a char* buffer. My code to serialize data into and out of this buffer is both convoluted and inefficient. It looks something like this: my_class mc; void read_from_cbuffer(const char* buf, const size_t buf_sz) { std::string buf_str(buf, buf_sz); std::istringstream iss(buf_str); boost::archive::text_iarchive ia(iss); ia >> mc; } void write_to_cbuffer(char** buf_p, size_t* buf_sz_p) { std::ostringstream oss; boost::archive::text_oarchive oa(oss); oa << mc; *buf_p = new char[oss.str().size()]; memcpy(*buf_p, oss.str().c_str(), oss.str().size()); *buf_sz_p = oss.str().size(); } Any suggestions about how this can be done better? Thanks, -- Dominick