blob: 0e3757297fe866491ed02633be9d8ac160ff847b [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