std::endian
Defined in header <type_traits> | ||
---|---|---|
enum class endian { little = /*implementation-defined*/, big = /*implementation-defined*/, native = /*implementation-defined*/ }; | (1) | (since C++20) |
Indicates the endianness of all scalar types:
- If all scalar types are little-endian,
std::endian::native
equalsstd::endian::little
- If all scalar types are big-endian,
std::endian::native
equalsstd::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
, andstd::endian::native
are the same - If the platform uses mixed endian,
std::endian::native
does not equal eitherstd::endian::big
norstd::endian::little
Possible implementation
enum class endian { #ifdef _WIN32 little = 0, big = 1, native = little #else little = __ORDER_LITTLE_ENDIAN__, big = __ORDER_BIG_ENDIAN__, native = __BYTE_ORDER__ #endif };
Example
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/types/endian