// PR c++/71913 // { dg-do link { target c++11 } } void* operator new(decltype(sizeof(1)), void* p) { return p; } struct IndirectReturn { IndirectReturn() {} // Undefined so we get a link error if the indirect return value is copied IndirectReturn(const IndirectReturn&); IndirectReturn& operator=(const IndirectReturn&) = delete; ~IndirectReturn() {} }; IndirectReturn foo() { return IndirectReturn(); } void bar(void* ptr) { new (ptr) IndirectReturn(foo()); } alignas (alignof (IndirectReturn)) unsigned char c[sizeof(IndirectReturn)]; int main() { bar(c); }