Я делаю программу, в которой я пытаюсь сделать boost packaged_task, затем взять его будущее в векторе и запустить его с сообщением asio.
Когда я пытаюсь сделать packaged_task, он выдает мне эту ошибку:
Error C2440 'return': cannot convert from 'void (__cdecl &)(boost::asio::yield_context)' to 'void (&)(boost::asio::yield_context)'
это соответствующий код:
typedef boost::packaged_task<std::string(boost::asio::yield_context)> task_t;
boost::shared_ptr<task_t> task = boost::make_shared<task_t>(boost::bind(&HTTPRequest::Execute, mClientRequestsVariables[m_HttpClient_request_name]->shared_from_this() , boost::placeholders::_1, m_HttpClient_request_name, Get_mHTTPClient_Responses_Map_shared_pointer()));
boost::future<std::string> fut = (task->get_future());
mPendingData.push_back(std::move(fut)); // C++11 possible: (std::move(fut) when fut is a unique_future);
mIos.post(boost::bind(&task_t::operator(), task));
и это определение HTTPRequst :: Execute:
HTTPRequest::HTTPRequest(boost::asio::io_service& ios, unsigned int id, std::string URL, const HTTPServiceResolve& resolve_addr, boost::shared_ptr<LoggingClass_2> mHTTPRequest_LoggingInstance_shared_pointer)
, а класс HTTPRequest является производным от enable_shared_from_this.
ошибка в bind.hpp, поэтому я нахожу в выводе windows подсказки к включенной части кода.
почему происходит эта ошибка? И как ее решить ??