5 ms·
If the type is an implicit-lifetime type, then you can legally create an unsigned char array, and then reinterpret_cast a pointer to that to a pointer to the ty
by denotational 5mo ago
If the type is an implicit-lifetime type, then you can legally create an unsigned char array, and then reinterpret_cast a pointer to that to a pointer to the type.
See https://eel.is/c++draft/intro.object#def:object,implicit_creation https://eel.is/c++draft/intro.object#def:object,implicit_cre....
https://eel.is/c++draft/intro.object#15 https://eel.is/c++draft/intro.object#15 is an example showing this with malloc; the subsequent paragraph further permits it to work with an unsigned char array.
- leni536 5mo ago1. You still need std::launder in that case. 2. It doesn't initialize the object that is implicitly created, even if the storage has initialized chars.
- denotational 5mo agoThe paper that introduced the implicit lifetime mechanism suggests that std::launder is not required: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0593r6.html#practical-examples https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p05....