У меня проблема при попытке скомпилировать мою программу с boost::bind
в качестве параметра для вызова функции async_read_some
.
Если я использую этот код ниже, моя программа будет аварийно завершать работу при достижении async_read_some
.
socket_.async_read_some(boost::asio::buffer(message_, 1024),
boost::bind(
&Session::print_message, self,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred)
);
void print_message(boost::system::error_code& ec, std::size_t length)
{
}
Но если я удаляю boost::bind
и заменяю его лямбда-функцией, все будет работать нормально.
socket_.async_read_some(boost::asio::buffer(message_, 1024),
[this, self](boost::system::error_code& ec, std::size_t length)
{
if (!ec)
{
std::cout << "made it" << std::endl;
}
std::cout << "Error: " << ec.message() << std::endl;
}
Это ошибка, которую я получаю при компиляции
'R boost::_mfi::mf2<R,Session,boost::system::error_code &,size_t>::operator ()(T *,A1,A2) const': cannot convert argument 2 from 'Arg1' to 'A1'
Если вам понадобится больше кода, пожалуйста, дайте мне знать.