1 | // RUN: %clang_cc1 -verify %s |
2 | |
3 | template <class T> struct Base { // expected-note 4 {{member found by ambiguous name lookup}} |
4 | static void f(); |
5 | }; |
6 | |
7 | struct X0 { }; |
8 | |
9 | template <class T> struct Derived: Base<int>, Base<char> { |
10 | typename Derived::Base b; // expected-error{{member 'Base' found in multiple base classes of different types}} |
11 | typename Derived::Base<double> d; // OK |
12 | |
13 | void g(X0 *t) { |
14 | t->Derived::Base<T>::f(); |
15 | t->Base<T>::f(); |
16 | t->Base::f(); // expected-error{{member 'Base' found in multiple base classes of different types}} \ |
17 | // expected-error{{no member named 'f' in 'X0'}} |
18 | } |
19 | }; |
20 | |
21 | namespace PR6717 { |
22 | template <typename T> |
23 | class WebVector { |
24 | } // expected-error {{expected ';' after class}} |
25 | |
26 | WebVector(const WebVector<T>& other) { } // expected-error{{undeclared identifier 'T'}} \ |
27 | expected-error{{requires a type specifier}} |
28 | |
29 | template <typename C> |
30 | WebVector<T>& operator=(const C& other) { } // expected-error{{undeclared identifier 'T'}} |
31 | } |
32 | |