Listing 4 Defining a member function of nested class queue<T>::cell outside the class template (does not compile)

template <class T>
class queue
   {
private:
   struct cell
      {
      cell *next;
      T element;
      cell(const T &e, cell *p);
      };
   cell *first, *last;
public:
   ...
   };

template <class T>      // compiler gags on next line
inline queue<T>::cell::cell(const T &e, cell *p)
   : element(e), next(p)
   {
   }

// End of File