template class VertexList { public: class iterator: public std::list, VertexList *> >::iterator { public: VertexList operator*(); }; // ... iterator begin() { return data.begin(); } private: std::list, VertexList *> > data; };