// PR c++/65816 // { dg-do run { target c++11 } } void* operator new(decltype(sizeof(int)), void* ptr) { return ptr; } struct test { int i; test() = default; test(int) : test() {} }; int main() { alignas(test) unsigned char space[sizeof(test)]; for (auto& c : space) c = 0xff; auto ptr = ::new(&space) test(42); int& i = static_cast<test&>(*ptr).i; if (i != 0) __builtin_abort(); }