std::function<T1(T2)>
オリジナルに対する利点は何T1 (*)(T2)
ですか?
20188 次
3 に答える
35
std::function
は、関数ポインタ、つまりファンクタ以外のものを保持できます。
#include <functional>
void foo(double){}
struct foo_functor{
void operator()(float) const{}
};
int main(){
std::function<void(int)> f1(foo), f2((foo_functor()));
f1(5);
f2(6);
}
例が示すように、互換性がある限り、まったく同じ署名は必要ありません(つまり、std::function
含まれる関数/ファンクターにパラメーターの型を渡すことができます)。
于 2012-07-05T21:42:29.213 に答える
16
std::function
関数オブジェクト (ラムダを含む) と、正しいシグネチャを持つ関数ポインターを保持できます。そのため、より汎用性があります。
于 2012-07-05T21:40:47.010 に答える
9
すっきりとした外観とよりわかりやすい構文とは別に、任意の呼び出し可能なオブジェクトstd::function
を格納できます。
- 機能
- ラムダ式
- バインド式
- 関手
メンバー関数へのオブジェクトの格納、コピー、およびバインドは、はるかに簡単で直感的であることは言うまでもありません。
于 2014-01-14T18:04:37.090 に答える