- 1 名前:デフォルトの名無しさん [2009/01/11(日) 11:13:44 ]
- C++標準ライブラリの一つ、STLについて。
前スレ 【C++】STL(Standard Template Library)相談室 10 pc11.2ch.net/test/read.cgi/tech/1219719677/ 過去ログ・リンク・書籍紹介は >>2 以降
- 175 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:08:36 ]
- >>136,143
www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#92 今のドラフトでは以下の記述が追加されている。 > algorithms that take function objects as arguments are permitted to copy those function objects freely アルゴリズム内でどうコピーされるかは基本的に実装任せってことになるらしい。 for_each() の戻り値はまったく使えないことになりそうだ。
- 176 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 16:56:46 ]
- >>175
for_eachの戻りはコピーされた関数オブジェクトに内部状態が反映されてるんじゃなかった?
- 177 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:17:17 ]
- >176
関数オブジェクトに全要素を通して処理した結果の状態が保持されていることを期待するだろうが、 極端に言えば各要素の呼び出し毎に新しくコピーした関数オブジェクトを渡されたりすると、期待する 結果と異なる。 参照使うなりコピーされても大丈夫なようにはできるからまったく使えないは言い過ぎ。 とはいえ、そういう用途なら accumulate 使えばいいじゃん、とは思う。
- 178 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:22:46 ]
- boost::ref使って渡せばいいんじゃないか。boost::mpl::for_eachではうまくいった
- 179 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:23:42 ]
-
|

|