質問編集履歴

6

2018/03/13 15:54

投稿

reverse
reverse

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- **情報が古くなっています(追記参照)**
1
+ **情報が古くなっています(追記参照)**
2
2
 
3
3
 
4
4
 

5

2018/03/13 15:54

投稿

reverse
reverse

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
+ **情報が古くなっています(追記参照)‼**
2
+
3
+
4
+
1
5
  参照で受け取った引数への変更を出力した際、
2
6
 
3
7
  下記コードのように、式を分けない場合と分ける場合で出力内容が異なるようです。

4

2018/03/13 15:54

投稿

reverse
reverse

スコア12

test CHANGED
File without changes
test CHANGED
@@ -88,4 +88,4 @@
88
88
 
89
89
 
90
90
 
91
- C++17にて式の評価順が厳密に定義された([参考](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))為、C++17以降では両ケース共に同じ出力(後者)となるようです。ご注意ください。
91
+ C++17にて式の評価順が厳密に定義された([参考](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))為、C++17以降では両ケース共に後者の出力となるようです。ご注意ください。

3

2018/03/13 15:53

投稿

reverse
reverse

スコア12

test CHANGED
File without changes
test CHANGED
@@ -88,4 +88,4 @@
88
88
 
89
89
 
90
90
 
91
- C++17にて式の評価順が厳密に定義された([参考](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))為、C++17以降では両ケース共に同じ出力となるようです。ご注意ください。
91
+ C++17にて式の評価順が厳密に定義された([参考](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))為、C++17以降では両ケース共に同じ出力(後者)となるようです。ご注意ください。

2

2018/03/13 15:52

投稿

reverse
reverse

スコア12

test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,9 @@
4
4
 
5
5
  どうしてこうなるのでしょうか?
6
6
 
7
- 両出力が同一後者だと想定していただけに非常に気になります。
7
+ 両出力が同一(後者)だと想定していただけに非常に気になります。
8
8
 
9
9
  回答の程、宜しくお願いします。
10
-
11
-
12
-
13
- **Note:** C++17にて式の評価順が厳密に定義された為([参照](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))、C++17以降では両ケースとも同じ出力となるようです。
14
10
 
15
11
 
16
12
 
@@ -85,3 +81,11 @@
85
81
  1 1
86
82
 
87
83
  ```
84
+
85
+
86
+
87
+ ## 追記 (2018.3.14)
88
+
89
+
90
+
91
+ C++17にて式の評価順が厳密に定義された([参考](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))為、C++17以降では両ケース共に同じ出力となるようです。ご注意ください。

1

2018/03/13 15:51

投稿

reverse
reverse

スコア12

test CHANGED
@@ -1 +1 @@
1
- C++: 参照の挙動に関して
1
+ C++: 参照の挙動に関して (※式の評価順序)
test CHANGED
@@ -10,6 +10,10 @@
10
10
 
11
11
 
12
12
 
13
+ **Note:** C++17にて式の評価順が厳密に定義された為([参照](https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html))、C++17以降では両ケースとも同じ出力となるようです。
14
+
15
+
16
+
13
17
  [http://ideone.com/KhCDTK](http://ideone.com/KhCDTK)
14
18
 
15
19
 
@@ -18,17 +22,23 @@
18
22
 
19
23
  #include <iostream>
20
24
 
21
-
22
25
 
23
- auto f(auto& a) {
24
26
 
27
+ template <typename T>
28
+
29
+ T f(T& t)
30
+
31
+ {
32
+
25
- return ++a;
33
+ return ++t;
26
34
 
27
35
  }
28
36
 
29
-
30
37
 
38
+
31
- void test1() {
39
+ void test1()
40
+
41
+ {
32
42
 
33
43
  int a{};
34
44
 
@@ -36,9 +46,11 @@
36
46
 
37
47
  }
38
48
 
39
-
40
49
 
50
+
41
- void test2() {
51
+ void test2()
52
+
53
+ {
42
54
 
43
55
  int a{};
44
56
 
@@ -48,13 +60,17 @@
48
60
 
49
61
  }
50
62
 
51
-
52
63
 
64
+
53
- int main() {
65
+ int main()
66
+
67
+ {
54
68
 
55
69
  test1();
56
70
 
57
71
  test2();
72
+
73
+ return 0;
58
74
 
59
75
  }
60
76