Estoy tratando de adaptar uno de los ejemplos de boost :: asio para usar librerías C++ 11/TR1 cuando sea posible. El código original es el siguiente:¿Debería std :: bind ser compatible con boost :: asio?
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 sustituyo boost::bind
con std::bind
de la siguiente manera:
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));
}
me sale un mensaje de error grande, con extremos con:
/usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning 'void'
soy utilizando la versión 4.4 de gcc con la versión de impulso 1.47
esperaba boost :: bind y std :: bind para ser intercambiable.
std toma mucho de boost y tr1, pero no son lo mismo. Me pregunto si esto tiene algo que ver con [esta pregunta] (http://stackoverflow.com/questions/6653531/workaround-to-allow-tr1function-to-swallow-return-values) – spraff
a [potencialmente relacionado] (https : //svn.boost.org/trac/boost/ticket/3053) boleto –
@Sam Miller Encontré el boleto pero no se ha actualizado durante 3 años. También he intentado esto contra v1.48 de boost, y usando std :: placeholders en lugar de boost :: asio :: placeholders. Por ahora me estoy quedando con boost :: shared_ptr y boost :: bind para el código asio. – mark