argparse icon indicating copy to clipboard operation
argparse copied to clipboard

Allow setting dynamic sets of argument choices

Open tlemo opened this issue 1 year ago • 0 comments

Currently, the .choices(...) method require passing the list of choices as individual arguments. This works well when the list of choices is known statically, but if the list is dynamic (ex. computed into a std::vector<T>), setting the choices becomes unnecessarily verbose (you'd have to loop over the values and call .add_choice() for each one).

Unfortunately, the variadic .choices(...) interface prevents overloading, so the suggestion is to add a new method along the lines of:

template<class T>
Argument& choices_list(const T& list) {
  for (const auto& v : list) {
   add_choice(v);
  }
  return *this;
}

tlemo avatar Jul 16 '24 20:07 tlemo