| // 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; | |
| } |