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{}
E* listiter<E>::operator()() { void* x = p?p->el:0; if (p) p = p->next; return (E*) x;conversion to (E*)
}