값 범주 확인
이름 있는 객체는 보통 lvalue이고, std::move로 xvalue로 캐스팅할 수 있다.
move라는 이름과 실제 이동은 다르다std::move는 객체를 이동시키는 함수가 아니라 rvalue로 취급하라는 캐스팅이다. 실제 이동은 이동 생성자나 이동 대입 연산자가 수행하며, moved-from 객체의 유효하지만 미정인 상태, self-move, noexcept 여부가 컨테이너 성능과 안전성에 영향을 준다.
이름 있는 객체는 보통 lvalue이고, std::move로 xvalue로 캐스팅할 수 있다.
move라는 이름과 실제 이동은 다르다T&& 매개변수와 const T& 매개변수 중 어떤 함수가 선택되는지 확인한다.
const 객체는 이동이 제한될 수 있다이동 생성자는 포인터나 handle 소유권을 새 객체로 넘기고 원본을 안전한 빈 상태로 둔다.
원본은 파괴 가능해야 한다이동 연산이 예외를 던지지 않으면 noexcept를 붙여 vector 재배치에서 이동을 활용하게 한다.
예외 가능 이동은 복사로 대체될 수 있다이동된 객체는 재대입이나 소멸은 가능하지만 값 내용에 기대지 않는다.
비어 있다고 보장하지 않는다