From cppreference.com
classreference;The
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
.
Any reads or writes to a bitset that happen via a std::bitset::reference potentially read or write to the entire underlying bitset.
Member functions
(constructor)
constructs the reference
(public member function)
destroys the reference
(public member function)operator=
assigns a value to the referenced bit
(public member function)
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(constreference&)=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<N>::reference::~reference
~reference();(constexpr since C++23)Destroys the reference.
std::bitset<N>::reference::operator=
reference&operator=(boolx); (1)(noexcept since C++11)
(constexpr since C++23)constexprconstreference&operator=(boolx)constnoexcept; (2) (since C++26)reference&operator=(constreference&x); (3)(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
operatorbool()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~
booloperator~()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
Example
Run this code
#include<bitset>#include<iostream>intmain(){std::bitset<4>bs{0b1110};std::bitset<4>::referenceref=bs[2];autoinfo=[&](intid){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 See also