std::bitset<N>::reference - cppreference.com

From cppreference.com

classreference;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.

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<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

.

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