1// related to PR c++/38233 2// test for value-init of a member array 3// { dg-do run } 4 5struct elt 6{ 7 virtual void f(); 8 char c; 9}; 10 11void elt::f() { } 12 13struct foo { 14 elt buffer[500]; 15 foo() ; 16 bool check () const; 17}; 18 19foo::foo () 20 : buffer() 21{} 22 23bool foo::check () const 24{ 25 for (unsigned ix = sizeof (buffer)/ sizeof (buffer[0]); ix--;) 26 if (buffer[ix].c) 27 return false; 28 return true; 29} 30 31inline void *operator new (__SIZE_TYPE__ size, void *p) 32{ 33 return p; 34} 35 36char heap[sizeof(elt[500])]; 37 38int main () 39{ 40 for (unsigned ix = sizeof (heap); ix--;) 41 heap[ix] = ix; 42 43 foo *f = new (heap) foo (); 44 if (!f->check ()) 45 return 3; 46 return 0; 47} 48 49 50