tuple-like, pair-like
Материал из cppreference.com
template< class T > concept tuple-like = /* смотрите ниже */; |
(1) | (начиная с C++23) (только для пояснения*) |
template< class T > concept pair-like = |
(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го элемента каждого кортежа (шаблон класса) (объект адаптера диапазона) |