[過去ログ] C++相談室 part157 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
363(4): 2021/09/15(水)11:32 ID:0GWRKP/3(1/3) AAS
関数のポインタを引数で受け取る関数に
予め定義した関数のポインタの代わりに
lambda関数のポインタを渡したいとき
どう書けばよいですか?
364: 2021/09/15(水)11:43 ID:KsZNjWDc(1) AAS
>>363
ラムダ式を呼び出すラッパー関数を作って、その関数ポインタを渡す
366(2): 2021/09/15(水)12:01 ID:+suq2kti(1/2) AAS
>>363
こういうこと?
void func1(void (*arg)())
{
arg();
}
template <std::invocable F>
void func2(F arg)
{
arg();
省6
367: 2021/09/15(水)12:57 ID:gM7DTPzC(1) AAS
>>363
違うかも知れんけど、関数ポインタとラムダと型推論でなんかハマってこの記述に落ち着いた。
外部リンク:ideone.com
368(1): はちみつ餃子 ◆8X2XSCHEME 2021/09/15(水)13:01 ID:/JHaU2Oz(1) AAS
>>363
クロージャ (ラムダ式によって作られた関数オブジェクト) は周囲の変数をキャプチャしないときに限り関数ポインタに変換可能。
外部リンク:timsong-cpp.github.io
逆に言えばそうでないときは関数ポインタと互換性はない。
受け取る側が関数ポインタとして受け取るという前提を動かせないのであれば
渡すラムダ式のほうをキャプチャしない形にしてくださいということになるし、
汎用的にラムダ式を受け取れるようにしたいのだということであれば >>365-366 という方法をとることになる。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.349s*