OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / lookup / koenig5.C
1 // Koenig lookup is not defined as intended in the std.  DR 218 gives
2 // an indication of what is meant.  This test case encapsulates the
3 // current conservative behaviour
4
5 // Copyright (C) 2006 Free Software Foundation, Inc.
6 // Contributed by Nathan Sidwell 27 Aug 2006 <nathan@codesourcery.com>
7
8 namespace N
9 {
10   struct A {};
11   void One (...);
12   void (*Two) (...);
13   namespace Three {}
14 }
15
16 namespace M
17 {
18   struct B {};
19   struct One {};
20   void (*Two) (...);
21   void Three (...);
22 }
23
24 namespace O 
25 {
26   struct C {};
27   void Two (...);
28 }
29   
30 void g (N::A *a, M::B *b, O::C *c)
31 {
32   One (a); // ok
33   One (a, b); // ok
34   One (b); // { dg-error "not declared" }
35   // { dg-message "note" "suggested alternative" { target *-*-* } 34 }
36
37   Two (c); // ok
38   Two (a, c); // ok
39   Two (a); // { dg-error "not declared" }
40   // { dg-message "note" "suggested alternative" { target *-*-* } 39 }
41   Two (a, a); // error masked by earlier error
42   Two (b); // error masked by earlier error
43   Two (a, b); // error masked by earlier error
44   
45   Three (b); // ok
46   Three (a, b); // ok
47   Three (a); // { dg-error "not declared" }
48   // { dg-message "note" "suggested alternative" { target *-*-* } 47 }
49 }