Skip to content

Latest commit

 

History

History
101 lines (75 loc) · 3.13 KB

byte.md

File metadata and controls

101 lines (75 loc) · 3.13 KB

byte

  • cstddef[meta header]
  • std[meta namespace]
  • enum[meta id-type]
  • cpp17[meta cpp]
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);
}
  • std::byte[color ff0000]
  • a & b[link byte/op_and.md]
  • std::to_integer[link byte/to_integer.md]

出力

バージョン

言語

  • C++17

処理系

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

関連項目

参照