|  | // RUN: %clang_cc1 -fsyntax-only -verify %s | 
|  |  | 
|  | namespace PR8640 { | 
|  | template<class T1> struct C1 { | 
|  | virtual void c1() { | 
|  | T1 t1 = 3;  // expected-error {{cannot initialize a variable}} | 
|  | } | 
|  | }; | 
|  |  | 
|  | template<class T2> struct C2 { | 
|  | void c2() { | 
|  | new C1<T2>();  // expected-note {{in instantiation of member function}} | 
|  | } | 
|  | }; | 
|  |  | 
|  | void f() { | 
|  | C2<int*> c2; | 
|  | c2.c2();  // expected-note {{in instantiation of member function}} | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace PR9325 { | 
|  | template<typename T> | 
|  | class Target | 
|  | { | 
|  | public: | 
|  | virtual T Value() const | 
|  | { | 
|  | return 1; // expected-error{{cannot initialize return object of type 'int *' with an rvalue of type 'int'}} | 
|  | } | 
|  | }; | 
|  |  | 
|  | template<typename T> | 
|  | struct Provider | 
|  | { | 
|  | static Target<T> Instance; | 
|  | }; | 
|  |  | 
|  | template<typename T> | 
|  | Target<T> Provider<T>::Instance; // expected-note{{in instantiation of}} | 
|  |  | 
|  | void f() | 
|  | { | 
|  | Target<int*>* traits = &Provider<int*>::Instance; // expected-note{{requested here}} | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace PR10020 { | 
|  | struct MG { | 
|  | virtual void Accept(int) = 0; | 
|  | }; | 
|  |  | 
|  | template <typename Type> | 
|  | struct GMG : MG { | 
|  | void Accept(int i) { | 
|  | static_cast<Type *>(0)->Accept(i); // expected-error{{member reference base}} | 
|  | } | 
|  | static GMG* Method() { return &singleton; } // expected-note{{in instantiation of}} | 
|  | static GMG singleton; | 
|  | }; | 
|  |  | 
|  | template <typename Type> | 
|  | GMG<Type> GMG<Type>::singleton; // expected-note{{requested here}} | 
|  |  | 
|  | void test(void) { | 
|  | GMG<int>::Method(); // expected-note{{in instantiation of}} | 
|  | } | 
|  | } |