binder2nd
から導出されunary_function
ます。
次のコード スニペットは機能しません。
greater<int> g;
//greater is derived from binary_function
//bind2nd returns binder2nd object and binder2nd is derived from unary_function
const unary_function<int,bool> &greater_than_0 = bind2nd(g, 0);
// base class reference type holding reference to derived class object
remove_if(lst.begin(), lst.end(), greater_than_0);
//does not work
一方、次のコード スニペットは機能します。
greater<int> g;
const binder2nd< greater<int> > &greater_than_0 = bind2nd(g, 0);
remove_if(lst.begin(), lst.end(), greater_than_0);
unary_function
最初のコード スニペットが機能するように、ダミーの仮想関数を含めると役に立ちますか。それはSTLの使用を改善できますか?