2
テンプレート機能は、このようなその関数ポインタの引数を推測することができますテンプレート関数はラムダの引数を推定できますか?関数ポインタを取る
template<class... Args>
void func(void (*ptr)(Args&& ...)) {
//Do something useful knowing the Args...
}
あなたは、引数としてラムダと同じことを行うことができます。 std::function
に頼ることなく、function_traitsのようなメタプログラミングの特性クラスを書くことなく?すなわち関数を使用するだけで引数を導き出す。
これは、lambdasパラメータを取得する引数として 'decltype(&T :: operator())(Args && ...)'のようなものを書くことができますか、それとも厳密には不可能なのでしょうか? – Brian
@Brianラムダが多型でない場合は、引数型として 'R(T :: *)(Args ...)'を入れ、 '&T :: operator()'を引数として渡すことができます。ラムダの 'operator()'はconst修飾されていてもいなくてもよく、 'noexcept'であるかもしれないし、そうでないかもしれないし、末尾にあるかもしれないし、持っていないかもしれないので、合計8つのオーバーロードが必要である省略記号。 – Brian