| // { dg-do assemble } |
| // GROUPS passed casts |
| class VObject; |
| |
| typedef int boolean; |
| |
| typedef boolean (VObject::*method)(); |
| typedef boolean (VObject::*method0)(); |
| typedef boolean (VObject::*method1)(long); |
| |
| #define methodOf(o,m) (method)(&o::m) |
| |
| |
| class VObject { |
| public: |
| boolean perform(method ); |
| boolean perform(method , long); |
| void affectMethod(method ); |
| void dummy(){}; |
| }; |
| |
| |
| boolean VObject::perform(method m) |
| { |
| method0 q = (method0)m; |
| return(this->*q)(); |
| } |
| |
| |
| boolean VObject::perform(method m, long param) |
| { |
| method1 q = (method1)m; |
| return(this->*q)(param); |
| } |
| |
| void VObject::affectMethod(method m) |
| { |
| m = methodOf(VObject, dummy); |
| } |