2013-07-28 2 views
5

읽기 this로 이동 객체를 사용할 수 없습니다,이 코드가 작동해야한다는 인상을 받았습니다 또한 BOOST_ASIO_HAS_MOVE으로 정의됩니다. 나는 엑스 코드 4.6.3 사용하고 컴파일러 설정에서 나는이 정의가 :이 Boost.Asio

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

'Connecion' 생성자를 호출하는 코드를 표시 할 수 있습니까? –

+0

@Igor R : main()에서 사용하는 또 다른 서버 클래스가 있지만 Connection 클래스는 아무데도 사용되지 않습니다. 그냥 – Kobe

+1

로 선언되었으므로 암시 적으로 삭제 된 복사본 생성자를 호출하는 중 오류가 발생하지만 Connection 객체를 생성하는 코드가 없습니까? 컴파일러는 오류가 인스턴스화 된 위치의 추적을 제공합니까? 이 문제는 생성자를 호출하는 코드가'std :: move'를 통해 xvalue로 변환하는 대신 소켓을 rvalue 참조로 전달할 때 발생합니다. –

답변

4

당신은 BOOST_ASIO_HAS_MOVE는 ASIO 헤더를 포함하기 전에 정의되어 있어야합니다. 그렇지 않으면 이동 지원이 비활성화됩니다. asio/basic_stream_socket.hpp을 참조하십시오.

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

+0

명시 적으로 BOOST_ASIO_HAS_MOVE를 정의하지 못했습니다. '/ usr/include/boost/asio/detail/config.hpp' 파일을 수정해야했습니다. '// Clang/libC++ detection'을 추가하고 // 그것을 대체 할 수있는 것으로 알려진 컴파일러에 대한 이동 및 할당 이동 지원을 대체했습니다 : http://www.boost.org/doc/libs/ 1_55_0/boost/asio/detail/config.hpp – bitek