| // { dg-do run } | |
| int fail; | |
| class A *ptr_a; | |
| class A { | |
| public: | |
| char space1[24]; | |
| virtual void foo() { | |
| if (this != ptr_a) | |
| fail = 1; | |
| } | |
| }; | |
| class Space { | |
| char space2[36]; | |
| }; | |
| class B : public Space, public A { | |
| } b; | |
| void (B::*pmf1)() = &A::foo; | |
| void (A::*pmf2)() = &A::foo; | |
| int main() { | |
| ptr_a = &b; | |
| (b .* (void (B::*) ()) &A::foo) (); | |
| (b .* pmf1) (); | |
| (b .* pmf2) (); | |
| (b .* &A::foo) (); | |
| return fail; | |
| } |