Namespaces
Variants

std:: vector<bool, Alloc>:: reference

From cppreference.net
class reference ;

The std::vector < bool , Alloc > specializations define std::vector < bool , Alloc > :: reference as a publicly-accessible nested class. std::vector < bool , Alloc > :: reference proxies the behavior of references to a single bit in std::vector < bool , Alloc > .

The primary use of std::vector < bool , Alloc > :: reference is to provide an assignable value that can be returned from operator [ ] .

Any reads or writes to a vector that happen via a std::vector < bool , Alloc > :: reference potentially read or write to the entire underlying vector.

Contents

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)
flip
flips the referenced bit
(public member function)

std::vector<bool, Alloc>::reference:: reference

reference ( const reference & ) = default ;
(since C++11)
(constexpr since C++20)

Constructs the reference from another reference. The copy constructor is implicitly declared. (until C++11)

Other constructors can only be accessed by std::vector < bool , Alloc > .

std::vector<bool, Alloc>::reference:: ~reference

~reference ( ) ;
(constexpr since C++20)

Destroys the reference.

std::vector<bool, Alloc>::reference:: operator=

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

Assigns a value to the referenced bit.

The const operator = enables std::vector<bool,Alloc>::iterator to satisfy output_iterator .

(since C++23)

Parameters

x - value to assign

Return value

* this

std::vector<bool, Alloc>::reference:: operator bool

operator bool ( ) const ;
(noexcept since C++11)
(constexpr since C++20)

Returns the value of the referenced bit.

Return value

The referenced bit.

std::vector<bool, Alloc>::reference:: flip

void flip ( ) ;
(noexcept since C++11)
(constexpr since C++20)

Inverts the referenced bit.

Helper classes

std:: formatter <std::vector<bool, Alloc>::reference>

template < class T, class CharT >

requires /*is-vector-bool-reference*/ < T >

struct formatter < T, CharT > ;
(since C++23)

Specializes the std::formatter for std::vector < bool , Alloc > :: reference . The specialization uses std:: formatter < bool , CharT > as its underlying formatter (denoted as underlying_ ) where the referenced bit is converted to bool to be formatted.

The exposition-only constant /*is-vector-bool-reference*/ < T > is true if and only if T denotes the type std::vector < bool , Alloc > :: reference for some type Alloc and std::vector < bool , Alloc > is not a program-defined specialization .

Member functions

template < class ParseContext >
constexpr ParseContext :: iterator parse ( ParseContext & ctx ) ;
(1) (since C++23)
template < class FormatContext >
FormatContext :: iterator format ( const T & r, FormatContext & ctx ) const ;
(2) (since C++23)
1) Equivalent to return underlying_ . parse ( ctx ) ; .
2) Equivalent to return underlying_ . format ( r, ctx ) ; .

Example

See also

access specified element
(public member function of std::vector<T,Allocator> )
[static]
swaps two std::vector<bool>:: reference s
(public static member function)

External links

"Effective Modern C++" by Scott Meyers (2015), Chapter 2, Item 6: "Use the explicitly typed initializer idiom when auto deduces undesired types." (p.43-46) — describes a possible misuse of the proxy class std::vector<bool>::reference ).