template< class E > 
\fbox{list<E>}
class list { friend class listiter<E>; public: list() { c = 0; } ~list() { if(c) delete c; } void insert(const E& el); operator iter<E>() { return listiter<E>(c); }
(*)
private: cell* c; }; template< class E >
\c{\fbox{list<E>::insert}}
void list<E>::insert(const E& el) { void* x = (void*) ⪙ if (!c) c = new cell(x); else c->insert(x); }

slide: A template list wrapper