---
name: "std::atomic"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::atomic/3cxx"
---

# std::atomic(3cxx)

Generic atomic type, primary class template.

## NAME

std::atomic\< \_Tp \> - Generic atomic type, primary class template.

## SYNOPSIS

`#include <atomic>`

### Public Types

**using** **value\_type** = \_Tp\

### Public Member Functions

constexpr **atomic** (\_Tp \_\_i) noexcept\
 **atomic** (const **atomic** &)=**delete**\
 bool **compare\_exchange\_strong** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) noexcept\
 bool **compare\_exchange\_strong** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) **volatile** noexcept\
 bool **compare\_exchange\_strong** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_s**, **memory\_order** \_\_f) noexcept\
 bool **compare\_exchange\_strong** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_s**, **memory\_order** \_\_f) **volatile** noexcept\
 bool **compare\_exchange\_weak** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) noexcept\
 bool **compare\_exchange\_weak** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) **volatile** noexcept\
 bool **compare\_exchange\_weak** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_s**, **memory\_order** \_\_f) noexcept\
 bool **compare\_exchange\_weak** (\_Tp &\_\_e, \_Tp \_\_i, **memory\_order** **\_\_s**, **memory\_order** \_\_f) **volatile** noexcept\
 \_Tp **exchange** (\_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) noexcept\
 \_Tp **exchange** (\_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) **volatile** noexcept\
 bool **is\_lock\_free** () const noexcept\
 bool **is\_lock\_free** () const **volatile** noexcept\
 \_Tp **load** (**memory\_order** **\_\_m**=memory\_order\_seq\_cst) const noexcept\
 \_Tp **load** (**memory\_order** **\_\_m**=memory\_order\_seq\_cst) const **volatile** noexcept\
 **void** **notify\_all** () noexcept\
 **void** **notify\_one** () noexcept\
 **operator \_Tp** () const noexcept\
 **operator \_Tp** () const **volatile** noexcept\
 \_Tp **operator=** (\_Tp \_\_i) noexcept\
 \_Tp **operator=** (\_Tp \_\_i) **volatile** noexcept\
 **atomic** & **operator=** (const **atomic** &) **volatile**=**delete**\
 **atomic** & **operator=** (const **atomic** &)=**delete**\
 **void** **store** (\_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) noexcept\
 **void** **store** (\_Tp \_\_i, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) **volatile** noexcept\
 **void** **wait** (\_Tp **\_\_old**, **memory\_order** **\_\_m**=memory\_order\_seq\_cst) const noexcept\

### Static Public Attributes

**static** constexpr bool **is\_always\_lock\_free**\

## Detailed Description

### template\<typename \_Tp\>

struct std::atomic\< \_Tp \>"Generic atomic type, primary class template.

**Template Parameters**

*\_Tp* Type to be made atomic, must be trivially copyable.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
