20 requires std::integral<T> || std::is_enum_v<T> || std::floating_point<T>
22 if constexpr (std::endian::native == std::endian::little) {
24 }
else if constexpr (std::integral<T>) {
25 return std::byteswap(value);
26 }
else if constexpr (std::is_enum_v<T>) {
27 using U = std::underlying_type_t<T>;
28 return static_cast<T
>(std::byteswap(
static_cast<U
>(value)));
31 auto bits = std::bit_cast<std::array<std::byte,
sizeof(T)>>(value);
32 std::ranges::reverse(bits);
33 return std::bit_cast<T>(bits);
The public API for Crunch.
Definition: crunch_endian.hpp:10
constexpr T LittleEndian(T value) noexcept
Converts a value to/from Little Endian byte order.
Definition: crunch_endian.hpp:21