阅读这篇文章,我认为这段代码应该是有效的:
class Connection : public std::enable_shared_from_this<Connection>
{
public:
Connection(tcp::socket&& socket) : socket_(std::move(socket)) {}
private:
tcp::socket socket_;
};
但编译器在构造函数中报告了以下错误:
Call to implicitly-deleted copy constructor of 'tcp::socket' (aka'basic_stream_socket<boost::asio::ip::tcp>')
我还定义了BOOST_ASIO_HAS_MOVE
。我使用的是Xcode 4.6.3,在编译器设置中我已经定义了以下内容:
C++ Language dialect: GNU++11[-std=gnu++11]
C++ Standard Library: libc++(LLVM C++ standard library with C++11 support)
Connecion
构造函数的代码吗? - Igor R.Connection
对象?编译器是否提供了错误实例化的跟踪?当调用构造函数的代码将套接字作为右值引用传递而不是通过std::move
转换为xvalue时,通常会出现这个问题。 - Tanner Sansbury