1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 template <typename T> struct S { 3 S() { } 4 S(T t); 5 }; 6 7 template struct S<int>; 8 9 void f() { 10 S<int> s1; 11 S<int> s2(10); 12 } 13 14 namespace PR7184 { 15 template<typename T> 16 void f() { 17 typedef T type; 18 void g(int array[sizeof(type)]); 19 } 20 21 template void f<int>(); 22 } 23 24 namespace UsedAttr { 25 template<typename T> 26 void __attribute__((used)) foo() { 27 T *x = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}} 28 } 29 30 void bar() { 31 foo<int>(); // expected-note{{instantiation of}} 32 } 33 } 34 35 namespace PR9654 { 36 typedef void ftype(int); 37 38 template<typename T> 39 ftype f; 40 41 void g() { 42 f<int>(0); 43 } 44 } 45 46 namespace AliasTagDef { 47 template<typename T> 48 T f() { 49 using S = struct { // expected-warning {{C++11}} 50 T g() { 51 return T(); 52 } 53 }; 54 return S().g(); 55 } 56 57 int n = f<int>(); 58 } 59 60 namespace PR10273 { 61 template<typename T> void (f)(T t) {} 62 63 void g() { 64 (f)(17); 65 } 66 } 67