【发布时间】:2020-05-04 19:46:43
【问题描述】:
考虑以下示例,为异步操作移动/复制/捕获字符串的最佳方法是什么?在 Session 中传递 & 是个好主意吗?
void Client::connect(const std::string& hostname, const std::string& port, const std::string& string) {
auto socket_ = std::make_shared<net::ip::tcp::socket>(_io_context);
net::ip::tcp::resolver resolver_(_io_context);
auto endpoints_ = resolver_.resolve(hostname, port);
net::async_connect(*socket_, endpoints_, [socket_, string](sys::error_code ec, net::ip::tcp::endpoint) {
if(!ec) {
std::make_shared<Session>(std::move(*socket_), std::move(string))->start();
}
});
}
Session::Session(net::ip::tcp::socket socket, const std::string& string)
: _socket(std::move(socket)), _string(std::move(string)) {
}
【问题讨论】:
标签: c++ string boost-asio move-semantics