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

履歴 編集

class
<bitset>

std::bitset::reference

namespace std {
  template <size_t N>
  class bitset {
  public:
    class reference {
      friend class bitset;
      CONSTEXPR reference() noexcept;
    public:
      CONSTEXPR ~reference() noexcept;
      CONSTEXPR reference& operator=(bool x) noexcept;
      CONSTEXPR reference& operator=(const reference&) noexcept;
      CONSTEXPR bool operator~() const noexcept;
      CONSTEXPR operator bool() const noexcept;
      CONSTEXPR reference& flip() noexcept;
    };
  };

概要

bitset::referenceは、bitsetの各ビットにアクセスするためのプロキシクラスである。bitset::operator[]で返されるビット情報を取得、書き換えるためにある。

C++23からbitset::reference全メンバ関数へのconstexpr指定が行われる。

メンバ関数

名前 説明 対応バージョン
operator=(bool x) ビット情報を書き換える
operator=(const reference&) ビット情報をコピーする
operator~() 反転したビットを取得する
operator bool() bool型に変換する
flip() ビットを反転させる

#include <cassert>
#include <bitset>

int main()
{
  std::bitset<4> bs("1010");

  bs[0] = true; // 書き換え
  assert(bs.to_string() == "1011");

  // 反転したビットを取得
  bool result1 = ~bs[3];
  assert(!result1);

  // boolへの変換
  bool result2 = bs[3];
  assert(result2);

  // ビットを反転させる
  bs[0].flip();
  assert(bs.to_string() == "1010");
}

出力

参照