1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 3 template<typename T> 4 struct X1 { 5 static void member() { T* x = 1; } // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}} 6 }; 7 8 template<void(*)()> struct instantiate { }; 9 10 template<typename T> 11 struct X2 { 12 typedef instantiate<&X1<int>::member> i; // expected-note{{in instantiation of}} 13 }; 14 15 X2<int> x; 16 17 template <class T, class A> class C { 18 public: 19 int i; 20 void f(T &t) { 21 T *q = new T(); 22 t.T::~T(); 23 q->~T(); 24 // expected-error@+2 {{'int' is not a class, namespace, or enumeration}} 25 // expected-error@+1 {{no member named '~Colors' in 'Colors'}} 26 q->A::~A(); 27 // expected-error@+2 {{no member named '~int' in 'Q'}} 28 // expected-error@+1 {{no member named '~Colors' in 'Q'}} 29 q->~A(); 30 31 delete q; 32 } 33 }; 34 35 class Q { 36 public: 37 Q() {} 38 ~Q() {} 39 }; 40 41 enum Colors {red, green, blue}; 42 43 C<Q, int> dummy; 44 C<Q, Colors> dummyColors; 45 int main() { 46 Q qinst; 47 // expected-note@+1 {{in instantiation of member function 'C<Q, int>::f' requested here}} 48 dummy.f(qinst); 49 // expected-note@+1 {{in instantiation of member function 'C<Q, Colors>::f' requested here}} 50 dummyColors.f(qinst); 51 } 52 53