Hi I have the following problem: My class structure is somehow like that: class A; // is pure virtual template <int NUM, typename ENUM> class B: public A; [...] I use my BinaryWrite archive class, as specified in thread: "[boost::serialization] Binary Stream with noAdditional Info: Here's the solution! [Howto derieve ownserialization archive?]" Now, when I try to stream a std::vector < boost::shared_ptr < A > > then I see in the function-trace log, that my writer has been called for the parent type A, but not for the derived types (B, C, ...). After this, I read again the "Except for one special case" part in the Archive Class Reference manual. After this, I added the following code in front of my archive type: ==================================================================== namespace image { class BinaryWriter; class BinaryReader; } #define BOOST_ARCHIVE_CUSTOM_OARCHIVE_TYPES ::image::BinaryWriter #define BOOST_ARCHIVE_CUSTOM_IARCHIVE_TYPES ::image::BinaryReader #include <boost/archive/detail/iserializer.hpp> #include <boost/archive/detail/oserializer.hpp> #include <boost/archive/detail/common_iarchive.hpp> #include <boost/archive/detail/common_oarchive.hpp> #include <boost/serialization/export.hpp> ==================================================================== But it still does not step into the correct child. After some more reading, I guess, that I'd have to use BOOST_CLASS_EXPORT(B), but that does not compile, because B is a template class. What's wrong, what's missing, what do I have to do? Thank you Regards Marc