This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
std-atomic alias templateSection: 32.5.12 [stdatomic.h.syn] Status: New Submitter: Jan Schultke Opened: 2026-06-18 Last modified: 2026-06-21
Priority: Not Prioritized
View all other issues in [stdatomic.h.syn].
View all issues with New status.
Discussion:
Consider the following example:
#include <stdatomic.h> struct _Atomic(int) x; // MSVC rejects, GCC and Clang accept
GCC and Clang incorrectly accept this example because they expand the _Atomic
macro directly to std::atomic instead of the exposition-only std-atomic
alias template (32.5.12 [stdatomic.h.syn]), which allows the use of a preceding
struct keyword.
std-atomic alias template
causes disagreement among implementers (see discussion at
here and
here). P0943R6
never actually intended for an alias template to exist as part of its design. The alias
template is intended to hint that the expansion of the _Atomic macro to std::atomic
does not require an inclusion of the <atomic> header.
However, std::atomic still appears directly inside the <stdatomic.h>
synopsis, so it is unclear how std-atomic contributes to that goal.
Proposed resolution:
This wording is relative to N5046.
Modify 32.5.12 [stdatomic.h.syn], header <stdatomic.h> synopsis, as indicated:
template<class T> using std-atomic = std::atomic<T>; // exposition only#define _Atomic(T)std-atomic<T>std::atomic<T>;