std::experimental::ranges:: tagged
|
Определено в заголовочном файле
<experimental/ranges/utility>
|
||
|
template
<
class
Base,
TagSpecifier
...
Tags
>
requires sizeof...
(
Tags
)
<=
std::
tuple_size
<
Base
>
::
value
|
(ranges TS) | |
Шаблон класса
tagged
расширяет кортежеподобный тип класса
Base
, от которого он публично наследуется, набором именованных методов доступа, заданных спецификаторами тегов
Tags...
. Теги применяются последовательно: i-й спецификатор тега в
Tags...
соответствует i-му элементу кортежа.
Спецификаторы тегов в
Tags...
должны быть уникальными. В противном случае поведение не определено.
Невозможно удалить экземпляр
tagged
через указатель на любой базовый класс, кроме
Base
.
Содержание |
Функции-члены
создает объект
tagged
(публичная функция-член) |
|
присваивает объект
tagged
(публичная функция-член) |
|
обменивает содержимое двух объектов
tagged
(публичная функция-член) |
Акцессоры именованных элементов
Для
N
-го спецификатора тега в
Tags...
, чье соответствующее имя элемента -
name
,
tagged
предоставляет методы доступа с именем
name
следующим образом:
constexpr decltype(auto) name() & { return std::get<N>(*this); } constexpr decltype(auto) name() const & { return std::get<N>(*this); } constexpr decltype(auto) name() && { return std::get<N>(std::move(*this)); }
Функции, не являющиеся членами класса
специализирует
swap
для
tagged
объектов
(функция) |
Доступ по типу кортежа
получает размер
tagged
(специализация шаблона класса) |
|
получает типы элементов
tagged
(специализация шаблона класса) |
Смотрите также
|
указывает, что тип является спецификатором тега
(концепт) |
|
|
псевдоним шаблона для помеченного
std::pair
(псевдоним шаблона) |
|
удобная функция для создания
tagged_pair
(шаблон функции) |
|
|
псевдоним шаблона для помеченного
std::tuple
(псевдоним шаблона) |
|
удобная функция для создания
tagged_tuple
(шаблон функции) |
|
|
спецификаторы тегов для использования с
ranges::tagged
(класс) |