...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::program_options::positional_options_description
// In header: <boost/program_options/positional_options.hpp> class positional_options_description { public: // construct/copy/destruct positional_options_description(); // public member functions positional_options_description & add(const char *, int) ; unsigned max_total_count() const; const std::string & name_for_position(unsigned) const; };
Describes positional options.
The class allows to guess option names for positional options, which are specified on the command line and are identified by the position. The class uses the information provided by the user to associate a name with every positional option, or tell that no name is known.
The primary assumption is that only the relative order of the positional options themselves matters, and that any interleaving ordinary options don't affect interpretation of positional options.
The user initializes the class by specifying that first N positional options should be given the name X1, following M options should be given the name X2 and so on.
positional_options_description
public member functionspositional_options_description & add(const char * name, int max_count) ;
Species that up to 'max_count' next positional options should be given the 'name'. The value of '-1' means 'unlimited'. No calls to 'add' can be made after call with 'max_value' equal to '-1'.
unsigned max_total_count() const;
Returns the maximum number of positional options that can be present. Can return numeric_limits<unsigned>::max() to indicate unlimited number.
const std::string & name_for_position(unsigned position) const;
Returns the name that should be associated with positional options at 'position'. Precondition: position < max_total_count()