# std::endian

From cppreference.com
< cpp‎ | types

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` 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` does not equal either `std::endian::big` nor `std::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

| This section is incomplete Reason: no example

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/endian&oldid=96002"