std::pair<T1,T2>::operator=
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | (1) | ||
|   pair& operator=( const pair& other );  | 
(until C++20) | |
|   constexpr pair& operator=( const pair& other );  | 
(since C++20) | |
| (2) | ||
|   template< class U1, class U2 > pair& operator=( const pair<U1,U2>& other );  | 
(until C++20) | |
|   template< class U1, class U2 > constexpr pair& operator=( const pair<U1,U2>& other );  | 
(since C++20) | |
| (3) | ||
|   pair& operator=( pair&& other ) noexcept(/* see below */);  | 
 (since C++11)  (until C++20)  | 
|
|   constexpr pair& operator=( pair&& other ) noexcept(/* see below */);  | 
(since C++20) | |
| (4) | ||
|   template< class U1, class U2 > pair& operator=( pair<U1,U2>&& other );  | 
 (since C++11)  (until C++20)  | 
|
|   template< class U1, class U2 > constexpr pair& operator=( pair<U1,U2>&& other );  | 
(since C++20) | |
Replaces the contents of the pair.
1) Copy assignment operator. Replaces the contents with a copy of the contents of other.
2) Assigns 
other.first to first and other.second to second3) Move assignment operator. Replaces the contents with those of 
 other using move semantics. | 
 The behavior of these functions is undefined unless: 
  | 
(until C++17) | 
| 
 These functions do not participate in overload resolution (or, for the copy assignment operator, is defined as deleted) if any required assignment operation is invalid. Specifically: 
  | 
(since C++17) | 
Parameters
| other | - | pair of values to replace the contents of this pair | 
Return value
*this
Exceptions
1-2) (none)
3) 
noexcept specification:  
noexcept(
    is_nothrow_move_assignable<T1>::value &&
    is_nothrow_move_assignable<T2>::value
4) (none)
Example
| This section is incomplete Reason: no example  |