Namespaces
Variants

std::atomic_ref<T>:: operator+=,-=

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
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 를 포함한 연산 결과로 대체합니다. 이러한 연산들은 읽기-수정-쓰기 연산입니다.

1) operator + = 원자적 덧셈을 수행합니다. 다음과 동일합니다: return fetch_add ( arg ) + arg ; .
2) operator - = 원자적 감소 연산을 수행합니다. 다음과 동일합니다: return fetch_sub ( arg ) - arg ; .
  • 부호 있는 정수형(signed integral types)의 경우, 산술 연산은 2의 보수 표현을 사용하도록 정의됩니다. 정의되지 않은 결과는 없습니다.
  • 부동소수점 타입(floating-point types)의 경우, 부동소수점 환경 이 호출 스레드의 부동소수점 환경과 다를 수 있습니다. 연산이 해당 std::numeric_limits 특성과 일치할 필요는 없지만, 일치하도록 권장됩니다. 결과가 해당 타입으로 표현 가능한 값이 아닌 경우, 결과는 지정되지 않지만 그 외에는 정의되지 않은 동작이 없습니다.
  • 포인터 타입(pointer types)의 경우, 결과가 정의되지 않은 주소일 수 있지만, 그 외에는 정의되지 않은 동작이 없습니다.
    • 만약 std:: remove_pointer_t < T > 가 완전한 객체 타입(complete object type)이 아닌 경우, 프로그램은 형식에 맞지 않습니다(ill-formed).

이러한 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: std:: is_const_v < T > false 인 경우.

목차

매개변수

arg - 산술 연산을 위한 인수

반환값

결과 값(즉, 해당 멤버 함수의 효과가 적용되기 직전에 * ptr 이 참조하는 값에 해당 이항 연산자를 적용한 결과).

참고 사항

대부분의 복합 할당 연산자와 달리, atomic_ref 의 복합 할당 연산자는 arg 에 대한 참조 대신 저장된 값의 복사본을 반환합니다.

예제

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 3508
( P3323R1 )
C++20 복합 할당 연산자가 const T 에 대해 무의미했음 비-const T 만 허용하도록 제약됨

참고 항목

참조된 객체에 저장된 값에 인자를 원자적으로 더하고 이전에 보유한 값을 획득합니다
(public member function)
참조된 객체에 저장된 값에서 인자를 원자적으로 빼고 이전에 보유한 값을 획득합니다
(public member function)
참조된 객체를 원자적으로 1씩 증가 또는 감소시킵니다
(public member function)
참조된 값과 원자적으로 비트 AND, OR, XOR 연산을 수행합니다
(public member function)