
Hello all, I've run into a problem with the boost::program_options library and I wanted to see if anyone has experienced something similar. When my application defines two program options, pi and pie, the "pie" option silently overrides the "pi" option. (Source code attached.) ./my_program --pie pi: false pie: true ./my_program --pi pi: false pie: true Is this the expected behavior? Admittedly, this is a contrived example, but I think there are real-life cases where it can cause problems. I have run into it a couple of times now. -Michael ----------------------------------------------------------- #include <boost/program_options.hpp> #include <iostream> namespace po = boost::program_options; int main( const int argc, char *argv[] ) { bool pi = false; bool pie = false; po::options_description desc("Allowed options"); desc.add_options() ("help,h", "produce help message") ("pi", po::value<bool>(&pi)->zero_tokens(), "calculate pi") ("pie", po::value<bool>(&pie)->zero_tokens(), "serve pie to our guests") ; po::variables_map vm; po::store(po::command_line_parser(argc, argv).options(desc).allow_unregistered().run(), vm); po::notify(vm); if (vm.count("help")) { std::cout << desc << std::endl; return 0; } if ( pi ) std::cout<<"pi: true"<<std::endl; else std::cout<<"pi: false"<<std::endl; if ( pie ) std::cout<<"pie: true"<<std::endl; else std::cout<<"pie: false"<<std::endl; }