
On Oct 10, 2005, at 7:21 AM, troy d. straszheim wrote:
On Sun, Oct 09, 2005 at 02:15:44PM -0700, Robert Ramey wrote:
With this approach you would make one fast_oarchive adaptor class and one small and trivial *.hpp file for each archive it is adapted to.
And I've done this for a few archive types. Works fine. The portable_binary_archive example, does the same thing, except it does so for save(), like this:
class portable_binary_oarchive : public boost::archive::binary_oarchive_impl<portable_binary_oarchive> { typedef portable_binary_oarchive derived_t; typedef boost::archive::binary_oarchive_impl<portable_binary_oarchive> base_t;
// default fall through for any types not specified here template<class T> void save(const T & t){ base_t::save(t); } void save(const unsigned int t){ save_impl(t); } };
Which I've also used. AFAICT, I could do what I've needed to do so far either way. What's the difference? Apologies in advance if I've missed something in the docs.
For a portable binary archive this solution is perfect. For fast array serialization a similar approach has problems, as I outlined under point 3 and 4 in my response to Robert Ramey: you need to specifically overload _in the archive_ for all classes that want to make use of fast array serialization, thus introducing a tight coupling between archive and class to be serialized, as well as making it hard to extend. Matthias