// Test for value-initialization via {} // { dg-do run { target c++11 } } void * operator new (__SIZE_TYPE__, void *p) { return p; } void * operator new[] (__SIZE_TYPE__, void *p) { return p; } // Empty base so A isn't an aggregate struct B {}; struct A: B { int i; }; struct C: A { C(): A{} {} }; int f(A a) { return a.i; } int main() { A a{}; C c; int space = 42; A* ap = new (&space) A{}; int space1[1] = { 42 }; A* a1p = new (space1) A[1]{}; if (a.i != 0 || c.i != 0 || ap->i != 0 || a1p[0].i != 0 || A{}.i != 0 || f({}) != 0) return 1; }