p 6-11
The C++ Oracle
by Steven Buroff and Robert Murray
Question from Paul Lucas (Note:
 Lucas)
template<class T> class ContainerIterator {
    T* current;
    //...
  public:
    class ContainerIterator(Container<T>&);
    //...
    T* operator->() const { return current; }
};
This only works if T is an aggregate.