> The problem line is: C1<U>::Node* pNode; I *think* this is a "type-dependent id expression" (in std lingo), because "U" is a template parameter type. You should be able to write the following and get rid of this problem... typename C1<U>::Node* pNode; HTH, Michael