最終更新日時(UTC):
が更新

履歴 編集

enum
<cstddef>

std::byte(C++17)

namespace std {
  enum class byte : unsigned char {};
}

概要

ビット列としてのバイトデータを表す型。

unsigned charsigned charcharなどをバイトデータのための型として使用するよりも、用途が明確になる。

unsigned charの強い型付けの別名として定義される。

備考

非メンバ関数

演算子

名前 説明 対応バージョン
operator<<= 左ビットシフトの複合代入 C++17
operator<< 左ビットシフト C++17
operator>>= 右ビットシフトの複合代入 C++17
operator>> 右ビットシフト C++17
operator|= ビット論理和の複合代入 C++17
operator| ビット論理和 C++17
operator&= ビット論理積の複合代入 C++17
operator& ビット論理積 C++17
operator^= ビット排他的論理和の複合代入 C++17
operator^ ビット排他的論理和 C++17
operator~ ビット反転 C++17

その他

名前 説明 対応バージョン
to_integer 任意の整数型に変換する C++17

#include <cassert>
#include <cstddef>
#include <cstdint>

int main()
{
  // 整数値を代入する際は、波カッコ {} で囲むか、
  // static_cast<std::byte>(0b1010)のようにする
  std::byte a{0b1010'1010};
  std::byte b{0b0000'1111};

  // ビット論理積
  std::byte result = a & b;

  // 基底型に変換
  unsigned char result_uc = static_cast<unsigned char>(result);
  assert(result_uc == 0b0000'1010);

  // 任意の整数型に変換
  std::uint8_t result_u8 = std::to_integer<std::uint8_t>(result);
  assert(result_u8 == 0b0000'1010);
}

出力

バージョン

言語

  • C++17

処理系

  • Clang: 5.0
  • GCC: 7.1
  • Visual C++: 2017 Update 3(_HAS_STD_BYTE0に定義することで無効化できる)

関連項目

参照