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) |
return underlying_.parse(ctx);.return underlying_.format(r, ctx);.Пример
См. также
| доступ к указанному элементу (общедоступная функция-член std::vector<T,Allocator> ) |
|
|
[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