Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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-
       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	refer-
       ences and pointers)
	  are not built	with enough precision to specify individual bits.

	  The primary use of std::bitset::reference is to provide  an  l-value
       that can	be
	  returned from	operator[].

	  Any  reads or	writes to a bitset that	happen via a std::bitset::ref-
       erence potentially
	  read or write	to the entire underlying bitset.

Member functions
	  constructor	constructs the reference. Accessible only to std::bit-
       set 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=

	  reference&  operator=(  bool	x  );				(until
       C++11)
	  reference&  operator=(  bool	x  )  noexcept;			(since
       C++11)
								   (until
       C++23)
	  constexpr reference&	operator=(  bool  x  )			(since
       C++23)
	  noexcept;					   (1)
	  reference&	  operator=(	  const	     reference&	     x	    );
       (until C++11)
	  reference&	  operator=(	  const	     reference&	     x	     )
       (since C++11)
	  noexcept;							   (2)
       (until C++23)
	  constexpr	 reference&	 operator=(	 const	    reference&
       (since C++23)
	  x ) noexcept;

	  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
       // Run this code

	#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
	  operator[] accesses specific bit
		     (public member function)

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::bitset::reference&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help