Defined in header <bit> | ||
---|---|---|
enum class endian { little = /*implementation-defined*/, big = /*implementation-defined*/, native = /*implementation-defined*/, }; | (since C++20) |
Indicates the endianness of all scalar types:
std::endian::native
equals std::endian::little
. std::endian::native
equals std::endian::big
. Corner case platforms are also supported:
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. std::endian::native
equals neither std::endian::big
nor std::endian::little
. 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 };
Feature-test macro | Value | Std | Comment |
---|---|---|---|
__cpp_lib_endian | 201907L | (C++20) |
std::endian |
#include <bit> #include <iostream> int main() { if constexpr (std::endian::native == std::endian::big) std::cout << "big-endian\n"; else if constexpr (std::endian::native == std::endian::little) std::cout << "little-endian\n"; else std::cout << "mixed-endian\n"; }
Possible output:
mixed-endian
(C++23) | reverses the bytes in the given integer value (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/endian