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 & = ( value_type arg ) const noexcept ;
(1) (C++20부터)
value_type operator | = ( value_type arg ) const noexcept ;
(2) (C++20부터)
value_type operator ^ = ( value_type arg ) const noexcept ;
(3) (C++20부터)

참조된 객체의 현재 값을 이전 값과 arg 를 포함한 연산 결과로 원자적으로 교체합니다. 이러한 연산들은 읽기-수정-쓰기 연산입니다.

  • operator & = 원자적 비트 AND 연산을 수행합니다. 다음 코드와 동일합니다: return fetch_and ( arg ) & arg ; .
  • operator ! = 원자적 비트 OR 연산을 수행합니다. 다음 코드와 동일합니다: return fetch_or ( arg ) | arg ; .
  • operator ^ = 원자적 비트 XOR 연산을 수행합니다. 다음 코드와 동일합니다: return fetch_xor ( arg ) ^ arg ; .

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

목차

매개변수

arg - 산술 연산을 위한 인수

반환값

결과 값(즉, 해당 멤버 함수의 효과 바로 앞에 있는 값에 해당 이항 연산자를 적용한 결과).

참고 사항

대부분의 복합 할당 연산자와 달리, atomic_ref 에 대한 복합 할당 연산자는 왼쪽 인수에 대한 참조를 반환하지 않습니다. 대신 저장된 값의 복사본을 반환합니다.

예제

결함 보고서

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

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

참고 항목

인수와 참조된 객체의 값 사이에 비트 AND를 원자적으로 수행하고 이전에 보유한 값을 획득합니다
(public member function)
인수와 참조된 객체의 값 사이에 비트 OR를 원자적으로 수행하고 이전에 보유한 값을 획득합니다
(public member function)
인수와 참조된 객체의 값 사이에 비트 XOR를 원자적으로 수행하고 이전에 보유한 값을 획득합니다
(public member function)
참조된 객체를 원자적으로 1씩 증가 또는 감소시킵니다
(public member function)
참조된 값에 원자적으로 더하거나 빼기를 수행합니다
(public member function)