The current implementation of hash_code() for uniqued RTTI strings violates strict aliasing by dereferencing a type-punned pointer. Specifically it generates a const char** pointer from the address of the __name member before casting it to const size_t* and dereferencing it to get the hash. This is really just a complex and incorrect way of writing reinterpret_cast<size_t>(__name).
This patch changes the conversion sequence so that it no longer contains UB.