// { dg-do run } // GROUPS passed initialization // p2766: Make sure that members are initialized in order of declaration // in the class, not in order of specification in the mem-initializer list. extern "C" int printf (const char *, ...); extern "C" void exit (int); int count = 0; void die () { printf ("FAIL\n"); exit (1); } class bar1 { public: bar1 (int) { if (count != 0) die (); count = 1; } }; class bar2 { public: bar2 (int) { if (count != 1) die (); count = 2; } }; class foo { public: bar1 a; bar2 b; foo (int, int); }; // bar1 should get built before bar2 foo::foo (int x, int y) : b(x), a(y) {} int main() { foo f (1, 2); printf ("PASS\n"); }