태그: move
4편
-
C++ use-after-move 버그: std::move가 캐스팅일 뿐인 이유와 이동 의미론 실수 10가지
std::move는 캐스팅일 뿐이라는 사실에서 출발해 이동된 객체를 다시 쓰는 use-after-move 버그, const 객체 이동, return에 std::move를 붙여 RVO를 막는 실수 등 이동 의미론 에러 10가지와 고치는 방법을 다룹니다.
-
C++ lvalue와 rvalue: 값 범주 구분 기준과 이름 있는 rvalue 참조가 lvalue인 이유
이름이 있고 주소를 얻을 수 있으면 lvalue라는 기준으로 값 범주를 구분하고, const 참조와 rvalue 참조가 무엇에 바인딩되는지, 이름 있는 rvalue 참조가 lvalue로 취급되는 이유, std::move와 std::forward가 여기서 하는 역할을 예제로 설명합니다.
-
C++ Move 시맨틱스: 복사와 이동의 차이, rvalue 참조, std::move
lvalue와 rvalue 구분에서 시작해 std::move가 실제로는 캐스트일 뿐인 이유, 참조 축소 규칙과 std::forward를 이용한 완벽 전달, Rule of Five와 이동 전용 타입 설계, 자기 이동 대입 처리까지 예제로 설명합니다.
-
C++ std::copy·copy_if·copy_backward: 목적지 크기, 겹치는 범위, back_inserter
std::copy·copy_if·copy_n·copy_backward·move를 언제 골라 쓰는지 벡터 복제와 필터링 예제로 설명하고, 목적지 크기 부족, 겹치는 범위, move 후 원본 상태, back_inserter 같은 출력 반복자 선택 문제를 다룹니다.