Как указать значение по умолчанию для vector <string> в boost:: program_options
Я хочу указать значение по умолчанию для позиционного параметра, как в комментарии в коде, но компилятор жалуется. Код, поскольку он компилируется отлично. Я использую boost 1.46.1 и g++
int main(int argc, char *argv[]) {
namespace po = boost::program_options;
po::positional_options_description p;
p.add("path", -1);
po::options_description desc("Options");
std::vector<std::string> vec_str;
std::string str;
desc.add_options()
("foo,f", po::value< std::string >()->default_value(str), "bar")
//("path,p", po::value< std::vector<std::string> >()->default_value(vec_str), "input files.")
("path,p", po::value< std::vector<std::string> >(), "input files.")
;
po::variables_map vm;
po::store(po::command_line_parser(argc, argv).options(desc).positional(p).run(), vm);
po::notify(vm);
}
Ответы
Ответ 1
Мне нужно предоставить текстовое представление значения по умолчанию, см. http://lists.boost.org/boost-users/2010/01/55054.php.
т.е. работает следующая строка:
("path,p", po::value< std::vector<std::string> > ()->default_value(std::vector<std::string>(), ""), "input files.")
Я предполагаю, что это необходимо для вывода справки, которое могло бы быть в моем примере
std::cout << desc << std::endl;
Поскольку компилятор не знает, как перегрузить operator<<()
для vector<string>
, он жалуется.