std::atomic_ref<T>:: operator++,++ (int) ,--,-- (int)
From cppreference.net
<
cpp
|
atomic
|
atomic ref
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::atomic_ref
| Member functions | ||||
|
(C++26)
|
||||
|
Operations for arithmetic types
(except
bool
and pointer-to-object)
|
||||
|
Operations for integral types
(except
bool
and pointer-to-object)
|
||||
|
(C++26)
|
||||
|
(C++26)
|
||||
|
atomic_ref::operator++
atomic_ref::operator++(int)
atomic_ref::operator--
atomic_ref::operator--(int)
|
||||
|
Operations for integral types
(except
bool
)
|
||||
| Constants | ||||
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) |