
Fran?ois Dumont wrote:
I build the boost (latest CVS) ) using MSVC6 SP5, STLport 5.0 beta, February 2003 SDK under Win XP SP2.
I am using boost to check STLport as I am a contributor to this library. I setup STLport and boost (stlport.hpp) so that all C symbols are imported within std but boost do not enfore this injection (BOOST_NO_STDC_NAMESPACE is undefined). This way I know that STLport do import correctly all C symbols used by boost. In this case C symbols calls have to be fully qualified as VC6 has ambiguity trouble as soon as you have a using namespace std directive.
So, to summarize: 1. MSVC headers define tolower in global namespace; no header defines it in std:: 2. STLport imports them to std 3. In the context of namespace boost { namespace program_options { using namespace std; void foo() ( c = tolower(c); } } } MSVC gives ambiguity. Did I understand you right? Then STLport's behaviour allows std::tolower to work on MSVC, but breaks plain 'tolower'. What is the motivation for that? (Side remark: I think that moving all C functions to std:: created more problems than benefits). - Volodya