| // Special g++ Options: -fhandle-signatures |
| // GROUPS passed gb sigptr argument return-value |
| // Test passing a signature pointer to a function and returning it from one. |
| |
| extern "C" |
| { |
| int printf (char *, ...); |
| } |
| |
| class C |
| { |
| public: |
| char * text; |
| char * get_msg (void) const { return text; } |
| }; |
| |
| const C a = { "PA" }; |
| const C b = { "SS" }; |
| |
| signature S |
| { |
| char * get_msg (void) const; |
| }; |
| |
| char * f (const S * p) |
| { |
| return p->get_msg (); |
| } |
| |
| const S * g (const C * p) |
| { |
| return p; |
| } |
| |
| int main (void) |
| { |
| printf ("%s%s\n", f(&a), g(&b)->get_msg ()); |
| |
| return 0; |
| } |