2

たとえば、関数テンプレートがあります

template<class Fun>
void Foo(Fun f)
{
   ...
}

引数は関数オブジェクトまたは関数ポインタです。通常の関数ポインタの場合、関数をインライン化できないためパフォーマンスが良くありません。ここでラムダ関数を使用するのはどうですか? ありがとう。

4

2 に答える 2

4

あなたが言うように、関数ポインターを介した呼び出しは、ターゲット関数が実行時にしかわからない可能性があるため、インライン化できないことがよくあります。

ここでラムダをインライン化できます。その型 (テンプレート パラメーターとして推定されるFun) はコンパイル時に認識されます。したがって、関数自体 ( Fun::operator()) も既知です。

于 2013-07-16T17:51:14.133 に答える