std::bitset<N>::reference
class 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
(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) |
operator~ | returns inverted referenced bit (public member function) |
flip | flips the referenced bit (public member function) |
std::bitset<N>::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<N>::reference::~reference
~reference(); | (constexpr since C++23) | |
Destroys the reference.
std::bitset<N>::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
x | - | value to assign |
Return value
*this
std::bitset<N>::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<N>::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<N>::reference::flip
reference& flip(); | (noexcept since C++11) (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
[edit]See also
accesses specific bit (public member function) |