C++ 11 오른쪽 값을 이해하려고하며 코드에서 최적의 성능을 위해이를 어떻게 사용하는지 이해하려고합니다.rvalue reference를 const lvalue reference paremeter로 넘기기
많은 양의 동적 할당 된 데이터에 대한 멤버 포인터가있는 클래스 A
이 있다고 가정 해 보겠습니다.
foo(const A& a)
또한 A
클래스의 개체를 사용하는 방법이 있습니다. 내가 원하는
는 A
의 대상이 기능 foo
에 전달 될 때이 경우는 기본 힙 데이터의 깊은 복사를 수행하기 때문에,라는 것을 A
의 복사 생성자를 방지합니다.
A a;
foo(a);
과를 rvalue 참조를 전달 :
내가 좌변 기준을 통과 시험 복사 생성자가 있었다 두 경우 모두foo(A());
호출되지.
이것은 내 컴파일러 (Apple LLVM 5.1)의 최적화로 인한 것입니까? 이것에 대한 사양이 있습니까?
나는 단지 [starius] (http://stackoverflow.com/users/1293417/starius) '를 편집하여 별다른 변경을하지 않았다. 중요한 것은 그의 편집 내용입니다. 그러한 변경에 대해 원저자의 이름을 사용하는 방법이 있어야합니다. – bogdan
@bogdan 편집자는 마지막으로 편집자 였기 때문에 보여줍니다.하지만 starius는 편집 목록에 있습니다 ("편집 된 1 시간 전"텍스트를 클릭하면). –
그래, 나는 그것을 보았지만 여전히 ... "개선"이 별도의 편집으로 나타나는 것을 알았다면 나는 원래의 변화를 그대로 남겨 두었을 것이다. 처음에는 버전 관리에 대해서는별로 생각하지 않았습니다. 되돌아 보면 두 가지 변경 사항을 연결하지만 병합하지는 않습니다. 어쨌든, 소음 때문에 유감입니다. – bogdan