Должен ли std :: bind быть совместимым с boost :: asio?

Я пытаюсь адаптировать один из примеров 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 с версией boost 1.47

Я ожидал, что boost :: bind и std :: bind будут взаимозаменяемыми.

43
задан mark 2 March 2012 в 16:39
поделиться