// { 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; | |
} |