std::atomic<T>:: operator+=,-=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Constants | ||||
|
(C++17)
|
||||
| Specialized member functions | ||||
|
Specialized for integral,
floating-point (C++20) and pointer types |
||||
|
atomic::operator+=
atomic::operator-=
|
||||
|
Specialized for integral and
pointer types only |
||||
|
(C++26)
|
||||
|
(C++26)
|
||||
| Specialized for integral types only | ||||
atomic<
Integral
>
특수화의 멤버만 해당
및
atomic<
Floating
>
특수화
(C++20부터)
|
||
|
T operator
+
=
(
T arg
)
noexcept
;
|
(1) | (C++11부터) |
|
T operator
+
=
(
T arg
)
volatile
noexcept
;
|
(2) | (C++11부터) |
|
T operator
-
=
(
T arg
)
noexcept
;
|
(3) | (C++11부터) |
|
T operator
-
=
(
T arg
)
volatile
noexcept
;
|
(4) | (C++11부터) |
atomic<T*>
부분 특수화의 멤버만 해당
|
||
|
T
*
operator
+
=
(
std::
ptrdiff_t
arg
)
noexcept
;
|
(5) | (C++11부터) |
|
T
*
operator
+
=
(
std::
ptrdiff_t
arg
)
volatile
noexcept
;
|
(6) | (C++11부터) |
|
T
*
operator
-
=
(
std::
ptrdiff_t
arg
)
noexcept
;
|
(7) | (C++11부터) |
|
T
*
operator
-
=
(
std::
ptrdiff_t
arg
)
volatile
noexcept
;
|
(8) | (C++11부터) |
현재 값을 이전 값과 arg 를 사용한 연산 결과로 원자적으로 교체합니다. 이 연산은 읽기-수정-쓰기 연산입니다.
- operator + = 원자적 덧셈을 수행합니다. 다음과 동일합니다: return fetch_add ( arg ) + arg ; .
- operator - = 원자적 뺄셈을 수행합니다. 다음과 동일합니다: return fetch_sub ( arg ) - arg ; .
|
부동 소수점 타입의 경우, floating-point environment 가 호출 스레드의 부동 소수점 환경과 다를 수 있습니다. 연산이 해당 std::numeric_limits 특성에 부합할 필요는 없지만, 그러하는 것이 권장됩니다. 결과가 해당 타입으로 표현 가능한 값이 아닌 경우, 결과는 지정되지 않지만 그 외에는 정의되지 않은 동작이 없습니다. |
(since C++20) |
T
가 완전한 객체 타입이 아니라면, 프로그램은 형식에 맞지 않습니다.
|
다음 경우에 사용이 권장되지 않습니다: std:: atomic < T > :: is_always_lock_free 가 false 이고, volatile 오버로드가 오버로드 해결에 참여하는 경우. |
(C++20부터) |
목차 |
매개변수
| arg | - | 산술 연산을 위한 인수 |
반환값
결과 값 (즉, 해당 멤버 함수의 효과가 적용되기 직전의 값과 해당 이진 연산자를 적용한 결과로, modification order 에서 * this 의 값에 해당하는 것).
참고 사항
대부분의 복합 할당 연산자와 달리, 원자 타입에 대한 복합 할당 연산자는 왼쪽 인수에 대한 참조를 반환하지 않습니다. 대신 저장된 값의 복사본을 반환합니다.
결함 보고서
다음 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| P0558R1 | C++11 | (cv 한정자가 있을 수 있는) void 또는 함수 포인터에 대한 산술 연산 허용 | 잘못된 형식으로 지정됨 |
참고 항목
|
원자적으로 인수를 원자 객체에 저장된 값에 더하고 이전에 보유한 값을 획득합니다
(public member function) |
|
|
원자적으로 원자 객체에 저장된 값에서 인수를 빼고 이전에 보유한 값을 획득합니다
(public member function) |
|
|
원자 값을 1씩 증가시키거나 감소시킵니다
(public member function) |
|
|
원자 값과 비트 AND, OR, XOR 연산을 수행합니다
(public member function) |