another big part of the problem is that people use reinterpret_cast incorrectly so often that compilers are generally forced to silently support many of those incorrect uses anyways, because otherwise too much too important code would just stop working, and civilization would come crashing down.
yeah and based off of this example it seems more careful about messing with `T**` and `U**` aliasing even when it would be valid to optimize