*This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD status.*

`atomic_`

typedefs**Section:** 33.5 [atomics] **Status:** NAD
**Submitter:** BSI **Opened:** 2010-08-25 **Last modified:** 2016-01-28

**Priority: **Not Prioritized

**View all other** issues in [atomics].

**View all issues with** NAD status.

**Discussion:**

**Addresses GB-129**

Table 143 lists the typedefs for various atomic types
corresponding to the various standard integer typedefs,
such as `atomic_int_least8_t`

for `int_least8_t`

, and
`atomic_uint_fast64_t`

for `uint_fast64_t`

. However, there are
no atomic typedefs corresponding to the fixed-size
standard typedefs `int8_t`

, `int16_t`

, and so forth.

*[
2010-10-24 Daniel adds:
]*

Accepting n3164 would solve this issue.

*[
2011-02-15 Anthony corrects numbering/naming for N3225, Howard suggests improvement for the position
of '(optional)', Daniel reorders rows in harmony to remaining entries and suggests specific optionality
comments:
]*

*[2011-02-16 Reflector discussion]*

Moved to Tentatively Ready after 5 votes.

*[2011-03-16: Hans reopenes and comments]*

WG14 briefly discussed LWG 1456. It turns out that they had previously made a conscious decision not to make a similar change. If C++ would deviate, this would introduce a C divergence.

We should reopen the issue and, in my opinion, probably resolve it as NAD instead. This is in a part of the standard that is there mostly for C compatibility, so introducing divergence here seems to make no sense.

*[2011-03-24 Madrid]*

**Rationale:**

WG14 does not require these typedefs, and we see no reason to be gratuitously different.

**Proposed resolution:**

Add the following entries to table 143:

Table 146 — `atomic`

`<inttypes.h>`

typedefsAtomic typedef `<inttypes.h>`

type`...`

`...`

`atomic_intmax_t`

`intmax_t`

`atomic_uintmax_t`

`uintmax_t`

`atomic_int8_t`

//iff`int8_t`

is provided`int8_t`

`atomic_uint8_t`

//iff`uint8_t`

is provided`uint8_t`

`atomic_int16_t`

//iff`int16_t`

is provided`int16_t`

`atomic_uint16_t`

//iff`uint16_t`

is provided`uint16_t`

`atomic_int32_t`

//iff`int32_t`

is provided`int32_t`

`atomic_uint32_t`

//iff`uint32_t`

is provided`uint32_t`

`atomic_int64_t`

//iff`int64_t`

is provided`int64_t`

`atomic_uint64_t`

//iff`uint64_t`

is provided`uint64_t`