回答編集履歴

2

m

2018/01/30 02:46

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- >この2つですが、今回は特殊な条件に当てはまるので得られる結果は同じとなりますが、C++規格的にはべつのものです。
45
+ > この2つですが、今回は特殊な条件に当てはまるので得られる結果は同じとなりますが、C++規格的にはべつのものです。
46
46
 
47
47
 
48
48
 

1

m

2018/01/30 02:45

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
@@ -27,3 +27,39 @@
27
27
  さて、方法1ですが、これはaggregate初期化です。コンストラクタによっては同様の記法でinitizer_listによる初期化とみなされることもあるからややこしい。
28
28
 
29
29
  方法2も方法1と同じですが、ただし初期化したオブジェクト(`RGB{1, 5, 6}`)をmoveして初期化しています(自信ない、C++17でRVO強制になったけどこれどう解釈されるんだ?1と完全同一になるのか・・・?)
30
+
31
+
32
+
33
+ ---
34
+
35
+
36
+
37
+ 追記
38
+
39
+
40
+
41
+ yohhoyさんの回答が正しいのでそれを見てください。
42
+
43
+
44
+
45
+ >この2つですが、今回は特殊な条件に当てはまるので得られる結果は同じとなりますが、C++規格的にはべつのものです。
46
+
47
+
48
+
49
+ と言ったのは、例えば
50
+
51
+
52
+
53
+ ```
54
+
55
+ std::vector<int> a1 = { 1, 2, 3 };
56
+
57
+ std::vector<int> a2 = std::vector<int>{ 1, 2, 3 };
58
+
59
+ ```
60
+
61
+
62
+
63
+ この2つは(C++14までだと)違う挙動だよ、という意味合いの話でした。見かけ上すっごい似ていますよね?
64
+
65
+ C++17からはこれも同一の挙動になったはずなので、わかりやすくなった・・・のか?