From: Robert Ramey (ramey_at_[hidden])
Date: 2006-03-10 00:05:23
I believe that Joaquin has found the "last one". The fix is in 1.34 and
hopefully there won't be any more. If you want to help, you could
test your case against the cvs tree.
Kim Barrett wrote:
> 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
> 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
> 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?
> Unsubscribe & other changes:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk