namespace std {
enum class byte : unsigned char {};
}
概要
ビット列としてのバイトデータを表す型。
unsigned char
、signed char
、char
などをバイトデータのための型として使用するよりも、用途が明確になる。
unsigned char
の強い型付けの別名として定義される。
備考
- この型に対して、
std::numeric_limits
の特殊化は定義されない
非メンバ関数
演算子
名前 | 説明 | 対応バージョン |
---|---|---|
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);
}
xxxxxxxxxx
std::uint8_t result_u8 = std::to_integer<std::uint8_t>(result);
#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);
出力
バージョン
言語
- C++17
処理系
- Clang: 5.0 ✅
- GCC: 7.1 ✅
- Visual C++: 2017 Update 3(
_HAS_STD_BYTE
を0
に定義することで無効化できる) ✅