●STL スレッド●
■ このスレッドは過去ログ倉庫に格納されています
0329STL勉強中
NGNGboostを試してみました。コンパイラは以前に引き続き、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() )
ぎゃふん。
■ このスレッドは過去ログ倉庫に格納されています