152
|
1 // PR c++/95074 - Function found via ADL when it should not.
|
|
2 // { dg-do compile }
|
|
3
|
|
4 namespace N {
|
|
5 struct S { };
|
|
6 void f(S);
|
|
7 }
|
|
8
|
|
9 namespace M {
|
|
10 void f(int);
|
|
11 }
|
|
12
|
|
13 void
|
|
14 fn0 ()
|
|
15 {
|
|
16 N::S s;
|
|
17 using M::f;
|
|
18 f (s);
|
|
19 }
|
|
20
|
|
21 void
|
|
22 fn1 ()
|
|
23 {
|
|
24 N::S s;
|
|
25 extern void f(char);
|
|
26 using M::f;
|
|
27 f (s); // { dg-error "no matching function" }
|
|
28 }
|
|
29
|
|
30 void
|
|
31 fn2 ()
|
|
32 {
|
|
33 N::S s;
|
|
34 using M::f;
|
|
35 extern void f(char);
|
|
36 f (s); // { dg-error "no matching function" }
|
|
37 }
|
|
38
|
|
39 void
|
|
40 fn3 ()
|
|
41 {
|
|
42 N::S s;
|
|
43 extern void (*f)(char);
|
|
44 f (s); // { dg-error "cannot convert" }
|
|
45 }
|