29 lines
447 B
C
29 lines
447 B
C
// { dg-do run }
|
|
// A test case found by InterViews testing...
|
|
|
|
extern "C" int printf(const char *, ...);
|
|
|
|
class A {
|
|
public:
|
|
int foo() { printf("ok nv\n"); return 0; }
|
|
virtual int vfoo() { printf("ok v\n"); return 0; }
|
|
};
|
|
|
|
struct S {
|
|
int (A::*pfn1)();
|
|
int (A::*pfn2)();
|
|
int (A::*pfn3)();
|
|
};
|
|
|
|
// This failed before.
|
|
S s = { &A::foo, &A::vfoo, &A::foo };
|
|
|
|
A a;
|
|
|
|
int main() {
|
|
(a.*s.pfn1)();
|
|
(a.*s.pfn2)();
|
|
printf("PASS\n");
|
|
return 0;
|
|
}
|