A name used in a template declaration or definition and that is dependent on a template-parameter is assumed not to name a type unless the applicable name lookup finds a type name or the name is qualified by the keyword typename.
#include <iostream>
template <class T>
class simpleTest{
public:
typename T::myint a;
};
struct Node{
typedef int myint;
};
int main(){
simpleTest<Node> s;
}