Spec-Zone.ru › C++

std::vector<bool>::reference

class reference;

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

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

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

Члены-функции

(конструктор)
конструирует ссылку. Доступна только для std::vector<bool>
(общедоступная функция-член)
(деструктор)
уничтожает ссылку
(общедоступная функция-член)
operator=
присваивает значение bool ссылочному биту
(общедоступная функция-член)
operator bool
возвращает ссылочный бит
(общедоступная функция-член)
flip
инвертирует ссылочный бит
(общедоступная функция-член)

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

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

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

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

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

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

Параметры

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

Значение результата

*this

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

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

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

Параметры

(нет)

Значение результата

Ссылочный бит.

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

void flip();
(до C++11)
void flip() noexcept;
(начиная с C++11)
(до C++20)
constexpr void flip() noexcept;
(начиная с 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>::reference. Специализация использует std::formatter<bool, CharT> в качестве базового форматировщика, где ссылочный бит преобразуется в bool для форматирования.

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

Члены-объекты

Форматировщик содержит частный нестатический член данных underlying_(только для экспонирования*) типа std::formatter<bool, CharT>.

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

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

Пример

См. также

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

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

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/vector_bool/reference

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API