blob: cba10f2807e6ecf24baeec93e359cc9c8164ca61 [file] [log] [blame]
// { 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);
}