| // 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(); | |
| } |