Skip to content

Commit f8c81f6

Browse files
authored
Update ITEM25.md
1 parent df84392 commit f8c81f6

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

ITEM25.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,26 @@ Fraction reduceAndCopy(T&& frac)
8888
```
8989
보편참조를 리턴해야 한다면 forward를 사용해야 한다.
9090
91+
### 반환값 최적화의 대상이 될 수 있는 지역 객체에는 std::move, std::forward를 사용하지 말자.
92+
```c++
93+
Widget makeWidget()
94+
{
95+
Widget w;
96+
~
97+
~
98+
return w;
99+
}
100+
101+
Widget makeWidget()
102+
{
103+
Widget w;
104+
~
105+
~
106+
return std::move(w);
107+
}
108+
```
109+
반환값 최적화가 적용되면 함수의 반환값을 위해 마련한 메모리에 w를 생성한기 때문에 이동연산도 없앨 수있다.
110+
111+
#### 반환값 최적화의 요건
112+
1. 지역 객체의 형식이 함수의 반환 형식과 같아야 한다.
113+
2. 지역 객체가 바로 함수의 반환값이어야 한다.

0 commit comments

Comments
 (0)