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.
(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) |
~reference(); | (until C++23) | |
constexpr ~reference(); | (since C++23) |
Destroys the reference.
(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.
x | - | value to assign |
*this
.
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.
(none).
The referenced bit.
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.
(none).
The inverse of the referenced bit.
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.
(none).
*this
.
#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
accesses specific bit (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/bitset/reference