From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2005-09-03 08:20:34
I've been doing battle with VC 7.1 and its "'detail' : ambiguous
symbol" error messages for a while. The basic problem is that we have
a file with, essentially, "using namespace boost; using namespace
boost::spirit;" in it. Since VC 7.1 resolves namespace names a bit
strangely, these using directives end up being resolved late in the
compilation process, so they make lookups of names like "detail"
ambiguous. The most recent of these problems shows up here:
Using directives from some Graph code that #includes spirit and
shared_ptr has the using directives I mentioned above. All should be
well, but somehow VC 7.1 is using these directives later on, so
shared_ptr's reference to "detail::" becomes ambiguous.
I've been whacking these problems by providing full qualification
(::boost::detail) where it concerns my libraries, but now that it's
hit shared_ptr I think we might need to fix this another way. A few
options come to mind:
1) Make me fix the graph library with a bunch of using
declarations instead of the blanket "using namespace boost::spirit;"
that causes the problem. But, users might still run into this issue.
2) Keep on qualifying "detail" references until it stops causing
3) Stop using "detail" and instead use "[lib]_detail" that is
different for each lib.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk