# cpp20::atomic_internal

## Summary

| ### Typedefs ||
|---|---|
| `https://fuchsia.dev/reference/cpp/namespace/cpp20/atomic-internal#namespacecpp20_1_1atomic__internal_1a534edaa5f89cdbdf7e532822a603c841` | using `std::remove_volatile_t< T >` |

| ### Functions ||
|---|---|
| `https://fuchsia.dev/reference/cpp/namespace/cpp20/atomic-internal#namespacecpp20_1_1atomic__internal_1a2499b269203b07e294fc529d9d380eaa(T *ptr, value_t< T > & expected, value_t< T > desired, bool is_weak, std::memory_order success, std::memory_order failure)` | `LIB_STDCOMPAT_INLINE_LINKAGE bool` |
| `https://fuchsia.dev/reference/cpp/namespace/cpp20/atomic-internal#namespacecpp20_1_1atomic__internal_1a70048af43376ca89210a55bed4d98995(std::memory_order order)` | `LIB_STDCOMPAT_INLINE_LINKAGE constexpr std::memory_order` |
| `https://fuchsia.dev/reference/cpp/namespace/cpp20/atomic-internal#namespacecpp20_1_1atomic__internal_1a4a7ae01733e1274a56464de07400d327(std::memory_order order)` | `LIB_STDCOMPAT_INLINE_LINKAGE constexpr int` |

| ### Classes ||
|---|---|
| [cpp20::atomic_internal::arithmetic_ops](https://fuchsia.dev/reference/cpp/class/cpp20/atomic-internal/arithmetic-ops) |   |
| [cpp20::atomic_internal::arithmetic_ops\< Derived, T, std::enable_if_t\< std::is_floating_point_v\< T \> \> \>](https://fuchsia.dev/reference/cpp/class/cpp20/atomic-internal/arithmetic-ops-derived-t-std/enable-if-tf8a6349fdd2c8d00345d91c8e2814025) |   |
| [cpp20::atomic_internal::arithmetic_ops\< Derived, T, std::enable_if_t\< std::is_integral_v\< T \>\|\|(std::is_pointer_v\< T \> \&\&!std::is_volatile_v\< T \>)\> \>](https://fuchsia.dev/reference/cpp/class/cpp20/atomic-internal/arithmetic-ops-derived-t-std/enable-if-t3d8d010040856d39abdd4df52e21d936) |   |
| [cpp20::atomic_internal::atomic_ops](https://fuchsia.dev/reference/cpp/class/cpp20/atomic-internal/atomic-ops) |   |
| [cpp20::atomic_internal::bitwise_ops](https://fuchsia.dev/reference/cpp/class/cpp20/atomic-internal/bitwise-ops) |   |
| [cpp20::atomic_internal::bitwise_ops\< Derived, T, std::enable_if_t\< std::is_integral_v\< T \> \> \>](https://fuchsia.dev/reference/cpp/class/cpp20/atomic-internal/bitwise-ops-derived-t-std/enable-if-t-3-08cd33828e151a727e7671a46429468b) |   |

| ### Structs ||
|---|---|
| [cpp20::atomic_internal::alignment](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/alignment) |   |
| [cpp20::atomic_internal::alignment\< T, std::enable_if_t\< std::is_integral_v\< T \> \> \>](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/alignment-t-std/enable-if-t-std/is-integral-v-t-01-4-) |   |
| [cpp20::atomic_internal::alignment\< T, std::enable_if_t\< std::is_pointer_v\< T \>\|\|std::is_floating_point_v\< T \> \> \>](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/alignment-t-std/enable-if-t-std/is-poib120e2abe5bffe439f3257b99b364b90) |   |
| [cpp20::atomic_internal::arithmetic_ops_helper](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/arithmetic-ops-helper) |   |
| [cpp20::atomic_internal::arithmetic_ops_helper\< T \* \>](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/arithmetic-ops-helper-t-01-5-) |   |
| [cpp20::atomic_internal::atomic_difference_type](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/atomic-difference-type) |   |
| [cpp20::atomic_internal::atomic_difference_type\< T, std::enable_if_t\< is_numeric_v\< T \> \> \>](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/atomic-difference-type-t-std/enable-if-t-3-00cd3f9776be76b0288eba58f2047619a) |   |
| [cpp20::atomic_internal::atomic_difference_type\< T, std::enable_if_t\< std::is_pointer_v\< T \> \> \>](https://fuchsia.dev/reference/cpp/struct/cpp20/atomic-internal/atomic-difference-type-t-std/enable-if-t-3-03708024398581239ef068e77cf5a7728) |   |

## Typedefs

### value_t

```c++
std::remove_volatile_t< T > value_t
```

## Functions

### compare_exchange

```c++
LIB_STDCOMPAT_INLINE_LINKAGE bool compare_exchange(
  T *ptr,
  value_t< T > & expected,
  value_t< T > desired,
  bool is_weak,
  std::memory_order success,
  std::memory_order failure
)
```

### compare_exchange_load_memory_order

```c++
LIB_STDCOMPAT_INLINE_LINKAGE constexpr std::memory_order compare_exchange_load_memory_order(
  std::memory_order order
)
```

### to_builtin_memory_order

```c++
LIB_STDCOMPAT_INLINE_LINKAGE constexpr int to_builtin_memory_order(
  std::memory_order order
)
```