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 {
memberX15 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;
f(T & t)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:
Q()37 Q() {}
~Q()38 ~Q() {}
39 };
40
41 enum Colors {red, green, blue};
42
43 C<Q, int> dummy;
44 C<Q, Colors> dummyColors;
main()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