boostを試してみました。コンパイラは以前に引き続き、Borland C++ 5.5.1
を使用しています。とりあえず以下のようなコードを書き、1)の部分を
いろいろいじくってテストしてみました。

  vector<vector<int> > vv;

  vv.resize(4);
1) for_each(vv.begin(), vv.end(), boost::bind(&vector<int>::reserve, _1, 10));

  transform(vv.begin(), vv.end(), ostream_iterator<int>(cout, ","),
    boost::mem_fn(vector<int>::capacity));
  cout << endl;

この状態だと期待通りの動きをしています。次にboostを使わず

2) for_each(vv.begin(), vv.end(), bind2nd(mem_fun_ref(&vector<int>::reserve), 11));

としてみると、コンパイルは通るのですが、reserve()は実行されてい
ないみたいで、結果が

0,0,0,0,

となります。まあ1)で動いているので問題はないのですが。これは
mem_fun_ref()に問題があるのかなと思い、代わりにboost::mem_fn()を
使用してみました。

3) for_each(vv.begin(), vv.end(), bind2nd(boost::mem_fn(&vector<int>::reserve), 12));

するとコンパイルも通らなくなります。std::bind2nd()の方の問題なの
かな?

最後にresize()も試してみました。

4) for_each(vv.begin(), vv.end(), boost::bind(&vector<int>::resize, _1, 10));

> 致命的エラー F1004 mem_fn.cpp 18: コンパイラ内部のエラー(関数 main() )

ぎゃふん。