ファンクターを作成するには、不要なボイラー プレートが必要です。状態は 4 回書き込む必要があります。
struct f{
double s; // 1st
f(double state): s(state) {} // 2nd, 3rd and 4th
double operator() (double x) {
return x*s;
}
};
double functor(state)(x){ return x*state; }
ちょうどまたは似たようなマクロを備えたライブラリはありますか。
BOOST_FOREACH
うまく機能するマクロアダプターです。似たようなものを探しています。
書き方に関する提案も大歓迎です。
ps。ファンクターに構造体を使用する方が高速で、クラスの operator() をバインドするか、関数をファンクターとしてバインドしますか?
アップデート(1)
ラムダに関して:
ファンクターはモジュール式でなければなりません。つまり、他の関数で再利用できる必要があります。ラムダは関数内にある必要があります-ラムダはメインから呼び出されるメインにある必要があり、メイン外の他の関数はメインで定義されたラムダを呼び出すことはできません。