OSDN Git Service

Initial revision
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.gb / sig16.C
1 // Special g++ Options: -fhandle-signatures
2 // GROUPS passed gb sigptr cast
3 // Test casting a class pointer to an anonymous signature pointer.
4
5 extern "C"
6 {
7   int printf (char *, ...);
8 }
9
10 class C
11 {
12 public:
13   char * f (void) { return "PA"; }
14   char * g (int)  { return "S"; }
15   char * h (void) { return "FAIL"; }
16 };
17
18 signature S
19 {
20   char * f (void);
21   char * g (int);
22 };
23
24 signature T
25 {
26   char * f (void);
27 };
28
29 C a;
30 signature { char * g (int); } * r1 =
31   (signature { char * h (void); char * g (int); } *) &a;
32
33 int main (void)
34 {
35   C a;
36   S * p = &a;
37   T * q = p;
38   signature { char * g (int); } * r2 =
39     (signature { char * h (void); char * g (int); } *) &a;
40
41   printf ("%s%s%s\n", q->f (), r1->g (0), r2->g (0));
42
43   return 0;
44 }