std::endian
From cppreference.com
Defined in header <bit> | ||
enumclass endian { | (since C++20) | |
Indicates the endianness of all scalar types:
- If all scalar types are little-endian, std::endian::native equals std::endian::little.
- If all scalar types are big-endian, std::endian::native equals std::endian::big.
Corner case platforms are also supported:
- If all scalar types have
sizeof
equal to 1, endianness does not matter and all three values, std::endian::little, std::endian::big, and std::endian::native are the same. - If the platform uses mixed endian, std::endian::native equals neither std::endian::big nor std::endian::little.
Contents |
[edit]Possible implementation
enumclass endian {#if defined(_MSC_VER) && !defined(__clang__) little =0, big =1, native = little #else little = __ORDER_LITTLE_ENDIAN__, big = __ORDER_BIG_ENDIAN__, native = __BYTE_ORDER__ #endif};
[edit]Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_endian | 201907L | (C++20) | std::endian |
[edit]Example
Run this code
Possible output:
mixed-endian
[edit]See also
(C++23) | reverses the bytes in the given integer value (function template) |
C documentation for endian |