lettura this, ho avuto l'impressione che questo codice dovrebbe funzionare:Impossibile utilizzare oggetti mobili con Boost.Asio
class Connection : public std::enable_shared_from_this<Connection>
{
public:
Connection(tcp::socket&& socket) : socket_(std::move(socket)) {}
private:
tcp::socket socket_;
};
ma le questioni compilatore questo errore nel costruttore:
Call to implicitly-deleted copy constructor of 'tcp::socket' (aka'basic_stream_socket<boost::asio::ip::tcp>')
ho anche definito BOOST_ASIO_HAS_MOVE
. Io uso Xcode 4.6.3 e nelle impostazioni del compilatore ho questo definito:
C++ Language dialect: GNU++11[-std=gnu++11]
C++ Standard Library: libc++(LLVM C++ standard library with C++11 support)
Potrebbe mostrare il codice che chiama 'costruttore Connecion'? –
@Igor R: Ho un'altra classe server che uso in main(), ma la classe Connection non è utilizzata da nessuna parte. È appena dichiarato – Kobe
Quindi si sta verificando un errore nel chiamare un costruttore di copie cancellato in modo implicito, ma nessun codice costruisce un oggetto 'Connection'? Il compilatore fornisce una traccia di dove è stato istanziato l'errore? Questo problema si manifesta normalmente quando il codice che chiama il costruttore passa il socket come riferimento di rvalore, piuttosto che convertirlo in un valore x tramite 'std :: move'. –