The new `bit_cast` feature voted into C++20 allows you to do this:
int i = ...;
float j = bit_cast<float>(i);
Assuming the two types have the same size.
The concern is what happens with this:
int i = ...;
float *f = new(&i) auto(bit_cast<float>(i));
Well, the rules of guaranteed elision require that the prvalue returned by `bit_cast` directly initializes the object. And that object's storage is the same as the parameter passed to `bit_cast`.
So... how exactly does that work? Is this just something that is just for implementers to worry about? Or should there be standard wording to explicitly forbid this?