diff -r 510d5bd079ad boost/program_options/detail/value_semantic.hpp --- a/boost/program_options/detail/value_semantic.hpp Fri Jun 27 15:59:57 2008 -0600 +++ b/boost/program_options/detail/value_semantic.hpp Mon Jun 30 18:22:19 2008 -0600 @@ -55,13 +55,13 @@ { static std::basic_string empty; if (v.size() > 1) - throw validation_error("multiple values not allowed"); + boost::throw_exception(validation_error("multiple values not allowed")); if (v.size() == 1) return v.front(); else if (allow_empty) return empty; else - throw validation_error("at least one value required"); + boost::throw_exception(validation_error("at least one value required")); } /* Throws multiple_occurrences if 'value' is not empty. */ diff -r 510d5bd079ad libs/program_options/src/cmdline.cpp --- a/libs/program_options/src/cmdline.cpp Fri Jun 27 15:59:57 2008 -0600 +++ b/libs/program_options/src/cmdline.cpp Mon Jun 30 18:22:19 2008 -0600 @@ -151,7 +151,7 @@ error = "style disallows all characters for short options"; if (error) - throw invalid_command_line_style(error); + boost::throw_exception(invalid_command_line_style(error)); // Need to check that if guessing and long disguise are enabled // -f will mean the same as -foo @@ -269,8 +269,8 @@ if (opt.position_key != -1) { if (position >= m_positional->max_total_count()) { - throw too_many_positional_options_error( - "too many positional options"); + boost::throw_exception(too_many_positional_options_error( + "too many positional options")); } opt.string_key = m_positional->name_for_position(position); ++position; @@ -323,8 +323,8 @@ if (present_tokens >= min_tokens) { if (!opt.value.empty() && max_tokens == 0) { - throw invalid_command_line_syntax(opt.string_key, - invalid_command_line_syntax::extra_parameter); + boost::throw_exception(invalid_command_line_syntax(opt.string_key, + invalid_command_line_syntax::extra_parameter)); } max_tokens -= opt.value.size(); @@ -346,8 +346,8 @@ } else { - throw invalid_command_line_syntax(opt.string_key, - invalid_command_line_syntax::missing_parameter); + boost::throw_exception(invalid_command_line_syntax(opt.string_key, + invalid_command_line_syntax::missing_parameter)); } } @@ -367,8 +367,8 @@ name = tok.substr(2, p-2); adjacent = tok.substr(p+1); if (adjacent.empty()) - throw invalid_command_line_syntax(name, - invalid_command_line_syntax::empty_adjacent_parameter); + boost::throw_exception( invalid_command_line_syntax(name, + invalid_command_line_syntax::empty_adjacent_parameter)); } else { diff -r 510d5bd079ad libs/program_options/src/variables_map.cpp --- a/libs/program_options/src/variables_map.cpp Fri Jun 27 15:59:57 2008 -0600 +++ b/libs/program_options/src/variables_map.cpp Mon Jun 30 18:22:19 2008 -0600 @@ -74,11 +74,13 @@ try { d.semantic()->parse(v.value(), options.options[i].value, utf8); } +#ifndef BOOST_NO_EXCEPTIONS catch(validation_error& e) { e.set_option_name(name); throw; } +#endif v.m_value_semantic = d.semantic(); // The option is not composing, and the value is explicitly