Impossible d’utiliser des objects mobiles avec Boost.Asio

En lisant cela , j’ai eu l’impression que ce code devrait fonctionner:

class Connection : public std::enable_shared_from_this { public: Connection(tcp::socket&& socket) : socket_(std::move(socket)) {} private: tcp::socket socket_; }; 

Mais le compilateur émet cette erreur dans le constructeur:

 Call to implicitly-deleted copy constructor of 'tcp::socket' (aka'basic_stream_socket') 

J’ai également défini BOOST_ASIO_HAS_MOVE . J’utilise Xcode 4.6.3 et dans les parameters du compilateur, j’ai ceci défini:

 C++ Language dialect: GNU++11[-std=gnu++11] C++ Standard Library: libc++(LLVM C++ standard library with C++11 support) 

Vous devez définir BOOST_ASIO_HAS_MOVE avant d’inclure les en-têtes ASIO. Si vous ne le faites pas, le support de déplacement est désactivé. Voir asio/basic_stream_socket.hpp .

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