
Robert Ramey wrote:
Matthias Troyer wrote:
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.
Here is where were on different pages. you only have to override serialization of vector etc in only one place - in the fast_archive_adaptor class. Then the behavior is available to any class that the adaptor is applied to.
IIUC (apologies if I am missing something), Matthias' argument is that 1. serialization of std::vector needs to be overridden in the fast_archive_adaptor class. 2. serialization of builtin arrays needs to be overridden in the fast_archive_adaptor class. 3. serialization of ublas::vector needs to be overridden in the fast_archive_adaptor class. 4. serialization of ublas::matrix needs to be overridden in the fast_archive_adaptor class. 5. serialization of mtl::vector needs to be overridden in the fast_archive_adaptor class. 6. serialization of mtl::matrix needs to be overridden in the fast_archive_adaptor class. 7. serialization of blitz::array needs to be overridden in the fast_archive_adaptor class. 8. serialization of custom_lib::fast_matrix needs to be overridden in the fast_archive_adaptor class. Unfortunately this is not so easy as custom_lib::fast_matrix is maintained by someone else and the serialization functions need access to some classes buried deep in some private implementation header. 9 ..... So, N functions, most of which are trivial forwards to a save_array / load_array function. Cheers, Ian