回答編集履歴

3

微修正

2019/12/17 03:53

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -22,4 +22,4 @@
22
22
 
23
23
  str_existの寿命はmain関数の終わりまであるので、危険ではないです。
24
24
 
25
- for文の「コンテナを指定する式の一時オブジェクト」の寿命はその式が終わるまでですので、for文のループ・ブロックに入る前に破棄されます。
25
+ これに対して、for文の「コンテナを指定する式の一時オブジェクト」の寿命はその式が終わるまでですので、for文のループ・ブロックに入る前に破棄されます。

2

追記

2019/12/17 03:53

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -13,3 +13,13 @@
13
13
 
14
14
 
15
15
  [wandboxで実験](https://wandbox.org/permlink/dp9bboaQMMevHqwH)のコードの前者は上記質問のNG1と同じ原理です。
16
+
17
+
18
+
19
+ > 2つ目のrange-based forは危険でしょうか?
20
+
21
+
22
+
23
+ str_existの寿命はmain関数の終わりまであるので、危険ではないです。
24
+
25
+ for文の「コンテナを指定する式の一時オブジェクト」の寿命はその式が終わるまでですので、for文のループ・ブロックに入る前に破棄されます。

1

補足

2019/12/17 03:46

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  私もあれ?っと思ったのですが、どうも範囲ベースforのコンテナへの参照は右辺値参照で参照されるからのようです。
6
6
 
7
- [範囲for文](https://cpprefjp.github.io/lang/cpp11/range_based_for.html)に記載されていました。
7
+ この旨のコードが[範囲for文](https://cpprefjp.github.io/lang/cpp11/range_based_for.html)に記載されていました。
8
8
 
9
9
 
10
10