// { dg-do run } | |
// Test that conversion from D* to B*& works properly. | |
extern "C" int printf (const char *, ...); | |
struct V { | |
int a; | |
}; | |
struct B: virtual V { | |
int b; | |
}; | |
struct D: B { | |
int c; | |
}; | |
V* gp = 0; | |
void foo(V * const &r) { | |
gp = r; | |
} | |
int bar(V *r) { | |
return (r != gp); | |
} | |
int main() { | |
D *p = new D; | |
foo(p); | |
return bar(p); | |
} |