Listing 3 queue<T>::cell and queue<T>::iterator as forward-declared nested classes (does not compile)

Listing 3 -

template <class T>
class queue
   {
private:
   struct cell;               // forward-declaration
   cell *first, *last;
public:
   ...
   class iterator;           // forward-declaration
   friend class iterator;
   };

template <class T>
struct queue<T>::cell        // compiler gags here
   {
   ...
   };

template <class T>
class queue<T>::iterator    // and here
   {
   ...
   };

// End of File