No one is better, the question is which one is less bad.
static_cast just guaranteed to work if the buffer is really T. You can convert its address to void* and vice versa. If this is some other type, it depends on the implementation, whether it works or not. Alignment problems are just one of the potential problems.
Using reinterpret_cast always implementation dependent. Thus, it does not work better, but at least it makes it obvious that this is not portable code.
So I would use reinterpret_cast here.
source share