回答編集履歴
2
refinement
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> `DWORD(WINAPI *lambda_func)(void*)`
|
2
2
|
|
3
|
-
(わかりづらいC/C++言語の文法ですが)この部分は「1つの引数`void*`をとって`DWORD`を返す関数へのポインタ型」変数`lambda_func`を宣言しています。
|
3
|
+
(わかりづらいC/C++言語の文法ですが)この部分は「1つの引数`void*`をとって`DWORD`を返す関数へのポインタ型」変数`lambda_func`を宣言しています。`WINAPI`部分は該当関数の呼出規約を表しています。(呼出規約指定は標準C++の範囲外=コンパイラ独自の拡張です)
|
4
4
|
|
5
5
|
ですので、コード全体としては「1つの引数`void*`をとって`DWORD`を返すラムダ式」を定義し、同ラムダ式を関数ポインタヘ変換した結果(※)を、変数`lambda_func`として保持します。
|
6
6
|
|
1
update
answer
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
(わかりづらいC/C++言語の文法ですが)この部分は「1つの引数`void*`をとって`DWORD`を返す関数へのポインタ型」変数`lambda_func`を宣言しています。(なお`WINAPI`部分は該当関数の呼出規約を表しています。)
|
4
4
|
|
5
|
-
ですので、コード全体としては「1つの引数`void*`をとって`DWORD`を返すラムダ式」を定義し、同ラムダ式を関数
|
5
|
+
ですので、コード全体としては「1つの引数`void*`をとって`DWORD`を返すラムダ式」を定義し、同ラムダ式を関数ポインタヘ変換した結果(※)を、変数`lambda_func`として保持します。
|
6
6
|
|
7
7
|
```C++
|
8
8
|
DWORD(WINAPI *lambda_func)(void*) = [](void* pData) -> DWORD { /*...*/ };
|
9
9
|
```
|
10
10
|
|
11
|
-
※C++言語のラムダ式は、変数キャプチャを行わない場合(上記コードでは`[]`)に限って、関数ポインタ型へと暗黙に変換可能です。
|
11
|
+
※C++言語のラムダ式は、変数キャプチャを行わない場合(上記コードでは`[]`)に限って、関数ポインタ型へと暗黙に変換可能です。[cpprefjpのラムダ式説明](https://cpprefjp.github.io/lang/cpp11/lambda_expressions.html#convert-to-function-pointers) もご参考に。
|