🧼C, C++/기초및 입문

c++17 | r-value를 l-value로 바꾸는 방법

Mawile 2022. 1. 30.
728x90

안녕하세요!

이번에는 r-value를 l-value로 바꾸는 방법에 관하여 알아보겠습니다.

저가 이번에 그래픽공부를 하면서 진짜~~!! 엄청 많이 마주친 오류...

 

흠... 이 오류는 l-value가 있어야 할 자리에 r-value가 존재하기 때문이죠.

l-value는 고유의 메모리주소를 참조할 수 있으며, r-value로도 치환이 가능하지만, 반대로 r-value는 불가능하죠...

그래서 생기는 문제입니다.

 

저는 이 문제를 그냥 고유의 메모리주소를 할당해주어 인스턴스 하나만들어가면서 고치고있었는데, 매번~ 이 오류뜰때마다 인스턴스만들기도 뭣하고.... "뭐 간단하게 바꿀수있는법 없나?" 라고 생각하면서 스택오버플로우를 탐방해보았습니다.

 

그리고.. 발견!! 이 방법이 진짜 간단해요.

https://stackoverflow.com/questions/44677825/rvalue-to-lvalue-conversion

 

Rvalue to lvalue conversion?

Why it is not possible to convert rvalues to lvalues? It is possible to do a conversion in the opposite direction though. Technically rvalues do have a memory address, isn't it?

stackoverflow.com

 

이제 오류가 안뜨더라구요..!!

template <class _Tp>
_Tp& My_unmove(_Tp&& __value) {
	return __value;
}

 

 

 

 

 

굿....!!!

이제부터 게임엔진 만들때마다 이 함수는 필수겠네요 흑...ㅠㅠ 너무좋아

 


728x90

댓글