Добрый день.
Как бы вы запрещали ввод positional options?
По умолчанию, если positional options не описаны и не привязаны к неким обычным опциям, никаких исключений не выбрасывается. Мне на ума приходи только такое решение: привязать positional options к определенному параметру и далее при его наличии выполнять соответствующие действия, а после уже выполнять парсинг обычных параметров:
//...
boost::program_options::options_description cmdOptionsPos("Positional options");
cmdOptionsPos.add_options()
("positionalOpts,O",
boost::program_options::value<std::vector<std::string>>()->composing(),
"Positional options");
boost::program_options::positional_options_description cmdOptionsPosDesc;
cmdOptionsPosDesc.add("positionalOpts", -1);
boost::program_options::variables_map vmPos;
boost::program_options::store(
boost::program_options::command_line_parser(argc, argv).
options(cmdOptionsPos).
positional(cmdOptionsPosDesc).
allow_unregistered().
run(),
vmPos);
boost::program_options::notify(vmPos);
if (vmPos.count("positionalOpts"))
{
//...
}
//...