C++17 - RVO(Return Value Optimization) 지원

컴파일러 최적화 기능으로 RVO(Return Value Optimization) 나 NRVO(Named Return Value Optimization)를 지원하고 있었다.
그러나 이 최적화 기능은 각 컴파일러에서 제공하는 것이지 C++ 표준으로 정해진 것이 아니다.
즉 어떤 컴파일러는 지원하지 않을 수 있다.

C++17 에서는 RVO에 한해서는 표준 규약으로 지원한다.

struct Game {};

Game newGame()
{
    return Game();
}

Game g = newGame();

위의 경우 RVO 최적화가 없다면 임시 객체가 만들어진 후 복사가 된다.
그러나 C++17 에서는 임시 객체를 만들지 않는다.


이 글은 2019-11-26에 작성되었습니다.