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 | |