[C++11] 함수에서 이동시맨틱을 사용하여 우측값 참조로 반환할 때, && 무조건 명시해줘야하나요?


(adzoo) #1

<1>
std::vector A()
{
return std::move(std::vector(10));
}

<2>
std::vector&& A()
{
return std::move(std::vector(10));
}

이렇게 두가지로 구현되는데 <2>은 명시해줬기 때문에 맞는데 <1>의 경우, && 반환형을 명시 안해도 return에서 std::move를 해줘서 &&형으로 타입 캐스팅 되서 우측값 참조 처리가 된다는 글을 본거 같은데, 오늘 또 찾아보니 함수 반환형 && 명시 안하면 안된다고 하고…
어떻게 맞는거죠?


(outersky) #2

auto쓰면 해결될것 같네요


(L) #3

타입을 잘 모르겠다면 일단 auto 쓰시면 됩니다


(adzoo) #4

감사합니다!