https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93328
--- Comment #5 from Boris <boris_oncev at hotmail dot com> --- full code: https://godbolt.org/z/zjNqYV template <typename T> auto reverse(T num) { // misses optimization when num is int32_t OK for int64_t auto* bytes = reinterpret_cast<char*>(&num); // misses optimization for both 32 and 64 bit ints //auto* bytes = reinterpret_cast<std::byte*>(&num); constexpr auto size = sizeof(num); for (int i = 0; i < size / 2; i++) { std::swap(bytes[i], bytes[size-i-1]); } return num; }