私は、可能であれば、C++ 11/TR1ライブラリを使用するためにboost :: asioの例の1つを適応しようとしています。元のコードは次のようになります。私はstd::bind
でboost::bind
を交換した場合std :: bindは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));
}
次のように:
/usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning 'void'
私は:
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));
}
は、私は終了して、大規模なエラーメッセージが表示されますgccバージョン4.4をブーストバージョン1.47で使用する
boost :: bindとstd :: bindは互換性があります。
stdはboostとtr1から多くを取りますが、同じではありません。私はこれが[この質問]と関係があるのだろうか?(http://stackoverflow.com/questions/6653531/workaround-to-allow-tr1function-to-swallow-return-values) – spraff
[潜在的に関連する](https ://svn.boost.org/trac/boost/ticket/3053)ticket –
@Sam Millerチケットを見つけましたが、3年間更新されていません!私はboostのv1.48に対してこれを試して、boost :: asio :: placeholdersの代わりにstd :: placeholdersを使用しました。今のところ私はboost :: shared_ptrとboost :: bindをasioコード用にしています。 – mark