##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::atomic_fetch_xor, std::atomic_fetch_xor_explicit

From cppreference.com
< cpp‎ | atomic

Defined in header `<atomic>` |  |

| (1) | (since C++11)
template< class Integral > Integral atomic_fetch_xor( std::atomic<Integral>* obj, Integral arg ); |  |
template< class Integral > Integral atomic_fetch_xor( volatile std::atomic<Integral>* obj, Integral arg ); |  |
| (2) | (since C++11)
template< class Integral > Integral atomic_fetch_xor_explicit( std::atomic<Integral>* obj, Integral arg, std::memory_order order ); |  |
template< class Integral > Integral atomic_fetch_xor_explicit( volatile std::atomic<Integral>* obj, Integral arg, std::memory_order order ); |  |

Atomically replaces the value pointed by `arg` with the result of bitwise XOR between the old value of `obj` and `arg`. Returns the value `obj` held previously.

The operation is performed as if the following is executed:

1) obj->fetch_xor(arg)
2) obj->fetch_xor(arg, order)

### [edit] Parameters

obj | - | pointer to the atomic object to modify
arg | - | the value to bitwise XOR to the value stored in the atomic object
order | - | the memory sycnhronization ordering for this operation: all values are permitted.

### [edit] Return value

The value held previously by the atomic object pointed to by `obj`

### [edit] Exceptions

`noexcept` specification:
noexcept

### [edit] Possible implementation

    template< class T >
    typename std::enable_if<std::is_integral<T>::value && !std::is_same<T, bool>::value, T>::type
    atomic_fetch_xor( std::atomic<T>* obj, T arg );
    {
        return obj->fetch_xor(arg);
    }

### [edit] Example

| This section is incomplete Reason: no example

### [edit] See also

fetch_xor (C++11) | atomically performs bitwise XOR between the argument and the value of the atomic object and obtains the value held previously (public member function of `std::atomic`) [edit]
atomic_fetch_or atomic_fetch_or_explicit (C++11)(C++11) | replaces the atomic object with the result of logical OR with a non-atomic argument and obtains the previous value of the atomic (function template) [edit]
atomic_fetch_and atomic_fetch_and_explicit (C++11)(C++11) | replaces the atomic object with the result of logical AND with a non-atomic argument and obtains the previous value of the atomic (function template) [edit]
C documentation for atomic_fetch_xor, atomic_fetch_xor_explicit

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/atomic/atomic_fetch_xor&oldid=65605"
Categories:

- unconditionally noexcept
- Todo no example