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::nativeequalsstd::endian::little
-  If all scalar types are big-endian, std::endian::nativeequalsstd::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::nativeare the same
-  If the platform uses mixed endian, std::endian::nativedoes not equal eitherstd::endian::bignorstd::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