#include #include #include #include #include namespace po = boost::program_options; using namespace std; int main(int argc, char* argv[]) { istringstream is("unknown_option = something_unknown"); // Input "File" po::options_description generic("Generic options"); po::parsed_options parsed_file = po::parse_config_file(is, generic, true /* allow unregistered */); cout << "Unregistered options parsed...\n"; vector::size_type unregistered_count = 0; BOOST_FOREACH(po::option option, parsed_file.options) { if (option.unregistered) { ++unregistered_count; cout << option.string_key << ": "; ostream_iterator out_it(cout, " "); copy( option.original_tokens.begin(), option.original_tokens.end(), out_it); cout << endl; } } cout << "\nUnrecognized options collected...\n"; vector unrecognized = po::collect_unrecognized(parsed_file.options, po::include_positional); BOOST_FOREACH(string option, unrecognized) { cout << option << endl; } return !(unregistered_count == unrecognized.size()); // 0 on pass }