P3737R3 — std::array is a wrapper for an array! (5 items) LEWG
Jan Schultke
This paper proposes tightening the specification of std::array to mandate that it is implemented as a simple wrapper around a C-style array, standardizing universally existing practice. For non-zero N, the standard would require a single public non-static data member of type T[N], guaranteeing properties like trivial copyability when T is trivially copyable. For zero-length specializations, the paper standardizes existing libc++ and libstdc++ behavior, ensuring trivial copyability, value-initialized iterators and data(), and removing the unimplemented uniqueness requirement on begin()/end().

References — Anthropic Citations API

[1]
"For instance, clarifies that the array within std::array provide storage for objects inside"
[2]
"the array within std::array provide storage for objects inside"
[3] chars 91012–91437
"Despite std::array<T,0
[4]
"libc++"
Summary: P3737R3 proposes to mandate that std::array contains a public T[N] data member (or T[1] when N is zero), resolving long-standing ambiguity about its layout, and to add constexpr to the swap and fill member functions. Four items were found: one copy-paste link error in the implementation comparison table and three grammatical errors in the prose.
Pipeline: Discovery (Anthropic Opus + Citations API) → Verification Gate (OpenRouter Opus) → Report Writer (OpenRouter Opus)
Provenance: All references are machine-verified character positions from the Anthropic Citations API — deterministic, exact substrings, not model-generated quotes.