blob: 149ec4f8e9a3c220e68382d243ffa179d00569fb [file] [log] [blame]
Francois Pichetef04ecf2011-11-11 00:12:11 +00001// RUN: %clang_cc1 -fms-compatibility -fsyntax-only -verify %s
Francois Pichet0f74d1e2011-09-07 00:14:57 +00002
3
4template <class T>
5class A {
6public:
7 void f(T a) { }// expected-note {{must qualify identifier to find this declaration in dependent base class}}
8 void g();// expected-note {{must qualify identifier to find this declaration in dependent base class}}
9};
10
11
12template <class T>
13class B : public A<T> {
14public:
15 void z(T a)
16 {
17 f(a); // expected-warning {{use of identifier 'f' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
18 g(); // expected-warning {{use of identifier 'g' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
19 }
20};
21
22template class B<int>; // expected-note {{requested here}}
23template class B<char>;
24
25void test()
26{
27 B<int> b;
28 b.z(3);
29}
30
Francois Pichetef04ecf2011-11-11 00:12:11 +000031namespace lookup_dependent_bases_id_expr {
32
33template<class T> class A {
34public:
35 int var;
36};
37
38
39template<class T>
40class B : public A<T> {
41public:
42 void f() {
43 var = 3;
44 }
45};
46
47template class B<int>;
48
49}
Francois Pichet0f74d1e2011-09-07 00:14:57 +000050
Francois Pichete614d6c2011-11-15 23:33:34 +000051
52
53namespace lookup_dependent_base_class_static_function {
54
55template <class T>
56class A {
57public:
58 static void static_func();// expected-note {{must qualify identifier to find this declaration in dependent base class}}
59 void func();// expected-note {{must qualify identifier to find this declaration in dependent base class}}
60};
61
62
63template <class T>
64class B : public A<T> {
65public:
66 static void z2(){
67 static_func(); // expected-warning {{use of identifier 'static_func' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
68 func(); // expected-warning {{use of identifier 'func' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}} expected-error {{call to non-static member function without an object argument}}
69 }
70};
71template class B<int>; // expected-note {{requested here}}
72
73}