std::move는 이동이 아니라 “이동 가능” 표시

이름 있는 객체를 xvalue처럼 보이게 만들고, 실제 자원 이전은 이동 생성자나 이동 대입 연산자가 맡습니다.

1. 이름 있는 객체 vec1

lvalue라서 그대로 넘기면 복사 후보입니다.

2. 값 범주 변경 std::move(vec1)

객체를 xvalue로 캐스팅합니다.

3. 오버로드 선택 MyVector(MyVector&&)

이동 생성자/대입이 있으면 그쪽이 선택됩니다.

4. 자원 이전 pointer → target

포인터나 핸들이 새 소유자로 넘어갑니다.

핵심 std::move 자체는 포인터를 바꾸지 않습니다. “가져가도 된다”는 신호를 보낼 뿐입니다.