I am making program in which i try to make boost packaged_task then take its future in vector and launch it with asio post.
when i try to make packaged_task ,it gives me this error:

Error   C2440   'return': cannot convert from 'void (__cdecl &)(boost::asio::yield_context)' to 'void (&)(boost::asio::yield_context)'  

this is the relevant code:

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));

and this is the definition of 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) 

and the class HTTPRequest is derived from enable_shared_from_this .

the error is in bind.hpp so i find in vs output windows clues to the included part of code.

why is this error happening?and what is the solution??

0

There are 0 best solutions below