home | help
std::bitset::reference(3)      C++ Standard Libary     std::bitset::reference(3)

NAME
     std::bitset::reference - std::bitset::reference

Synopsis
	class reference;

	The  std::bitset class includes std::bitset::reference as a publicly-ac-
     cessible
	nested class. This class is used as a proxy object to allow users to in-
     teract 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();  (constexpr since C++23)

	Destroys the reference.

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

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

	Inverts the referenced bit.

Parameters
	(none)

Return value
	*this

Example
     // Run this code

      #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

See also
	operator[] accesses specific bit
		   (public member function)

http://cppreference.com 	   2024.06.10	       std::bitset::reference(3)

home | help