[atomics.ref.memop]

# 32 Concurrency support library [[thread]](./#thread)

## 32.5 Atomic operations [[atomics]](atomics#ref.memop)

### 32.5.7 Class template atomic_ref [[atomics.ref.generic]](atomics.ref.generic#atomics.ref.memop)

#### 32.5.7.6 Member operators
 common to integers and pointers to objects [atomics.ref.memop]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4373)

Let *referred-type* be *pointer-type* for the specializations in [[atomics.ref.pointer]](atomics.ref.pointer "32.5.7.5 Specialization for pointers") and
be *integral-type* for the specializations in [[atomics.ref.int]](atomics.ref.int "32.5.7.3 Specializations for integral types")[.](#1.sentence-1)

[ð](#lib:operator++,atomic_ref%3cpointer-type%3e)

`constexpr value_type operator++(int) const noexcept;
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4388)

*Constraints*: is_const_v<*referred-type*> is false[.](#2.sentence-1)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4392)

*Effects*: Equivalent to: return fetch_add(1);

[ð](#lib:operator--,atomic_ref%3cpointer-type%3e)

`constexpr value_type operator--(int) const noexcept;
`

[4](#4)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4404)

*Constraints*: is_const_v<*referred-type*> is false[.](#4.sentence-1)

[5](#5)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4408)

*Effects*: Equivalent to: return fetch_sub(1);

[ð](#lib:operator++,atomic_ref%3cpointer-type%3e_)

`constexpr value_type operator++() const noexcept;
`

[6](#6)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4420)

*Constraints*: is_const_v<*referred-type*> is false[.](#6.sentence-1)

[7](#7)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4424)

*Effects*: Equivalent to: return fetch_add(1) + 1;

[ð](#lib:operator--,atomic_ref%3cpointer-type%3e_)

`constexpr value_type operator--() const noexcept;
`

[8](#8)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4436)

*Constraints*: is_const_v<*referred-type*> is false[.](#8.sentence-1)

[9](#9)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L4440)

*Effects*: Equivalent to: return fetch_sub(1) - 1;
