
In boost 1.33.1, using gcc 3.3.5 (SuSE9.3 on x86 if it matters) I've run into an include order problem with the serialization library. It seems that including <boost/serialization/nvp.hpp> before including <boost/archive/polymorphic_iarchive.hpp> (or oarchive) doesn't work. In a translation unit that does this and includes an invocation of serialization, I get an error of the form: .../iserializer.hpp: In constructor `...iserializer<Archive, T>::iserializer() [with ARchive = polymorphic_archive, T = my_type]': ... lots of intermediate instantiations ... error: incomplete type boost::serialization::extended_type_info_null<my_type> cannot be used to name a scope If nvp.hpp is included later (or not explicitly included at all, since I see that polymorphic_iarchive.hpp includes it at the end of its include block), all is well. A little more poking at it by hoisting out the nested includes from nvp.hpp directly into my source file found that including polymorphic_[io]archive.hpp before type_info_implementation.hpp makes the problem go away too. nvp -> level -> traits -> type_info_implementation I know Robert has fixed a bunch of include order issues, and I think I recall that some of those fixes were post-1.33.1. Is this a known one? Or is a reproducible test case needed? Or is this a real include order dependency that one simply must avoid?