Ian McCulloch wrote:
Bryan Green wrote: [snip]
While I'm on the subject, you sometimes see something like the following:
./prog -vvv or ./prog -v -v -v
This would *increment* the verbosity level three times. I can't see how to replicate this in program_options.
This is something I have asked about before on this list, but at the time there was no response. I would be very interested in knowing how to do this using boost::program_options!
One complete solution has already been posted, but just for diversity, setting a notifier function on the variable involves less typing. Something like int verbosityLevel; ... verbosityLevel = 0; ... void VerbosityWatcher( bool val ) { ++verbosityLevel; } ... desc.add_options() ("verbose,v", po::bool_switch() ->notifier( &VerbosityWatcher ), "print extra information") ; Disadvantages are that the value isn't available through vm, the default value isn't set by the usual ->default method or constructor option, ... Probably some some of those could be coded around. Personally I think a simple -v 3 is nicer; the -v -v -v style of syntax seems a bit verbose to me :-)