J'essaie d'adapter l'un des exemples de boost::asio pour utiliser les bibliothèques c++11 / TR1 lorsque cela est possible. Le code original ressemble à ceci :
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));
}
Si je remplace boost::bind
con std::bind
comme suit :
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 ) );
}
Je reçois un grand message d'erreur, qui se termine par :
/usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning 'void'
J'utilise gcc version 4.4 avec boost version 1.47.
Je m'attendais à ce que boost::bind et std::bind soient interchangeables.