Я нашел эту интересную ссылку boost :: asio :: spawn yield в качестве обратного вызова
, и, поскольку это может быть тем, что мне нужно, я хотел попробовать следующую часть:
template <class CompletionToken>
auto async_foo(uint64_t item_id, CompletionToken&& token)
{
typename boost::asio::handler_type< CompletionToken, void(error_code, size_t) >::type handler(std::forward<CompletionToken>(token));
//handler_type_t<CompletionToken, void(error_code, size_t)> handler(std::forward<CompletionToken>(token));
async_result<decltype(handler)> result(handler);
//async_request_data(item_id, handler);
return result.get();
}
Но, очевидно, ни handler_type_t
, ни boost::asio::handler_type
больше не существует в более новой версии Boost.
Как я могу адаптировать пример?
РЕДАКТИРОВАТЬ:
Это он правильно? Вместо
boost::asio::handler_type< CompletionToken, void(error_code, size_t) >::type
я использовал
typename boost::asio::async_result< CompletionToken, void(error_code, size_t) >::completion_handler_type