diff --git a/include/boost/program_options/detail/convert.hpp b/include/boost/program_options/detail/convert.hpp index 96a69cd..4cccbc2 100644 --- a/include/boost/program_options/detail/convert.hpp +++ b/include/boost/program_options/detail/convert.hpp @@ -15,7 +15,7 @@ #include <cwchar> #include <stdexcept> -#if BOOST_WORKAROUND(__ICL, <= 700) +#if BOOST_WORKAROUND(__ICL, <= 700) || BOOST_WORKAROUND(_MSC_VER, <= 1200) #include <wchar.h> namespace std { diff --git a/include/boost/program_options/detail/utf8_codecvt_facet.hpp b/include/boost/program_options/detail/utf8_codecvt_facet.hpp index 1e92baf..5d27d39 100644 --- a/include/boost/program_options/detail/utf8_codecvt_facet.hpp +++ b/include/boost/program_options/detail/utf8_codecvt_facet.hpp @@ -53,7 +53,7 @@ #include <boost/detail/workaround.hpp> -#if BOOST_WORKAROUND(__ICL, <= 700) +#if BOOST_WORKAROUND(__ICL, <= 700) || BOOST_WORKAROUND(_MSC_VER, <= 1200) #include <wchar.h> namespace std { diff --git a/include/boost/program_options/options_description.hpp b/include/boost/program_options/options_description.hpp index 84dd931..1fed8cd 100644 --- a/include/boost/program_options/options_description.hpp +++ b/include/boost/program_options/options_description.hpp @@ -216,9 +216,6 @@ namespace program_options { approximation_range find_approximation(const std::string& prefix) const; - template<typename Derived> - friend class option_description_easy_init; - std::string m_caption; // Data organization is chosen since: // - there could be two names for one option diff --git a/src/cmdline.cpp b/src/cmdline.cpp index 9683a12..a89bd29 100644 --- a/src/cmdline.cpp +++ b/src/cmdline.cpp @@ -66,6 +66,10 @@ namespace boost { namespace program_options { namespace boost { namespace program_options { namespace detail { + // vc6 needs this. + using namespace std; + using namespace program_options; + cmdline::cmdline(const std::vector<std::string>& args, int style, bool allow_unregistered) { @@ -371,7 +375,7 @@ namespace boost { namespace program_options { namespace detail { int (*cmp)(const char*, const char*, size_t); cmp = (style & case_insentitive) ? detail::strncmp_nocase : detail::strncmp_case; - const option* result(0); + const option* result = 0; for (size_t i = 0; i < options.size(); ++i) { const char* known_name = options[i].long_name.c_str(); bool prefix = (*options[i].long_name.rbegin() == '*'); diff --git a/src/convert.cpp b/src/convert.cpp index da033de..a24fe7b 100644 --- a/src/convert.cpp +++ b/src/convert.cpp @@ -84,7 +84,7 @@ namespace boost { { return detail::convert<wchar_t>( s, - boost::bind(boost::mem_fn(&codecvt<wchar_t, char, mbstate_t>::in), + boost::bind(&std::codecvt<wchar_t, char, mbstate_t>::in, &cvt, _1, _2, _3, _4, _5, _6, _7)); } @@ -95,7 +95,7 @@ namespace boost { { return detail::convert<char>( s, - boost::bind(boost::mem_fn(&codecvt<wchar_t, char, mbstate_t>::out), + boost::bind(&codecvt<wchar_t, char, mbstate_t>::out, &cvt, _1, _2, _3, _4, _5, _6, _7)); } diff --git a/src/options_description.cpp b/src/options_description.cpp index 1fcd2fd..3b146f2 100644 --- a/src/options_description.cpp +++ b/src/options_description.cpp @@ -303,7 +303,8 @@ namespace boost { namespace program_options { /* Find the maximum width of the option column */ unsigned width(24); - for (unsigned i = 0; i < options.size(); ++i) + unsigned i; // vc6 has broken for loop scoping + for (i = 0; i < options.size(); ++i) { const option_description& opt = *options[i]; stringstream ss; @@ -312,7 +313,7 @@ namespace boost { namespace program_options { } /* The options formatting style is stolen from Subversion. */ - for (unsigned i = 0; i < options.size(); ++i) + for (i = 0; i < options.size(); ++i) { if (belong_to_group[i]) continue; diff --git a/test/cmdline_test.cpp b/test/cmdline_test.cpp index 18186d7..20e0bc7 100644 --- a/test/cmdline_test.cpp +++ b/test/cmdline_test.cpp @@ -478,6 +478,7 @@ void test_style_errors() int test_main(int ac, char* av[]) { // ### detail::test_cmdline_detail(); + cerr << "Checkpojnt 1\n"; test_long_options(); test_short_options(); @@ -512,5 +513,6 @@ int test_main(int ac, char* av[]) cout << e.what() << "\n"; } + cerr << "Returning normally\n"; return 0; }