• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    enum
    <cstddef>

    std::byte

    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に定義することで無効化できる)

    関連項目

    参照