46項 アルゴリズムのパラメータとして関数の代わりに関数オブジェクトの使用を考えよう

アルゴリズムのパラメータとして関数の代わりに関数オブジェクトの使用を考えよう


inline関数をもつ関数オブジェクトはインライン化されますが、関数ポインタからの関数呼び出しはインライン化されにくいそうです。
処理系によっては、constメンバ関数(string::sizeなど)の扱いにバグがあり、下のコードがコンパイルされない場合があるそうです。

set<string> s;
s.insert("a");
transform( s.begin(), s.end(), 
           ostream_iterator<string::size_type>(cout, "\n"),
           mem_fun_ref(&string::size));

関数オブジェクトを使えばコンパイルされるそうです。