Listing 3: <memory>, part 4


        // TEMPLATE CLASS raw_storage_iterator
template<class OutIt, class T>
    class raw_storage_iterator
        : public iterator<output_iterator_tag, void, void> {
public:
    typedef OutIt iterator_type;
    typedef T element_type;
    explicit raw_storage_iterator(OutIt x)
        : Next(x) {}
    raw_storage_iterator<OutIt, T>& operator*()
        {return (*this); }
    raw_storage_iterator<OutIt, T>& operator=(const T& x)
        {_Construct(&*Next, x);
        return (*this); }
    raw_storage_iterator<OutIt, T>& operator++()
        {++Next;
        return (*this); }
    raw_storage_iterator<OutIt, T> operator++(int)
        {raw_storage_iterator<OutIt, T> _Ans = *this;
        ++Next;
        return (_Ans); }
private:
    OutIt Next;
    };
/* End of File */