|
Boost : |
From: Joshua Storck (josh_at_[hidden])
Date: 2003-11-05 14:27:27
I am trying to compile boost with STLPort on VC6. The cpp_regex_traits.cpp file will not compile because of the BOOST_REGEX_STD definition which is the following:
#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
using namespace std;
# define BOOST_REGEX_STD
#else
# define BOOST_REGEX_STD std::
#endif
The problem has to do with the fact that the "using namespace std" declaration is declared within function scope, but the BOOST_REGEX_STD is later used in another function that is missing the "using namespace std" declaration. I think that VC6 is following the standard here, in so much that "using namespace" declarations follow usual C++ scoping rules.
Here is an example snippet that does not use the regex lib nor STLPort, but exhibits the same problem:
void withUsing () {
using namespace std;
#define USING_NAMESPACE_STD
USING_NAMESPACE_STD string;
}
void withoutUsing () {
USING_NAMESPACE_STD string; // Error: string is not in the global namespace
}
Thanks,
Josh
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk