1 // RUN: %clang_cc1 -verify=expected,precxx17 %std_cxx98-14 %s
2 // RUN: %clang_cc1 -verify=expected,cxx17 %std_cxx17- %s
4 template <class T
> struct Base
{
5 // expected-note@-1 2{{member type 'Base<int>' found by ambiguous name lookup}}
6 // expected-note@-2 2{{member type 'Base<char>' found by ambiguous name lookup}}
12 template <class T
> struct Derived
: Base
<int>, Base
<char> {
13 typename
Derived::Base b
; // expected-error{{member 'Base' found in multiple base classes of different types}}
14 typename
Derived::Base
<double> d
; // OK
17 t
->Derived::Base
<T
>::f();
19 t
->Base::f(); // expected-error{{member 'Base' found in multiple base classes of different types}} \
20 // expected-error{{no member named 'f' in 'X0'}}
27 } // expected-error {{expected ';' after class}}
29 WebVector(const WebVector
<T
>& other
) { } // expected-error{{undeclared identifier 'T'}} \
30 precxx17
-error
{{a type specifier is required
}} \
31 cxx17
-error
{{deduction guide declaration without trailing
return type
}}
34 WebVector
<T
>& operator=(const C
& other
) { } // expected-error{{undeclared identifier 'T'}}