std:: endian
Defined in header
<bit>
|
||
enum
class
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 .
Possible implementation
enum class 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 };
Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_endian
|
201907L | (C++20) | std :: endian |
Example
Possible output:
mixed-endian
See also
(C++23)
|
reverses the bytes in the given integer value
(function template) |