7

これを読んで、このコードが機能するはずだという印象を受けました。

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)
4

1 に答える 1

5

BOOST_ASIO_HAS_MOVEASIO ヘッダーを含める前に定義する必要があります。そうしないと、移動サポートが無効になります。を参照してくださいasio/basic_stream_socket.hpp

https://svn.boost.org/trac/boost/ticket/8959

于 2013-10-05T02:28:54.230 に答える