3 ms·
> Making new data structure is common. Serializing classes into buffers is common. You don't want std::launder for any of that. If you must create object insta
by jcelerier 1y ago
> Making new data structure is common. Serializing classes into buffers is common.
You don't want std::launder for any of that. If you must create object instances from random preexisting bytes you want std::bit_cast or https://en.cppreference.com/w/cpp/memory/start_lifetime_as.html https://en.cppreference.com/w/cpp/memory/start_lifetime_as.h...
- TuxSH 1y agoAlas none of gcc/clang/msvc(?) have implemented start_lifetime_as, so if you want to create an object in-place and obtain a mutable pointer to it, you're stuck with the: return std::launder(static_cast<T*>(std::memmove(p, p, sizeof(T)))); trick until they properly implement it. For MMIO, reintepret_cast from integer is most likely fine.