1// { dg-do run } 2// Test that conversion from D* to B*& works properly. 3 4extern "C" int printf (const char *, ...); 5 6struct V { 7 int a; 8}; 9 10struct B: virtual V { 11 int b; 12}; 13 14struct D: B { 15 int c; 16}; 17 18V* gp = 0; 19 20void foo(V * const &r) { 21 gp = r; 22} 23 24int bar(V *r) { 25 return (r != gp); 26} 27 28int main() { 29 D *p = new D; 30 foo(p); 31 return bar(p); 32} 33