rvalue reference 2

C++ 11 universal reference, std::forward

C++11부터 rvalue reference를 지원하는 것은 이미 공부해서 알고 있었다. 그런데 rvalue reference만 공부하면 자칫 '&&가 붙으면 무조건 rvalue reference다' 라는 오류에 사로잡힐 수 있다. 사실은 그게 아니다. &&가 붙어도 lvalue reference인 경우도 있기 때문이고 그것이 universal reference의 경우이다. universal reference는 &&로 선언된 변수나 인자가 타입 추론이 필요한 경우를 의미하며 이때는 rvalue/lvalue reference 모두 가능하다. 스콧 마이어씨의 글에는 다음과 같이 적혀있다. If a variable or parameter is declared to have type T&& for some de..

공부/C || C++ 2021.07.25

C++ 11 - Rvalue reference

C++ 11에는 내가 몰랐던, 혹은 사용하는지도 몰랐던 여러가지 syntax들과 기능들이 있었다. 이번 기회에 정리해보면 좋을 것 같다. 이번 글에서는 Rvalue reference에 대해서 알아보자 먼저 Rvalue가 뭔지부터 알아보자. 이름만 보면 우측값인데 그런 의미 보다는 C++에서는 임시로 생성됐다가 바로 없어지는 값을 의미한다. Rvalue가 있으면 Lvalue도 있을텐데 Lvalue는 반대로 표현식 이후 scope내에서 다시 사용 가능한 값을 의미한다. 코드로 예를 들어보면 int a = 3 + 4; // 3+4는 rvalue int b = 10; // 10은 rvalue int sum = a+b; // a+b는 rvalue int *p = &a; // &a는 표현식이 종료되면 더 이상 참조..

공부/C || C++ 2021.07.03