다음 예제에서는 'fun'의 'src'인수가 명시 적으로 rvalue 참조이고 이동 생성자가 재미있는 'copy'구성에서 호출되지 않습니다. 그 건설에만 사용 되었습니까?이동 생성자가 호출되지 않습니다? (C++ 11)
struct Toy {
int data;
Toy(): data(0)
{
log("Constructed");
}
Toy(Toy const& src): data(src.data)
{
log("Copy-constructed");
}
Toy(Toy&& src): data(src.data)
{
log("Move-constructed");
}
};
Toy fun(Toy&& src)
{
Toy copy(src);
copy.data = 777;
return copy;
}
Toy toy(fun(Toy())); // LOG: Constructed Copy-constructed
가능한 복제본 [복제 추출 및 반환 값 최적화 란 무엇입니까?] (http://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization) – nosid
당신의 예는 완전하거나 쓸모가 없으며, 다음 번엔 다른 사람들이 사용할 수있는 무언가를 게시하십시오. 잠재 고객으로부터 문제를 복제하는 것으로 보이는 임의의 미리보기가 아닙니다. – user2485710
복사 elision 또는 반환 값 최적화가 'copy'객체가 함수 내부에서 생성되는 방식과 아무런 관련이 없음을 이해하지 못합니다. 일어나는 일은 분명히 반 직관적이고 역효과가 있습니다. – user3026691