間違ったコード

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<> を使うのは)難しい。