
Since this was the most requested change for program_options, I though I'd post specific announcement. I've committed a change that finally makes command_line_parser::allow_unregistered to work as expected. Assuming you get command line like: --foo=10 --bar=15 --biz 5 -cd -d10 and registered options are "foo" and "-c", where "-c" takes no value, parsing that command line will give you the following list of options: ("foo", "10") ("bar", "15") * ("biz", ) * ("5") (positional) ("-c", ) ("-d", ) * ("-d", "10) * The 'option' instances corresponding to option marked with '*' will have 'unregistered' member set to true. With that information it's possible to: 1. Collect all unregistered option as process them separately. 2. Construct a new command line from unregistered options and pass it to some application. In the above example, reconstructed command like would be --bar=15 --biz 5 -d -d10 There are some notes of interest. First, the option class don't keep the original tokens it was created from. The unregistered option can technically arrive from user-provided 'additional parser' where 'original tokens' are not even present. Second, for 'sticky' short options, like '-cd' above, the library can break them in parts. Again, in example we get: ("-c", ) ("-d", ) * The 'c' letter is recognized, and the 'd' letter is not. I find this behaviour better than marking the entire '-cd' as unrecognised. Finally, the new functionality might not work nice with long options that start with a single dash (allow_long_disguise style option): -foo will be considered as short option '-f' with value 'oo', and never as long option 'foo'. Feedback is appreciated! I was also asked for 'allow_unregistered' support for config file. I agree this might be good, but given that config file never supported it in any form, it's clearly a new feature, and will have to wait till 1.33 is released. - Volodya