std::pair<T1,T2>::operator=

来自cppreference.com
< cpp‎ | utility‎ | pair
 
 
 
 
(1)
pair& operator=( const pair& other );
(C++20 前)
constexpr pair& operator=( const pair& other );
(C++20 起)
(2)
template< class U1, class U2 >
pair& operator=( const pair<U1,U2>& other );
(C++20 前)
template< class U1, class U2 >
constexpr pair& operator=( const pair<U1,U2>& other );
(C++20 起)
(3)
pair& operator=( pair&& other ) noexcept(/* see below */);
(C++11 起)
(C++20 前)
constexpr pair& operator=( pair&& other ) noexcept(/* see below */);
(C++20 起)
(4)
template< class U1, class U2 >
pair& operator=( pair<U1,U2>&& other );
(C++11 起)
(C++20 前)
template< class U1, class U2 >
constexpr pair& operator=( pair<U1,U2>&& other );
(C++20 起)

替换 pair 的内容。

1) 复制赋值运算符。以 other 内容的副本替换内容。
2) 赋值 other.firstfirstother.secondsecond
3) 移动赋值运算符。用移动语义以 other 的内容替换内容。
4) 赋值 std::forward<U1>(p.first)firststd::forward<U2>(p.second)second

这些函数的行为未定义,除非:

(C++17 前)

这些函数不参与重载决议(或对于复制赋值运算符,定义为被删除),若任何要求的操作非法。按顺序为:

(C++17 起)

参数

other - 替换此 pair 的值的 pair

返回值

*this

异常

1-2) (无)
3)
noexcept 规定:  
noexcept(

    is_nothrow_move_assignable<T1>::value &&
    is_nothrow_move_assignable<T2>::value

)
4) (无)

示例

参阅