
Robert, I'm still fighting with implementing archives to see how I could use your library with our 10 years worth of simulation data. I think it should be doable but am trying to implement a very simple archive. Modifying the trivial archive example I thought that the following should work: #include <boost/archive/common_oarchive.hpp> #include <boost/serialization/vector.hpp> #include <boost/serialization/string.hpp> #include <iostream> class odump_archive : public boost::archive::common_oarchive<odump_archive> { public: odump_archive(std::ostream& dump) : os(dump) {} template<class T> odump_archive& operator<<(const T & t) { boost::serialization::save(* This(), t); return * This(); } // archives are expected to support this function void save_binary(const void *address, size_t count) { // do something later } private: std::ostream& os; friend class boost::archive::save_access; template<class T> void save(const T & t) { os << t;} }; int main() { odump_archive dump(std::cout); std::vector<int> v(4,5); std::string s("Hello, world!"); dump << v << s; } But this gives me the following compile time errors using g++ 3.1 on MacOS X: test.C: In member function `odump_archive& odump_archive::operator<<(const T&) [with T = std::vector<int, std::allocator<int> >]': test.C:33: instantiated from here test.C:14: error: no matching function for call to `save(odump_archive&, const std::vector<int, std::allocator<int> >&)' test.C: In member function `odump_archive& odump_archive::operator<<(const T&) [with T = std::string]': test.C:33: instantiated from here test.C:14: error: no matching function for call to `save(odump_archive&, const std::basic_string<char, std::char_traits<char>, std::allocator<char>
&)'
Can you help me by telling me what I'm doing incorrectly? Matthias