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