подобные кортежам, подобные парам
template< class T > concept tuple-like = /* see below */; | (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) (только для примера*) |
T моделирует и удовлетворяет концепцию tuple-like, если std::remove_cvref_t<T> является специализацией | (с C++26) |
2)
pair-like объекты являются tuple-like объектами ровно с 2 элементами.Примечания
Типы tuple-like реализуют протокол кортежа, то есть такие типы могут использоваться с std::get, std::tuple_element и std::tuple_size.
Элементы типов tuple-like могут быть связаны с помощью связывания по структуре.
См. также
tuple-like и pair-like используются в следующих компонентах стандартной библиотеки:
создаёт новый tuple (публичный член-функция) |
|
присваивает содержимое одного tuple другому (публичный член-функция) |
|
|
(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(C++20) | лексикографически сравнивает значения в кортеже (функция-шаблон) |
|
(C++23) | определяет общий тип ссылки для типа tuple и типа tuple-like (специализация шаблона класса) |
|
(C++23) | определяет общий тип для типа tuple и типа tuple-like (специализация шаблона класса) |
|
(C++11) | создаёт tuple путём конкатенации любого числа кортежей (функция-шаблон) |
|
(C++17) | вызывает функцию с кортежем аргументов (функция-шаблон) |
|
(C++17) | создаёт объект с кортежем аргументов (функция-шаблон) |
| создаёт новую пару (публичный член-функция std::pair<T1,T2>) |
|
| присваивает содержимое (публичный член-функция std::pair<T1,T2>) |
|
|
(C++20) | преобразует subrange в тип pair-like (публичный член-функция std::ranges::subrange<I,S,K>) |
|
(C++20) | берёт view, состоящий из значений tuple-like и число N, и генерирует view N-го элемента каждого кортежа(шаблон класса) (адаптер диапазона) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/tuple/tuple-like