111
|
1 // { dg-do run }
|
|
2 // This is a test case to make sure the explicit cast on a pointer to
|
|
3 // a member function works ok.
|
|
4 // prms-id: 3060
|
|
5
|
|
6 extern "C" int printf(const char *, ...);
|
|
7
|
|
8 class Object;
|
|
9
|
|
10 typedef void (Object::*VoidObjMemberFunc)(Object *tracker, void *ap);
|
|
11
|
|
12 class Object {
|
|
13 public:
|
|
14 int foo;
|
|
15 };
|
|
16
|
|
17 class Clipper: public Object {
|
|
18 public:
|
|
19 int bar;
|
|
20 void Feedback(Object*, void*);
|
|
21 };
|
|
22 void Clipper::Feedback(Object *tracker, void *ap) {
|
|
23 printf("Doing feedback\n");
|
|
24 }
|
|
25
|
|
26 void vfunc(VoidObjMemberFunc of, Object *op, void *v1) {
|
|
27 (op->*of)(op, v1);
|
|
28 }
|
|
29
|
|
30 int main() {
|
|
31 Object o;
|
|
32
|
|
33 vfunc((VoidObjMemberFunc)&Clipper::Feedback, &o, 0);
|
|
34 return 0;
|
|
35 }
|