auto_ptr_array、boost::scoped_ptr

動的配列を管理しようとする際、auto_ptrは単体deleteを呼んでしまうのでいろいろと都合が悪い。適当にぐぐってみるとstd::vectorを使えという意見が目立つ。しかしこれではC風の関数(const T* ary, unsigned int nCount)とか呼び出すときに困ってしまう。

boostでスコープが切れたときに自動的に関数オブジェクトを呼び出すようなクラスがあったと思うのだが思い出せない。うーむ。

ちなみに配列版のauto_ptrは、やねうらお氏がauto_arrayというクラスを書いています。
(参照: http://www.sun-inet.or.jp/~yaneurao/rsp/rspC9toCF.html)

また、所有権が一切移動しない場合はboost::scoped_arrayを使うという手もあります。今回はこれで解決。他にもnytrでauto_ptrを使っているところを見ると、殆どboost::scoped_ptr/arrayに移行できそう。