Hi, i'm not a c++/template guru and i can't decide if this is really a valid code or i have encountered a gcc bug: ------------------------------ template <class T> struct A { void *p; }; template <class T> struct B : A<T> { void *foo() { return p; } }; ------------------------------ g++ says "error: 'p' was not declared in this scope". microsoft's compiler is happy with the same code. Can anyone help?