std::atomic_ref<T>:: operator+=,-=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(C++26)
|
||||
|
Operations for arithmetic types
(except
bool
and pointer-to-object)
|
||||
|
atomic_ref::operator+=
atomic_ref::operator-=
|
||||
|
Operations for integral types
(except
bool
and pointer-to-object)
|
||||
|
(C++26)
|
||||
|
(C++26)
|
||||
|
Operations for integral types
(except
bool
)
|
||||
| Constants | ||||
|
仅当
T
为除
cv
bool
外的算术类型或对象指针类型时提供
|
||
|
value_type operator
+
=
(
difference_type arg
)
const
noexcept
;
|
(1) | (自 C++26 起为 constexpr) |
|
value_type operator
-
=
(
difference_type arg
)
const
noexcept
;
|
(2) | (自 C++26 起为 constexpr) |
以原子方式将
*
ptr
引用的当前值替换为先前值与
arg
参与计算的结果。这些操作属于读-修改-写操作。
- 对于有符号整数类型,算术运算采用二进制补码表示法定义,不存在未定义结果。
- 对于浮点类型,生效的 浮点环境 可能与调用线程的浮点环境不同。该运算不需要符合对应的 std::numeric_limits 特性,但建议符合。如果结果不是其类型可表示的值,则结果未指定,但该运算没有其他未定义行为。
-
对于指针类型,结果可能是一个未定义的地址,但该运算没有其他未定义行为。
- 如果 std:: remove_pointer_t < T > 不是完整对象类型,则程序非良构。
这些重载仅当 std:: is_const_v < T > 为 false 时参与重载决议。
目录 |
参数
| arg | - | 算术运算的参数 |
返回值
结果值(即在对应成员函数生效前,对
*
ptr
所引用值应用相应二元运算符得到的结果)。
注释
与大多数复合赋值运算符不同,
atomic_ref
的复合赋值运算符返回存储值的副本,而非对
arg
的引用。
示例
|
本节内容不完整
原因:缺少示例 |
缺陷报告
下列行为变更缺陷报告被追溯应用于先前发布的C++标准。
| DR | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 | 复合赋值运算符对 const T 无意义 |
约束为仅接受非 const
T
|
参见
|
以原子方式将参数加到引用对象中存储的值,并获取先前持有的值
(公开成员函数) |
|
|
以原子方式从引用对象中存储的值减去参数,并获取先前持有的值
(公开成员函数) |
|
|
以原子方式将引用对象递增或递减一
(公开成员函数) |
|
|
以原子方式对引用值执行按位与、或、异或操作
(公开成员函数) |