Просто используйте статическое приведение.Изменение битового шаблона оказывается именно тем, что вам нужно, если вы оказались на платформе, которая определяет их по-разному.
reinterpret_cast или любое эквивалентное приведение указателя не определено (не определено реализацией).Это означает, что компилятор может делать неприятные вещи, такие как кэширование неопределенной формы в реестре, и пропустить обновление.Кроме того, если бы вы работали на платформе, где битовые комбинации были другими, то обход конверсии оставил бы вас с мусором (точно так же, как притворство с плавающей точкой - это int и добавление к нему 1).
Более подробная информация на Преобразование со знаком в беззнаковое в C - всегда ли это безопасно? но сводка C окольным путем определяет статическое приведение (фактически обычное приведение C) как то, что вы получаете, обрабатывая биты одинаково на x86(который использует дополнение до двух.)
Не играйте в компилятор с компилятором (это всегда работало на этом компиляторе, так что, конечно, они не нарушат код каждого при его изменении).История доказала, что вы неправы.