move, 생성자, noexcept, forward의 역할

이동 시맨틱은 “값 범주를 표시하는 도구”와 “자원을 옮기는 함수”를 분리해서 읽어야 한다.

std::move이 객체를 이동 후보로 보겠다는 표시
move ctor포인터·핸들 같은 자원을 실제로 넘김
noexcept컨테이너가 복사 대신 이동을 고르게 함
std::forward받은 값 범주를 그대로 다음 호출에 전달
도구맡는 일자주 하는 실수
std::movervalue처럼 다루게 캐스팅그 자체로 복사 비용을 없앤다고 착각
move 생성자소유권을 가져오고 원본을 비움원본 객체를 유효하지 않은 상태로 둠
std::forward템플릿 인자의 lvalue/rvalue 보존일반 함수에서 move 대신 사용

핵심 move는 “옮겨도 된다”는 신호이고, 실제 안전성은 이동 생성자와 noexcept 설계가 만든다.