std::bitset::reference - cppreference.com (original) (raw)

The std::bitset class includes std::bitset::reference as a publicly-accessible nested class. This class is used as a proxy object to allow users to interact with individual bits of a bitset, since standard C++ types (like references and pointers) are not built with enough precision to specify individual bits.

The primary use of std::bitset::reference is to provide an lvalue that can be returned from operator[].

Any reads or writes to a bitset that happen via a std::bitset::reference potentially read or write to the entire underlying bitset.

Contents

[edit] Member functions

(constructor) constructs the reference (public member function)
(destructor) destroys the reference (public member function)
operator= assigns a value to the referenced bit (public member function)
operator bool returns the referenced bit (public member function) [edit]
operator~ returns inverted referenced bit (public member function)
flip flips the referenced bit (public member function)

std::bitset::reference::reference

| reference( const reference& ) = default; | | (since C++11) (constexpr since C++23) | | ----------------------------------------- | | ------------------------------------- |

Constructs the reference from another reference. The copy constructor is implicitly declared.(until C++11)

Other constructors can only be accessed by std::bitset.

std::bitset::reference::~reference

| ~reference(); | | (constexpr since C++23) | | -------------- | | ----------------------- |

Destroys the reference.

std::bitset::reference::operator=

reference& operator=( bool x ); (1) (noexcept since C++11) (constexpr since C++23)
reference& operator=( const reference& x ); (2) (noexcept since C++11) (constexpr since C++23)

Assigns a value to the referenced bit.

Parameters

Return value

*this

std::bitset::reference::operator bool

| operator bool() const; | | (noexcept since C++11) (constexpr since C++23) | | ---------------------- | | ---------------------------------------------- |

Returns the value of the referenced bit.

Return value

The referenced bit.

std::bitset::reference::operator~

| bool operator~() const; | | (noexcept since C++11) (constexpr since C++23) | | ------------------------ | | ---------------------------------------------- |

Returns the inverse of the referenced bit.

Return value

The inverse of the referenced bit.

std::bitset::reference::flip

| reference& flip(); | | (noexcept since C++11) (constexpr since C++23) | | ------------------ | | ---------------------------------------------- |

Inverts the referenced bit.

Return value

*this

[edit] Example

#include #include   int main() { std::bitset<4> bs{0b1110}; std::bitset<4>::reference ref = bs[2];   auto info = [&](int id) { std::cout << id << ") bs: " << bs << "; ref bit: " << ref << '\n'; };   info(1); ref = false; info(2); ref = true; info(3); ref.flip(); info(4); ref = bs[1]; // operator=( const reference& x ) info(5);   std::cout << "6) ~ref bit: " << ~ref << '\n'; }

Output:

  1. bs: 1110; ref bit: 1
  2. bs: 1010; ref bit: 0
  3. bs: 1110; ref bit: 1
  4. bs: 1010; ref bit: 0
  5. bs: 1110; ref bit: 1
  6. ~ref bit: 0

[edit] See also