Boost logo

Boost :

Subject: Re: [boost] [program options] why is ->multitoken() not default for vector arguments?
From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2009-06-08 16:46:55


Vladimir Prus skrev:
> Thorsten Ottosen wrote:
>
>> Hi,
>>
>> I have code like
>>
>> bpo::options_description desc("Allowed options");
>> desc.add_options()
>> ("help", "produce help message")
>> ("file", bpo::value<std::string>(), ".sug file with graph
>> description")
>> ("new_edge", bpo::value<std::vector<unsigned>>()->multitoken(),
>> "two numbers denoting the new edge");
>>
>> I had to add the ->multitoken to make a command like
>>
>> ./clique_tester.exe --new_edge 1 2 --file bug1.sug
>>
>> ^^^^^^^^
>> work.
>>
>> This seems wierd. Why would I want a vector of values, yet only parse
>> one of the trailing argument?
>
> multitoken options are evil, because of parsing ambiguities. The motivating
> examples for vector<string> option is the -I option of a compiler -- where
> each instance of -I takes a single path -- and which seem to work just fine.

I fail to see this evilness. Something like

foo.exe --new_edge 1 --new_edge 2

is hardly readable. How can there be difficulties in parsing everything
until the next --arg is reached?

-Thorsten


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk