1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 int* f(int); 4 float *f(...); 5 6 template<typename T> 7 struct X { 8 typedef typeof(T*) typeof_type; 9 typedef typeof(f(T())) typeof_expr; 10 }; 11 12 int *iptr0; 13 float *fptr0; 14 X<int>::typeof_type &iptr1 = iptr0; 15 16 X<int>::typeof_expr &iptr2 = iptr0; 17 X<float*>::typeof_expr &fptr1 = fptr0; 18 19 namespace rdar13094134 { 20 template <class> 21 class X { 22 typedef struct { 23 Y *y; // expected-error{{unknown type name 'Y'}} 24 } Y; 25 }; 26 27 X<int> xi; 28 } 29