Haskell や Erlang, OCaml などの「関数型プログラミング言語」が流行しています。 例えばコールバック関数やSTLのfind_ifなどに渡す述語関数など… 関数それ自体を渡して色々処理をするというプログラミング手法は、 関数型言語と呼ばれることのないC++であっても、 かなりの頻度で使われる重要な技法です。
が、ノーマルな状態のC++ではやっぱりその辺りは貧弱。 関数ポインタでも関数オブジェクトでも分け隔て無く、 関数として呼び出せるものを変数に格納したいときはどうすればよいでしょう? ある関数の第二引数と第三引数を固定して、1変数関数として std::for_each に渡したいときは? クラスの変数とメンバ関数をまとめて一つのフリー関数のように扱えると、 特にコールバック処理の時に便利ですが、どう実装すればよいでしょうか?
答えはここにあります。