0
나는 std::move
을 반환 진술서에 기입하지 말고 충고를 기울였습니다. for example. 예외적 인 경우를 제외하고는 for example입니다.std :: move in return statement
다음은 또 다른 간단한 예제입니다. std::move
은 가치가있을 수 있습니다. 그러나 나는 왜 그런지, 미래의 C++에서 그 변화가있을 것인가?
#include <iostream>
struct A
{
};
struct C
{
};
struct B
{
B(const A&, const C&) { std::cout << "B was copied\n"; }
B(A&&, C&&) { std::cout << "B was moved\n"; }
};
B f()
{
A a;
C c;
//return {a, c}; // Gives "B was copied"
return {std::move(a), std::move(c)}; // Gives "B was moved"
}
int main() {
f();
return 0;
}
반환 된 개체를 강제로 이동하려고하지 않습니다. 사용자가 구성 중입니다. 조언과 관련이 없습니다. – StoryTeller
다른 생성자는 'B'가 이동되거나 복사되는 것과 아무런 관련이 없습니다. – John
당신의 코드는'return std :: move (x);'와 상당히 다릅니다. 여기서 움직이는 것은 실질적으로 반환과 관련이 없습니다. – user463035818