std::pair::operator=

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

替换 pair 的内容。

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

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

(C++17 前)

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

  • (1) 定义为被删除,除非 std::is_copy_assignable_v<first_type>std::is_copy_assignable_v<second_type> 皆为 true
  • (2) 不参与重载决议,除非 std::is_assignable_v<first_type&, const U1&>std::is_assignable_v<second_type&, const U2&> 皆为 true
  • (3) 不参与重载决议,除非 std::is_move_assignable_v<first_type>std::is_move_assignable_v<second_type> 皆为 true
  • (4) 不参与重载决议,除非 std::is_assignable_v<first_type&, U1&&>std::is_assignable_v<second_type&, U2&&> 皆为 true
(C++17 起)

目录

[编辑] 参数

other - 替换此 pair 的值的 pair

[编辑] 返回值

*this

[编辑] 异常

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

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

)
4) (无)

[编辑] 示例

[编辑] 参阅