태그: RVO
3편
-
C++ RVO와 NRVO: C++17 보장 복사 생략과 return std::move가 NRVO를 막는 경우
return 문에서 복사가 언제 생략되는지 RVO와 NRVO를 나눠 설명하고, C++17이 보장하는 복사 생략의 범위와 여러 반환 경로나 return std::move 때문에 NRVO가 깨지는 경우를 GCC로 직접 확인한 결과와 함께 보여줍니다.
-
C++ 반환 방식 고르기: 값·레퍼런스·포인터 반환, RVO를 막는 return std::move
함수에서 값, 레퍼런스, 포인터 중 무엇으로 반환할지 정하는 기준과 지역 변수 레퍼런스를 반환해 댕글링이 되는 문제, 일부 경로에서 return이 빠지는 실수, return std::move가 RVO를 막는 이유, pair·tuple·optional로 여러 값을 돌려주는 방법을 설명합니다.
-
C++ Copy Elision 심화 | RVO·NRVO·필수 생략·예외 안전
C++17에서 prvalue 반환에 복사 생략이 의무가 된 규칙과 NRVO처럼 여전히 컴파일러 재량인 경우를 구분하고, NRVO가 실패하는 조건, 이동 폴백과 noexcept, return std::move가 최적화를 막는 이유를 설명합니다.