std::bitset<N>::reference

From cppreference.com
< cpp‎ | utility‎ | bitset
 
 
Utilities library
General utilities
Date and time
Function objects
Formatting library (C++20)
(C++11)
Relational operators (deprecated in C++20)
Integer comparison functions
(C++20)(C++20)(C++20)   
(C++20)
Swap and type operations
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Elementary string conversions
(C++17)
(C++17)
 
 
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.

Member functions

(constructor)
constructs the reference. Accessible only to std::bitset itself
(private member function)
(destructor)
destroys the reference
(public member function)
operator=
assigns a bool 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();
(until C++23)
constexpr ~reference();
(since C++23)

Destroys the reference.

std::bitset<N>::reference::operator=

(1)
reference& operator=( bool x );
(until C++11)
reference& operator=( bool x ) noexcept;
(since C++11)
(until C++23)
constexpr reference& operator=( bool x ) noexcept;
(since C++23)
(2)
reference& operator=( const reference& x );
(until C++11)
reference& operator=( const reference& x ) noexcept;
(since C++11)
(until C++23)
constexpr reference& operator=( const reference& x ) noexcept;
(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;
(until C++11)
operator bool() const noexcept;
(since C++11)
(until C++23)
constexpr operator bool() const noexcept;
(since C++23)

Returns the value of the referenced bit.

Parameters

(none)

Return value

The referenced bit.

std::bitset<N>::reference::operator~

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

Returns the inverse of the referenced bit.

Parameters

(none)

Return value

The inverse of the referenced bit.

std::bitset<N>::reference::flip

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

Inverts the referenced bit.

Parameters

(none)

Return value

*this

Example

#include <bitset>
#include <iostream>
 
int main()
{
    std::bitset<4> bs( 0b1110 );
 
    std::bitset<4>::reference ref = bs[2]; // auto ref = bs[2];
 
    auto info = [&](int n) {
        std::cout << n << ") 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

accesses specific bit
(public member function)