[Effective Modern C++] 항목 25. 오른값 참조에는 std::move를, 보편 참조에는 std::forward를 사용하라
오른값 참조는 이동할 수 있는 객체에만 묶인다. 다시 말하면 어떤 매개변수가 오른값 참조라면, 객체를 이동할 수 있다는 의미이다. 오른값 참조로 캐스팅해주는 객체가 바로 std::move 함수이다. 반면에 보편 참조는 오른값 참조일수도 있지만 아닐수도 있다. 오른값일때만 오른값으로 캐스팅해주어야하는데 이 역할을 하는 함수가 std::forward 이다. 오른값 참조일때도 std::forward 를 사용할 수 있지만, 실수의 여지가 생기며 관용구에서 벗어나기 때문에 사용하지 않는것이 좋다. 그런데 보편 참조에 std::move 를 사용하는 것은 매우 위험하다. 코드를 살펴보자. class Widget { public: template void setName(T&& newName) // 보편 참조 { nam..
C++/Effective Modern C++
2019. 11. 30. 22:46
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- auto
- async
- forward
- Unreal
- std::forward
- thread
- C++14
- Join
- Effective
- 발아시기
- Override
- MOVE
- Overloading
- std::move
- Modern
- C++
- 람다
- C
- Effective Modern C++
- CPP
- 포인터
- 보편참조
- 다이소
- 보편 참조
- Forwarding
- detach
- const
- C++11
- Future
- Perfect
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함