(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
cpp0x/
initlist-base4.C
// PR c++/65816
// { dg-do run { target c++11 } }

void* operator new(decltype(sizeof(int)), void* ptr) { return ptr; }

struct item { int i; };

struct collector : item {
  int j;
  collector() = default;
  collector(int) {}
};

struct tuple : collector {
  tuple() : collector() {}
};

int main() {
  alignas(tuple) unsigned char space[sizeof(tuple)];
  for (auto& c : space) c = 0xff;

  auto ptr = ::new(&space) tuple;
  int& i = static_cast<tuple&>(*ptr).i;
  int& j = static_cast<tuple&>(*ptr).j;
  if (i != 0 || j != 0) __builtin_abort();
}