Namespaces
Variants

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

From cppreference.net
class reference ;

Специализации std::vector < bool , Alloc > определяют std::vector < bool , Alloc > :: reference как публично доступный вложенный класс. std::vector < bool , Alloc > :: reference эмулирует поведение ссылок на отдельный бит в std::vector < bool , Alloc > .

Основное назначение std::vector < bool , Alloc > :: reference — предоставление назначаемого значения, которое может быть возвращено из operator [ ] .

Любые операции чтения или записи в вектор, выполняемые через std::vector < bool , Alloc > :: reference потенциально могут читать или записывать данные во весь базовый вектор.

Содержание

Функции-члены

(constructor)
создает ссылку
(public member function)
(destructor)
уничтожает ссылку
(public member function)
operator=
присваивает значение ссылаемому биту
(public member function)
operator bool
возвращает ссылаемый бит
(public member function)
flip
инвертирует ссылаемый бит
(public member function)

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

reference ( const reference & ) = default ;
(начиная с C++11)
(constexpr начиная с C++20)

Создает ссылку из другой ссылки. Конструктор копирования неявно объявлен. (до C++11)

Другие конструкторы могут быть доступны только через std::vector < bool , Alloc > .

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

~reference ( ) ;
(constexpr начиная с C++20)

Уничтожает ссылку.

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

reference & operator = ( bool x ) ;
(1) (noexcept начиная с C++11)
(constexpr начиная с C++20)
constexpr const reference & operator = ( bool x ) const noexcept ;
(2) (начиная с C++23)
reference & operator = ( const reference & x ) ;
(3) (noexcept начиная с C++11)
(constexpr начиная с C++20)

Присваивает значение ссылаемому биту.

Константный operator = позволяет std::vector<bool,Alloc>::iterator удовлетворять требованиям output_iterator .

(начиная с C++23)

Параметры

x - присваиваемое значение

Возвращаемое значение

* this

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

operator bool ( ) const ;
(noexcept начиная с C++11)
(constexpr начиная с C++20)

Возвращает значение ссылающегося бита.

Возвращаемое значение

Ссылающийся бит.

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

void flip ( ) ;
(noexcept начиная с C++11)
(constexpr начиная с C++20)

Инвертирует ссылающийся бит.

Вспомогательные классы

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

template < class T, class CharT >

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

struct formatter < T, CharT > ;
(начиная с C++23)

Специализирует std::formatter для std::vector < bool , Alloc > :: reference . Специализация использует std:: formatter < bool , CharT > в качестве базового форматтера (обозначается как underlying_ ), где ссылаемый бит преобразуется в bool для форматирования.

Только демонстрационная константа /*is-vector-bool-reference*/ < T > равна true тогда и только тогда, когда T обозначает тип std::vector < bool , Alloc > :: reference для некоторого типа Alloc и std::vector < bool , Alloc > не является программо-определённой специализацией .

Функции-члены

template < class ParseContext >
constexpr ParseContext :: iterator parse ( ParseContext & ctx ) ;
(1) (начиная с C++23)
template < class FormatContext >
FormatContext :: iterator format ( const T & r, FormatContext & ctx ) const ;
(2) (начиная с C++23)
1) Эквивалентно return underlying_ . parse ( ctx ) ; .
2) Эквивалентно return underlying_ . format ( r, ctx ) ; .

Пример

Смотрите также

доступ к указанному элементу
(публичная функция-член std::vector<T,Allocator> )
[static]
обменивает два std::vector<bool>:: reference s
(публичная статическая функция-член)

Внешние ссылки

"Effective Modern C++" Скотта Майерса (2015), Глава 2, Пункт 6: "Используйте идиому явно типизированного инициализатора, когда auto выводит нежелательные типы." (стр.43-46) — описывает возможное неправильное использование прокси-класса std::vector<bool>::reference ).