名前空間
変種
操作

std::byte

提供: cppreference.com
< cpp‎ | types
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
型サポート
基本的な型
基本型
固定幅の整数型 (C++11)
byte
(C++17)
数値の限界
C の数値限界インタフェース
実行時型情報
型特性
型カテゴリ
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
型の性質
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20未満)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
定数評価文脈
サポートされている操作
関係と性質の問い合わせ
型変更
(C++11)(C++11)(C++11)
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20未満)(C++17)
 
ヘッダ <cstddef> で定義
enum class byte : unsigned char {} ;
(C++17以上)

std::byte は C++ 言語定義で規定されているバイトの概念を実装する独立した型です。

charunsigned char と同様、他のオブジェクトによって占められている生のメモリ (オブジェクト表現) へのアクセスに使用できます。 しかしそれらの型と異なり、文字型ではなく、算術型でもありません。 バイトは単なるビットのコレクションであり、定義される演算子はビット演算のみです。

目次

[編集] 非メンバ関数

std::to_integer

template <class IntegerType>
 constexpr IntegerType to_integer(std::byte b) noexcept;
(C++17以上)

return IntegerType(b); と同等です。 このオーバーロードは、std::is_integral_v<IntegerType> が true である場合にのみ、オーバーロード解決に参加します。

std::operator<<=,operator>>=

template <class IntegerType>
 constexpr std::byte& operator<<=(std::byte& b, IntegerType shift) noexcept;
(1) (C++17以上)
template <class IntegerType>
 constexpr std::byte& operator>>=(std::byte& b, IntegerType shift) noexcept;
(2) (C++17以上)
1) return b = b << shift; と同等です。 このオーバーロードは、std::is_integral_v<IntegerType> が true である場合にのみ、オーバーロード解決に参加します。
2) return b = b >> shift; と同等です。

このオーバーロードは、std::is_integral_v<IntegerType> が true である場合にのみ、オーバーロード解決に参加します。

std::operator<<,operator>>

template <class IntegerType>
 constexpr std::byte operator <<(std::byte b, IntegerType shift) noexcept;
(1) (C++17以上)
template <class IntegerType>
 constexpr std::byte operator >>(std::byte b, IntegerType shift) noexcept;
(2) (C++17以上)
1) return std::byte(static_cast<unsigned int>(b) << shift); と同等です。 このオーバーロードは、std::is_integral_v<IntegerType> が true である場合にのみ、オーバーロード解決に参加します。
2) return std::byte(static_cast<unsigned int>(b) >> shift); と同等です。

このオーバーロードは、std::is_integral_v<IntegerType> が true である場合にのみ、オーバーロード解決に参加します。

std::operator|=,operator&=,operator^=

constexpr std::byte& operator|=(std::byte& l, std::byte r) noexcept;
(1) (C++17以上)
constexpr std::byte& operator&=(std::byte& l, std::byte r) noexcept;
(2) (C++17以上)
constexpr std::byte& operator^=(std::byte& l, std::byte r) noexcept;
(3) (C++17以上)
1) return l = l | r; と同等です。
2) return l = l & r; と同等です。
3) return l = l ^ r; と同等です。

std::operator|,operator&,operator^,operator~

constexpr std::byte operator|(std::byte l, std::byte r) noexcept;
(1) (C++17以上)
constexpr std::byte operator&(std::byte l, std::byte r) noexcept;
(2) (C++17以上)
constexpr std::byte operator^(std::byte l, std::byte r) noexcept;
(3) (C++17以上)
constexpr std::byte operator~(std::byte b) noexcept;
(4) (C++17以上)
1) return std::byte(static_cast<unsigned int>(l) | static_cast<unsigned int>(r)); と同等です。
2) return std::byte(static_cast<unsigned int>(l) & static_cast<unsigned int>(r)); と同等です。
3) return std::byte(static_cast<unsigned int>(l) ^ static_cast<unsigned int>(r)); と同等です。
4) return std::byte(~static_cast<unsigned int>(b)); と同等です。

[編集] ノート

C++17 の緩和された enum class 初期化ルールにより、数値 nstd::byte{n} を使用して byte の値に変換できます。

byte は (オブジェクトの整数ハッシュを生成するなどのために) std::to_integer を使用して数値に変換できます。

[編集]