間違ったコード
class Item { private: int value_; public: Item(int v) : value_(v) { } void Initialize() { ... } }; class Hoge { private: std::vector<Item*> vec_; public: ~Hoge() { BOOST_FOREACH (Item* p, vec_) delete p; } void add(int n) { std::auto_ptr<Item> item(new Item(n)); item->Initialize(); vec_.push_back(item.release()); } };
例外を例外と見抜けない人は(std::auto_ptr<> を使うのは)難しい。