P2590R2, Explicit lifetime management (PR106658)
This is for "std::start_lifetime_as". If you have not heard of this before, it's the non-UB way to type-pun a pointer into a structured type.Nearly all zero-copy code that deals with external I/O buffers looks something like:
std::unique_ptr buffer = stream->read();
if (buffer[0] == FOO)
processFoo(reinterpret_cast(buffer.get())); // undefined behavior
else
processBar(reinterpret_cast(buffer.get())); // undefined behaviour
With this merged, swap the reinterpret_cast for start_lifetime_as and you're no longer being naughty.