ほぼ使うことはないだろうけど、かなりの知見だったので覚書。 ラムダ式を関数ポインタ型へ変換する これは割と一般的な知識だと思うんですが、『キャプチャしていない』ラムダ式は関数ポインタ型へとキャストする事が出来ます。 using func_t = int(*)(int); // 関数ポインタ型として受け取る事が出来る func_t twice = [](int n){ return n + n; }; + 単項演算子で明示的に関数ポインタ型に変換する さて、これを踏まえて次のように『関数ポインタ型を型推論する』ような関数にラムダ式を渡したいとします。 // テンプレートで戻り値型や引数型を推論するよ template<typename R, typename A> void func(R(*f)(A)){ } // error: no matching function for call t