Namespaces
Variants

std::atomic_ref<T>:: operator++,++ (int) ,--,-- (int)

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 ++ ( ) const noexcept ;
(1) (C++20부터)
value_type operator ++ ( int ) const noexcept ;
(2) (C++20부터)
value_type operator -- ( ) const noexcept ;
(3) (C++20부터)
value_type operator -- ( int ) const noexcept ;
(4) (C++20부터)

참조된 객체의 현재 값을 원자적으로 증가 또는 감소시킵니다. 이러한 연산은 읽기-수정-쓰기 연산입니다.

1) 원자적 사전 증가를 수행합니다. 다음과 동일합니다: return fetch_add ( 1 ) + 1 ; .
2) 원자적 후위 증가를 수행합니다. 다음과 동일합니다: return fetch_add ( 1 ) ; .
3) 원자적 사전 감소를 수행합니다. 다음과 동일합니다: return fetch_sub ( 1 ) - 1 ;
4) 원자적 사후 감소를 수행합니다. 다음 코드와 동일합니다: return fetch_sub ( 1 ) ; .
  • 부호 있는 정수 타입의 경우, 산술 연산은 2의 보수 표현을 사용하도록 정의됩니다. 정의되지 않은 결과는 없습니다.
  • 객체 포인터 타입의 경우, 결과가 정의되지 않은 주소일 수 있지만 그 외 연산에서는 정의되지 않은 동작이 없습니다. std:: remove_pointer_t < T > 가 완전한 객체 타입이 아닌 경우 프로그램의 형식이 올바르지 않습니다.

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

목차

반환값

1,3) 수정 후 참조된 객체의 값.
2,4) 수정 전 참조된 객체의 값.

참고 사항

대부분의 전위 증가 및 전위 감소 연산자와 달리, atomic_ref 의 전위 증가 및 전위 감소 연산자는 수정된 객체에 대한 참조를 반환하지 않습니다. 대신 저장된 값의 복사본을 반환합니다.

결함 보고서

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

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

참고 항목

참조된 객체에 저장된 값에 인자를 원자적으로 더하고 이전에 보유한 값을 획득합니다
(public member function)
참조된 객체에 저장된 값에서 인자를 원자적으로 빼고 이전에 보유한 값을 획득합니다
(public member function)
참조된 값에 원자적으로 더하거나 뺍니다
(public member function)
참조된 값과 원자적으로 비트 AND, OR, XOR 연산을 수행합니다
(public member function)