我试图了解来自boost asio的echo server example。我无法如何从同一个对象移动多次。对不起,如果我错过了一些简单的事情。
这是一个在启动时调用的方法。 socket_
是班级成员。正如我所看到的那样,每次建立新连接时都会移动它。请查看example以了解整体情况。
void do_accept()
{
acceptor_.async_accept(socket_,
[this](boost::system::error_code ec)
{
if (!ec)
{
std::make_shared<session>(std::move(socket_))->start();
}
do_accept();
});
}
答案 0 :(得分:1)
感谢Andreas我看了一下asio socket的move构造函数。我以前应该这样做。答案很简单:
移动后,移动的对象处于相同的状态 使用@c basic_stream_socket(io_service&amp;)构造函数构造。