(記事復旧のついでに少し修正)
msgpack-rpc の関数登録の都合上、 lambda 関数から引数の型を得たい。 下記のような書き方をしたい。
上記の書き方では普通の関数ポインタを受けることはできるのだが、
std::function と lambda は受けられない。 std::function を受けるには下記のようにすることでできた。
残り、lambda を受けられる記述方法を知りたいのだがどうしたらよいものか。 下記のような手はうまくいかなかった・・・
lambda expression を 関数ポインタ型へと変換する こちらのサイトから decltype を使ったらなんかできそうな感じがしたので粘っていたのだが、
目的そのものの記事を発見した。 http://stackoverflow.com/questions/6512019/can-we-get-the-type-of-a-lambda-argument
F で関数ポインタ、lambda、std::function 等を受けられるようになった。 decltype なんかすごいな。
関連して、cpp でメンバー関数を、this を第1引数にとる関数ポインタに変換する。 メンバ関数へのポインタは意外と使い道がある。