// Special g++ Options: -fhandle-signatures // GROUPS passed gb sigptr assignment virtual // Test assignment of objects of different types to same signature pointer. extern "C" { int printf (char *, ...); } class C { public: virtual char * f (void) = 0; }; class D : public C { public: char * f (void) { return "P"; } }; class E { public: char * f (void) { return "AS"; } }; class F : public C { public: char * f (void) { return "S"; } }; signature S { char * f (void); }; int main (void) { E a; C * p = new D; S * q; q = p; printf ("%s", q->f ()); q = &a; printf ("%s", q->f ()); p = new F; q = p; printf ("%s\n", q->f ()); return 0; }