Передача вектора или аргументов для 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);
...
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]