C, C++

[Modern C++] lvalue와 rvalue의 이해

Binceline 2016. 9. 9. 05:11



rvalue로 바꾼다는 것은 임시 객체로 만든다는 것이다


rvalue는 그 객체의 포인터를 가로채도 문제가 없다


함수인자가 rvalue로 들어와도 내부에선 lvalue취급을 한다(변수로 받았으니까)



Reference Collapsing Rule


int& & : int&

int& && : int&

int&& && : int&&

int&& & : int&


template<typename T>

void deduce(T&& t);


일 때, T가 int형 lvalue or rvalue일 때 다음 규칙이 적용된다


int& && : int&

int&& && : int&&


std::forward()는 템플리트 함수의 인수를 다른 함수의 인수에 그대로 전달하기 위한 것이다. 이것을 perfect forwarding이라고 한다.

반응형