std::pair
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <utility>
  | 
||
|   template<     class T1,  | 
||
std::pair is a class template that provides a way to store two heterogeneous objects as a single unit. A pair is a specific case of a std::tuple with two elements.
If neither T1 nor T2 is a possibly cv-qualified class type with non-trivial destructor, or array thereof, the destructor of pair is trivial.
Template parameters
| T1, T2 | - | the types of the elements that the pair stores. | 
Member types
| Member type | Definition | 
  first_type
 | 
  T1
 | 
  second_type
 | 
  T2
 | 
Member objects
| Member name | Type | 
  first
 | 
  T1
 | 
  second
 | 
  T2
 | 
Member functions
|   constructs new pair  (public member function)  | |
|    assigns the contents  (public member function)  | |
|    (C++11)  | 
   swaps the contents   (public member function)  | 
Non-member functions
   creates a pair object of type, defined by the argument types (function template)  | |
|    (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 pair   (function template)  | 
|    (C++11)  | 
   specializes the std::swap algorithm   (function template)  | 
|    (C++11)  | 
   accesses an element of a pair  (function template)  | 
Helper classes
|    (C++11)  | 
  obtains the size of a pair  (class template specialization)  | 
   obtains the type of the elements of pair  (class template specialization)  | |
   determines the common reference type of two pairs  (class template specialization)  | |
|    (C++23)  | 
   determines the common type of two pairs  (class template specialization)  | 
Deduction guides(since C++17)
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 2796 | C++98 |  triviality of the destructor of pair was unspecified
 | 
specified | 
See also
|    (C++11)  | 
   implements fixed size container, which holds elements of possibly different types   (class template)  | 
|    (C++11)  | 
   creates a tuple of lvalue references or unpacks a tuple into individual objects   (function template)  |