Передача вектора или аргументов для boost::process (boost::fusion)

Я пытаюсь создать boost::process из вектора строковых аргументов:

void runProcess( const std::string& exe, const std::vector<std::string>& args )
{
    bp::ipstream out;
    bp::child c(exe, args, std_out > out);
    ...
}

Это, очевидно, работает, но я получаю следующее предупреждение:

предупреждение C4503: 'boost::fusion::detail::for_each_linear': превышена длина оформленного имени, имя было усечено

Это исчезает, если передача аргументов один за другим bp::child c(exe, "param1", "param2", std_out > out);,

Как правильно позвонить childконструктор в этой ситуации?

1 ответ

Вы бы использовали как задумано:

bp::child c(bp::search_path("ls"), bp::args({"-1", "-l"})/*, ...*/);

В вашем случае, может быть, как

void runProcess( const std::string& exe, const std::vector<std::string>& args )
{
    bp::ipstream out;
    bp::child c(exe, bp::args(args), std_out > out);
    ...
}
Другие вопросы по тегам