回答編集履歴

1

std::moveなんていらんかった

2018/03/05 22:06

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,4 +1,4 @@
1
- 主にCについてですが、C++についても後ほど述べます。
1
+ 主にCについてですが、C++についても後ほど述べます。(特に明記しない限り、C11、C++17前提です)
2
2
 
3
3
 
4
4
 
@@ -318,9 +318,7 @@
318
318
 
319
319
 
320
320
 
321
- 上のコードですが、`std::move()`は不要です。自動ローカル変数をそのまま返す場合、そのが対応していれば、右辺値参照によるムーブセマンティクスによって、値のコピーではなく、値のムーブになります。(あってますよね?ちょっと不安・・・-д-;)
321
+ 上のコードですが、`std::move()`を外した方が効率がいいです。自動ローカル変数をそのまま返す場合、その変数戻り値の領域に初めからセットされるからです。戻り値は右辺値ですので、呼び出し側が対応していれば、右辺値参照によるムーブセマンティクスによって、値のムーブになります。(詳しくはChironianさんのコメント参照)
322
-
323
-
324
322
 
325
323
 
326
324