回答編集履歴

3

refine

2020/07/25 06:38

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -46,13 +46,13 @@
46
46
 
47
47
 
48
48
 
49
- - 関数`a`は`std::function<int(int)>`型へと暗黙変換可能です。
49
+ - 関数`a`は`std::function<int(int)>`型へと変換可能です。
50
50
 
51
- - 関数`a`は関数ポインタ`int(*)(int)`型へと暗黙変換可能です。
51
+ - 関数`a`は関数ポインタ`int(*)(int)`型へと変換可能です。
52
52
 
53
- - クロージャオブジェクト`b`は`std::function<int(int)>`型へと暗黙変換可能です。
53
+ - クロージャオブジェクト`b`は`std::function<int(int)>`型へと変換可能です。
54
54
 
55
- - ラムダ式`[](int x){return x;}`は**何もキャプチャしないため**、クロージャオブジェクト`b`は関数ポインタ`int(*)(int)`型へと暗黙変換可能です。
55
+ - ラムダ式`[](int x){return x;}`は**何もキャプチャしないため**、クロージャオブジェクト`b`は関数ポインタ`int(*)(int)`型へと変換可能です。
56
56
 
57
57
 
58
58
 

2

add link

2020/07/25 06:38

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -103,3 +103,7 @@
103
103
  cout << funcC(10, +b) << '\n'; // +により関数ポインタ型へ強制変換
104
104
 
105
105
  ```
106
+
107
+
108
+
109
+ (参考記事:[ラムダ式と単項+演算子 - 地面を見下ろす少年の足蹴にされる私](https://onihusube.hatenablog.com/entry/2019/04/19/204552))

1

refine

2020/07/25 05:31

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  - `test1::funcB`の第2引数は関数ポインタ`int(*)(int)`型を要求します。
30
30
 
31
- - `test1::funcC`の第2引数は関数`int(int)`型を要求するように見えますが、C++のルールにより「関数ポインタ`int(*)(int)`型」に読み替えられます。
31
+ - `test1::funcC`の第2引数は関数`int(int)`型を要求するように見えますが、[C++のルール](https://timsong-cpp.github.io/cppwp/n4659/dcl.decl#dcl.fct-5)により「関数ポインタ`int(*)(int)`型」に読み替えられます。
32
32
 
33
33
 
34
34
 
@@ -90,9 +90,9 @@
90
90
 
91
91
  cout << funcA(10, {a}) << '\n'; // {}によりstd::functionの推論ガイドを利用
92
92
 
93
- cout << funcB(10, a) << '\n'; // (無加工)
93
+ cout << funcB(10, a) << '\n'; // (無加工)
94
94
 
95
- cout << funcC(10, a) << '\n'; // (無加工)
95
+ cout << funcC(10, a) << '\n'; // (無加工)
96
96
 
97
97
 
98
98