// { dg-do run } // prms-id: 789 extern "C" int printf (const char *, ...); struct foo { static int count; virtual void print (int i, int j) { printf ("foo[%d][%d] = %d\n", i, j, x); } int x; foo () { x = count++; } }; int foo::count; struct bar : virtual public foo { virtual void print (int i, int j) { printf ("bar[%d][%d] = %d\n", i, j, x); } }; // bar array[3][3]; foo array[3][3]; int main () { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) { // printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); array[i][j].print (i, j); } return 0; }