tuple-like, pair-like
Материал из cppreference.com
<tbody>
</tbody>
template< class T > concept tuple-like = /* смотрите ниже */; |
(1) | (начиная с C++23) (только для пояснения*) |
template< class T > concept pair-like = tuple-like<T> && std::tuple_size_v<std::remove_cvref_t<T>> == 2; |
(2) | (начиная с C++23) (только для пояснения*) |
1) Тип
T моделирует и соответствует концепту tuple-like, если std::remove_cvref_t<T> является специализацией
- std::array,
- std::pair,
- std::tuple или
- std::ranges::subrange.
2) Объекты
pair-like это объекты tuple-like, содержащие ровно 2 элемента.Примечание
Типы tuple-like реализуют протокол кортежа, т.е. такие типы могут использоваться с std::get, std::tuple_element и std::tuple_size.
Элементы типа tuple-like могут быть связаны с помощью структурного связывания.
Смотрите также
tuple-like и pair-like используются в следующих компонентах стандартной библиотеки:
создаёт новый tuple (public функция-элемент) | |
присваивает содержимое одного tuple другому (public функция-элемент) | |
(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(C++20) |
лексикографически сравнивает значения в кортеже (шаблон функции) |
определяет общий ссылочный тип tuple и tuple-like типов (специализация шаблона класса) | |
определяет общий тип tuple и tuple-like типов (специализация шаблона класса) | |
(C++11) |
создаёт tuple, объединяя любое количество кортежей (шаблон функции) |
(C++17) |
вызывает функцию с кортежем аргументов (шаблон функции) |
(C++17) |
создаёт объект с кортежем аргументов (шаблон функции) |
| создаёт новый pair (public функция-элемент std::pair)
| |
| присваивает содержимое (public функция-элемент std::pair)
| |
(C++20) |
преобразует subrange в тип pair-like (public функция-элемент std::ranges::subrange<I,S,K>)
|
принимает view, состоящий из tuple-like значений, и числа N, и создаёт view из Nго элемента каждого кортежа (шаблон класса) (объект адаптера диапазона) |