|
Boost : |
From: John Maddock (jm_at_[hidden])
Date: 2002-08-14 06:29:56
> "William E. Kempf" <williamkempf_at_[hidden]> wrote in message
news:OE20r7NoUDry420OPbg0001058d_at_hotmail.com...
> > I've found an interesting problem with the VC6 compiler/libraries. The
> > terminate() and related functions don't seem to be placed in the "std"
> > namespace. The work around I've employed is to use a local "using
namespace
> > std;", but I'm wondering if this is something that's already in, or
should
> > be added, to Boost.Config?
>
> This general issue is handled in the config via BOOST_NO_STDC_NAMESPACE.
The solution is to "fix" the standard library implementation by declaring
names in std that it forgot to. Suffix.hpp performs this fix for the most
commonly used standard names that are left out of std: ptrdiff_t and size_t.
Individual libraries are expected to provide the "fix" for uncommon names
themselves.
I agree that that is the right fix to apply here, but I don't think the
problem is covered by BOOST_NO_STDC_NAMESPACE: these aren't C lib functions
that we're dealing with here, I also notice that STLport deals with these
separately from C lib functions. I'm assuming that C++ compilers that sit
on top of C implementations will typically have terminate in std{}, but the
C functions in global namespace (in fact I think gcc 3 is like this,
although it fixes the C lib problem for us).
John Maddock
http://ourworld.compuserve.com/homepages/john_maddock/index.htm
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk