名前空間
変種
操作

std::endian

提供: cppreference.com
< cpp‎ | types
 
 
 
型サポート
型プロトタイプ
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20未満)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
エンディアン
endian
(C++20)
サポートされている操作
関係と性質の問い合わせ
(C++11)
(C++11)
型変更
(C++11)(C++11)(C++11)
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20未満)(C++17)
 
ヘッダ <type_traits> で定義
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
};

[編集]