名前空間
変種
操作

std::endian

提供: cppreference.com
< cpp‎ | types
ヘッダ <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
};

[編集]