tuple-like, pair-like
From cppreference.com
template< class B > concept tuple-like = /* see below */; // exposition only |
(since C++23) | |
template< class B > concept pair-like = // exposition only |
(since C++23) | |
A type T
models and satisfies the exposition-only concept tuple-like
if std::remove_cvref_t<T> is a specialization of std::array, std::pair, std::tuple, or std::ranges::subrange.
pair-like
objects are tuple-like
objects with exactly 2 elements.
Notes
tuple-like
types implement the 'tuple protocol', i.e., such types can be used with std::get, std::tuple_element and std::tuple_size.
Elements of tuple-like
types can be bound with structured binding.
See also
tuple-like
and pair-like
are used in the following standard library components:
constructs a new tuple (public member function) | |
assigns the contents of one tuple to another (public member function) | |
(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) |
lexicographically compares the values in the tuple (function template) |
determines the common reference type of a tuple and a tuple-like type (class template specialization) | |
(C++23) |
determines the common type of a tuple and a tuple-like type (class template specialization) |
(C++11) |
creates a tuple by concatenating any number of tuples (function template) |
(C++17) |
calls a function with a tuple of arguments (function template) |
(C++17) |
construct an object with a tuple of arguments (function template) |
constructs new pair (public member function of std::pair<T1,T2> )
| |
assigns the contents (public member function of std::pair<T1,T2> )
| |
(C++20) |
converts the subrange to a pair-like type (public member function of std::ranges::subrange<I,S,K> )
|
takes a view consisting of tuple-like values and a number N and produces a view of Nth element of each tuple(class template) (range adaptor object) |