名前空間
変種

std::endian

提供: cppreference.com
<tbody> </tbody>
ヘッダ <bit> で定義
enum class endian { little = /*implementation-defined*/, big = /*implementation-defined*/, native = /*implementation-defined*/ };
(1) (C++20以上)

すべてのスカラー型のエンディアンを表します。

  • すべてのスカラー型がリトルエンディアンの場合、 std::endian::nativestd::endian::little と等しくなります
  • すべてのスカラー型がビッグエンディアンの場合、 std::endian::nativestd::endian::big と等しくなります

コーナーケースにあるプラットフォームもサポートされます。

  • すべてのスカラー型の sizeof が 1 である場合、エンディアンは意味をなさず、3つの値 std::endian::little, std::endian::big, std::endian::native はすべて等しくなります
  • 混合エンディアンを使用するプラットフォームの場合、 std::endian::nativestd::endian::big および std::endian::little のいずれとも等しくありません

実装例

enum class endian
{
#ifdef _WIN32
    little = 0,
    big    = 1,
    native = little
#else
    little = __ORDER_LITTLE_ENDIAN__,
    big    = __ORDER_BIG_ENDIAN__,
    native = __BYTE_ORDER__
#endif
};