std::bitset<N>::reference
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
(public member function)
(public member function)
(public member function)
(public member function)
(public member function)
std::bitset<N>::reference::reference
(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<N>::reference::~reference
Destroys the reference.
std::bitset<N>::reference::operator=
(constexpr since C++23)
(constexpr since C++23)
Assigns a value to the referenced bit.
Parameters
Return value
*this
std::bitset<N>::reference::operator bool
(constexpr since C++23)
Returns the value of the referenced bit.
Return value
The referenced bit.
std::bitset<N>::reference::operator~
(constexpr since C++23)
Returns the inverse of the referenced bit.
Return value
The inverse of the referenced bit.
std::bitset<N>::reference::flip
(constexpr since C++23)
Inverts the referenced bit.
Return value
*this
[edit] Example
#include <bitset> #include <iostream> 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