tuple-like , pair-like

From cppreference.com
Utilities library
General utilities
Relational operators (deprecated in C++20)
template < class T >
concept tuple - like = /* see below */ ;
(1) (since C++23)
( exposition only* )
template < class T >

concept pair - like =

tuple - like < T > && std:: tuple_size_v < std:: remove_cvref_t < T >> == 2 ;
(2) (since C++23)
( exposition only* )
1) A type T models and satisfies the concept tuple-like if std:: remove_cvref_t < T > is a specialization of
(since C++26)
2) 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)
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)
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> )
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 N th element of each tuple
(class template) (range adaptor object)