I have a structure I'm trying to serialize that contains an STL vector of pointers to an abstract base type. When I serialize it, the save_construct_data free function is NOT called - the inline default version is always used. On de-serializing, the load_construct_data IS called! but, of course, fails because the data for it isn't there (although it throws archive_exception (archive_exception::unregistered_class) when it fails). I'm using declarations only for all serialization code, with all definitions in .s.cpp files along with explicit instantiations. Not sure if that affects the problem here. Just in case, I've tried all combinations of save_construct_data with (const)? (Base|Derived) (*|&), and none of them are called. I've also tried putting my declarations before and after the serialization.hpp header with the default declaration/definition. I'm using gcc4 currently. Any notion what might be wrong here?