Я пытаюсь адаптировать один из примеров boost :: asio для использования библиотек c ++ 11 / TR1, где это возможно. Исходный код выглядит так:
void start_accept()
{
tcp_connection::pointer new_connection =
tcp_connection::create(acceptor_.get_io_service());
acceptor_.async_accept(new_connection->socket(),
boost::bind(&tcp_server::handle_accept, this, new_connection,
boost::asio::placeholders::error));
}
Если я заменю boost::bind
на std::bind
следующим образом:
void start_accept()
{
tcp_connection::pointer new_connection =
tcp_connection::create(acceptor_.get_io_service());
acceptor_.async_accept(new_connection->socket(),
std::bind(&tcp_server::handle_accept, this, new_connection,
boost::asio::placeholders::error ) );
// std::bind(&tcp_server::handle_accept, this, new_connection, _1 ) );
}
Я получаю большое сообщение об ошибке, оканчивающееся на:
/usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning 'void'
Я использую gcc версии 4.4 с надстройкой версии 1.47
Я ожидал, что boost :: bind и std :: bind будут взаимозаменяемыми.