1 // PR c++/29131
2 // int has no associated namespaces, so arg-dep lookup doesn't find g(int).
3
f()4 template <class T> int f() { return g(T()); } // { dg-error "argument-dependent" }
5 int g(int); // { dg-message "declared here" }
6 int i = f<int>();
7
8 // PR c++/24163
9 // Unqualified lookup doesn't find names from dependent bases.
10
11 template <class T>
12 struct A
13 {
14 static void h(T);
15 };
16
17 template <class T> struct B: A<T>
18 {
fB19 void f() { h(T()); } // { dg-error "argument-dependent" "arg-dep" }
gB20 static void g() { h(T()); } // { dg-error "argument-dependent" "arg-dep" }
21 };
22
main()23 int main()
24 {
25 B<int> b;
26 b.f();
27 b.g();
28 }
29
30 // { dg-message "dependent base .A.int" "base" { target *-*-* } 19 }
31 // { dg-message "this->h" "this->h" { target *-*-* } 19 }
32 // { dg-message "dependent base .A.int" "base" { target *-*-* } 20 }
33 // { dg-message "B::h" "B::h" { target *-*-* } 20 }
34