// RUN: %clang_cc1 -fsyntax-only -verify %s int* f(int); float *f(...); template<typename T> struct X { typedef typeof(T*) typeof_type; typedef typeof(f(T())) typeof_expr; }; int *iptr0; float *fptr0; X<int>::typeof_type &iptr1 = iptr0; X<int>::typeof_expr &iptr2 = iptr0; X<float*>::typeof_expr &fptr1 = fptr0; namespace rdar13094134 { template <class> class X { typedef struct { Y *y; // expected-error{{unknown type name 'Y'}} } Y; }; X<int> xi; }