2017-12-12 7 views
-1

여기 내 테스트 코드의를 rvalue 할당을 지원하지 않습니다. 내가 = 연산자의 구현을 찾을 수 내 IDE에서 코드 탐색 기능을 사용, 나는 취급 turely 하나는 복사 작업을하고있는 operator=(const vector<_Tp, _Alloc>& __x)이라고 발견했다.표준 : : 벡터

전체 파일을 검색 했으므로 operator=(vector<_Tp, _Alloc>&& __x)과 같은 기능이 없으므로 이동 및 평행선의 효과는 어떻게 누릴 수 있습니까?

내 C++ 헤더는 /usr/include/c++/5에 내가 확인 파일이 vector.tcc입니다.

답변

6

이 지원 이동 할당을하지 않습니다,하지만 당신은 그것을 남용하려고합니다. const 참조로 buffer을 수락합니다. 이동 할당은 소스을 수정해야합니다. 당신의 컴파일러가 당신에게 그것을 말하려고합니다.

빠른 수정은 const가 아닌 참조로 동의하는 것입니다. 더 나은 해결 방법은 이미 우세 참조로 buffer을 수락하는 것입니다. 그런 식으로 호출자는 벡터의 내용이 도난 당했을 때 놀라지 않을 운명입니다.

더 나은 수정 값으로 동의하는 것입니다. 그렇게하면 호출 된 호출자는 전달 된 버퍼가 어떻게 생성되는지 완벽하게 제어 할 수 있습니다. 그리고 귀하의 기능은 더 많은 경우에 사용할 수 있습니다. 응답에 대한

+0

덕분에, 나는 목적을 위해이 작업을 수행했다. 그러나 "no move assignment version"은 어때? 잘못된 파일을 찾고 있습니까? – reavenisadesk

+0

@reavenisadesk - 아마도 가능합니다. 컴파일러를 지정하거나 플래그를 작성하지 않았습니다. 그래서 아무 말도하지 않습니다. – StoryTeller