C++ template typename itérateur

Envisager le fichier en-tête suivante:

template <typename T> struct tNode
{
    T Data;                      //the data contained within this node
    list<tNode<T>*> SubNodes;       //a list of tNodes pointers under this tNode

    tNode(const T& theData)
    //PRE:  theData is initialized
    //POST: this->data == theData and this->SubNodes have an initial capacity
    //     equal to INIT_CAPACITY, it is set to the head of SubNodes
    {
        this->Data = theData;
        SubNodes(INIT_CAPACITY);   //INIT_CAPACITY is 10
    }

};

Maintenant, considérons une ligne de code à partir d'un autre fichier:

list<tNode<T>*>::iterator it();  //iterate through the SubNodes

Le compilateur me donne ce message d'erreur: Tree.h:38:17: error: need ‘typename’ before ‘std::list<tNode<T>*>::iterator’ because ‘std::list<tNode<T>*>’ is a dependent scope

Je n'ai aucune idée pourquoi le compilateur est de me crier dessus pour cela.