template< class E >  
\fbox{listiter}
class listiter : public iter<E> { public: listiter( cell* c ) : iter<E>(this), p(c) {}
virtuality
~listiter() { cout << "~listiter" << endl; } E* operator()();
the iterator function
private: cell* p; };

The operator() function

template< class E > 
\fbox{listiter::operator()}
E* listiter<E>::operator()() { void* x = p?p->el:0; if (p) p = p->next; return (E*) x;
conversion to (E*)
}

slide: The listiter class