Isn't it Undefined Behavior if `U` is larger than `T`? (because it would be reading off the end of the valid memory for `T`)