関数オブジェクト
関数オブジェクトとはなにか?
『C++の設計と進化』に書いてあるのをそのまま引用すると、
「関数としての挙動を定義する適用演算子()を持つクラスのオブジェクト。」
ということらしい。
例えば、関数オブジェクトを使うと以下のようなコードが書けます。
#include <iostream> using namespace std; template<class T> struct Less_than{ T value; Less_than(const T& v) : value(v){} bool operator()(const T& v) const { return v<value; } }; int main(){ Less_than<double> f(3.14); cout << " 3 < 3.14 ? -> " << f(3) << endl; cout << " 4 < 3.14 ? -> " << f(4) << endl; return 0; }