|
Boost : |
From: John Maddock (john_at_[hidden])
Date: 2005-10-16 06:39:30
> I've tried running some of the headers through the preprocessor,
> <iterator> looks like the smallest (but still much larger than
> <iosfwd> & <utility>). Although, <string> might be a better choice,
> as it's more likely to be included elsewhere.
Sigh, sadly no can do, they all end including one of the TR1 "poisoned"
headers (<memory> etc) eventually, and you end up with cyclic dependencies,
the problem is basically:
Boost.Config -> includes <string> (for example)
....
includes <memory> finds the TR1 version, which...
includes <boost/shared.hpp> which requires Boost.Config to have been fully
parsed already, but it's not, we're still in the middle of it!
There are other cyclic issues that are *much* worse than this, and I have a
nasty feeling I haven't found all of them yet.
It basically sucks, and I've been tearing my hair out over this, because I
also have a nasty suspicion that the TR1 headers will crash and burn if some
of the Boost headers are included first. Clearly that's not acceptable. I
think I have a solution that can be applied to Boost.Config and will let us
go back to using <utility> which has proved itself remarkably reliable, but
it's intrusive and can't really be applied to Boost as a whole.
So... I think I'm going with plan Z (the other 25 having been exhaused!),
and I'll revert the recent change, and go back to the drawing board...
John.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk