https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121068
--- Comment #7 from Tomasz KamiĆski <tkaminsk at gcc dot gnu.org> --- Or in other words, I believe my example is equivalent to implementation of optional, where we have: union { T val; }; And then call: new(static_cast<void*>(addressof(val))) T(...); It is just version were T is array.