move
무조건 인수를 rvalue 참조로 캐스트합니다. 따라서 형식이 이동 가능할 경우 이동 가능하다는 신호를 줍니다.
template<class Type>
typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;
매개 변수
매개 변수 |
설명 |
---|---|
Type |
참조 축소 규칙과 함께 Arg에 전달된 인수의 형식에서 추론된 형식입니다. |
Arg |
캐스팅할 인수입니다. Arg의 형식이 rvalue 참조로 지정되는 것처럼 보여도 lvalue 참조가 rvalue 참조에 바인딩될 수 있기 때문에 move도 lvalue 인수를 수용합니다. |
반환 값
형식과 상관없이, rvalue 참조로서의 Arg는 참조 형식입니다.
설명
템플릿 인수 Type은 명시적으로 지정하는 것이 아니며, Arg에 전달된 값의 형식에서 추론해야 합니다. Type의 형식은 참조 축소 규칙에 따라 추가 조정됩니다.
move는 인수를 이동하지 않습니다. 대신, lvalue일 수 있는 인수를 무조건 rvalue로 캐스트할 경우 Arg 형식에 이동이 활성화되어 있으면 컴파일러가 나중에 해당 형식에 전달된 값을 복사하지 않고 이동합니다. 해당 형식에 이동이 활성화되어 있지 않은 경우에는 대신 복사됩니다.
Arg에 전달된 값이 lvalue인 경우, 즉 이름이 있거나 주소를 가져올 수 있는 경우, 이동이 발생하면 무효화됩니다. 이동 이후에는 이름 또는 주소로 Arg에 전달된 값을 참조하지 마십시오.
요구 사항
헤더: <utility>
네임스페이스: std