(C++ : Move Semantics-7) 상수(const object)의 move

Posted by : at

Category : Cpp


int main()
{
    Test t1;
    Test t2 = move(t1);

    // 만약 t1이 상수라도 move가 동작할까??
}
const Test t1;
Test t2 = move(t1);
// copy로 동작!, 모든 멤버를 변경할 수 없기에, 그런데 어떻게 copy가 호출되나?
Test t2 = static_cast<Test&&>(t1);
// error, 강제로 해보려해도 안된다.
template<typename T> typename 
remove_reference<T>::type && xmove(T&& obj)
{
    return static_cast<typename remove_reference<T>::type &&>(obj);
    // 결국 return은
    // return static_cast<const Test&&>(obj); 가 되고
    // const Test&&  => Test(Test&&) -> move에서는 호출 불가
    //               => Test(const Test&) -> copy에서 호출 가능
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links