| // 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}} |
| } |
| } |