Here the compiler complains that the 'uint' in the class 'A' declaration ambiguates with the 'uint' declaration in namespace N. However, the 'using namespace N;' is yet to follow when the class 'A' is declared. Microsoft replied the following:
"Hi: while this [sic] strictly a bug in the Visual C++ compiler it is unfortunately closely tied up with how templates are implemented in Visual C++ - so it is not something we would fix any time soon."
typedef unsigned int uint; template <typename Type> class A { public: uint a_; }; namespace N { typedef unsigned int uint; } using namespace N; A<int> a; int main() { return 0; }