LINUX.ORG.RU

Корректен ли вызов std::async

 ,


0

2

Всем привет!

Прошу подсказать, корректен ли код?

unique_ptr<IParser> parser = factory.getParser();
auto future = async(launch::async, &IParser::parse, move(parser));
futureHolder.setFuture(move(future));

Смущает move(parser). Вроде как, объект должен передаваться по указателю в IParser::parse, а у меня unique_ptr. В gcc и clang отрабатывает корректно. Но инфы не нашёл, соответствует ли это решение стандарту.

Прошу подсказать, корректен ли код?

Да.

anonymous
()

Конкретно с передачей parser ok

должен передаваться по указателю в IParser::parse, а у меня unique_ptr

Либо нет, либо навроде IParser::parse(std::unique_ptr<>)

Deleted
()
Ответ на: комментарий от Deleted

Посмотреть на определение async хотя бы на том же cppreference и перейти 2 раза по ссылкам (на thread и invoke) — неподъёмная задача для среднего лоровца?

anonymous
()
Ответ на: комментарий от anonymous

Спасибо. Нашёл.

If t1 does not satisfy the previous items, then INVOKE(f, t1) is equivalent to (*t1).*f

heaven__12
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.