teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

リンク追加

2019/05/04 08:27

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -30,4 +30,8 @@
30
30
  }
31
31
  ```
32
32
  このケースでは、returnのstd::moveは書いた方がいいような気がします。
33
- NRVOは機能できない筈ですし、構文的にはコピーになる筈です。コンパイラがstd::moveなしでも左辺値をムーブしてくれればよいのですが。(右辺値参照は左辺値です。わけわからんですね。)
33
+ NRVOは機能できない筈ですし、構文的にはコピーになる筈です。コンパイラがstd::moveなしでも左辺値をムーブしてくれればよいのですが。
34
+
35
+ ↓右辺値参照は左辺値です。わけわからんですね。
36
+ https://cpprefjp.github.io/lang/cpp11/rvalue_ref_and_move_semantics.html
37
+ > 右辺値参照で宣言された変数は右辺値ではなく、左辺値である。

1

補足

2019/05/04 08:27

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -29,4 +29,5 @@
29
29
  return std::move(vec);
30
30
  }
31
31
  ```
32
- このケースでは、returnのstd::moveは書いた方がいいような気がします。(NRVOは機能できない筈ですから。)
32
+ このケースでは、returnのstd::moveは書いた方がいいような気がします。
33
+ NRVOは機能できない筈ですし、構文的にはコピーになる筈です。コンパイラがstd::moveなしでも左辺値をムーブしてくれればよいのですが。(右辺値参照は左辺値です。わけわからんですね。)