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

来自cppreference.com
< cpp‎ | utility‎ | pair
 
 
工具库
通用工具
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)

初等字符串转换
(C++17)
(C++17)
栈踪
 
std::pair
成员函数
pair::operator=
非成员函数
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20)
(C++11)
推导指引(C++17)
辅助类
(C++11)
 
(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++11 起)
(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 内容的副本替换内容。
  • 此赋值运算符被隐式声明。若 first_typesecond_type 之一为 const 限定类型,或引用类型,或拥有不可访问的复制赋值运算符的类类型,或这种类的数组类型,则使用此赋值运算符令程序为谬构。
(C++11 前)
(C++11 起)
2) 赋值 other.firstfirstother.secondsecond
此重载仅若 std::is_assignable<first_type&, const U1&>::valuestd::is_assignable<second_type&, const U2&>::value 均为 true 才参与重载决议。
3) 移动赋值运算符。用移动语义以 other 的内容替换内容。
此重载仅若 std::is_move_assignable<first_type>::valuestd::is_move_assignable<second_type>::value 均为 true 才参与重载决议。
4) 赋值 std::forward<U1>(p.first)firststd::forward<U2>(p.second)second
此重载仅若 std::is_assignable<first_type&, U1>::valuestd::is_assignable<second_type&, U2>::value 均为 true 才参与重载决议。

参数

other - 替换此 pair 的值的 pair

返回值

*this

异常

1-2) 可能抛出实现定义的异常。
3)
noexcept 说明:  
noexcept(

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

)
4) 可能抛出实现定义的异常。

示例

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR 应用于 出版时的行为 正确行为
LWG 2729 C++11 pair::operator= 未被约束并可能导致不必要的未定义行为 已约束

参阅