Re: [Boost-users] [Serialization] This compiles; but does it work?
On 02/19/2016 04:20 AM, Merrill Cornish wrote:
Can anyone tell me if this will work, or do I need to implement the serialize() function?
When you are doing different things for the input and output archives then it is better to split serialization into load and save: #include <boost/filesystem/path.hpp> #include <boost/serialization/split_free.hpp> namespace boost { namespace serialization { template <typename Archive> void serialize(Archive& ar, filesystem::path& p, const unsigned int version) { split_free(ar, p, version); } template<class Archive> void save(Archive & ar, const filesystem::path& p, unsigned int version) { ar << p.string(); } template<class Archive> void load(Archive & ar, filesystem::path& p, unsigned int version) { std::string data; ar >> data; p = data; } }}
On 2/19/2016 4:02 AM, Bjorn Reese wrote:
it is better to split serialization into load and save In your example, my three lines were replaced with ~20. Is 20 really better?
My approach wouldn't work in all cases, since some have significantly different processing for load vs. save. But in this case, simply adding two extra lines to the original serialization function for all data members in a class is attractive--if it works.
participants (2)
-
Bjorn Reese
-
Merrill Cornish