1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 template <typename T> struct S { SS3 S() { } 4 S(T t); 5 }; 6 7 template struct S<int>; 8 f()9void f() { 10 S<int> s1; 11 S<int> s2(10); 12 } 13 14 namespace PR7184 { 15 template<typename T> f()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> foo()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 bar()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 g()41 void g() { 42 f<int>(0); 43 } 44 } 45 46 namespace AliasTagDef { 47 template<typename T> f()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 g()63 void g() { 64 (f)(17); 65 } 66 } 67 68 namespace rdar15464547 { 69 class A { 70 A(); 71 }; 72 73 template <typename R> class B { 74 public: 75 static void meth1(); 76 static void meth2(); 77 }; 78 A()79 A::A() { 80 extern int compile_time_assert_failed; 81 B<int>::meth2(); 82 } 83 meth1()84 template <typename R> void B<R>::meth1() { 85 extern int compile_time_assert_failed; 86 } 87 meth2()88 template <typename R> void B<R>::meth2() { 89 extern int compile_time_assert_failed; 90 } 91 } 92